mirror of
https://github.com/python/cpython.git
synced 2026-05-06 12:49:07 -04:00
Fix bugs in compute-changes.py logic for CIFuzz (#145232)
This commit is contained in:
@@ -6,7 +6,8 @@ import unittest
|
||||
from pathlib import Path
|
||||
from unittest.mock import patch
|
||||
|
||||
from test.test_tools import skip_if_missing, imports_under_tool
|
||||
from test.support import os_helper
|
||||
from test.test_tools import basepath, skip_if_missing, imports_under_tool
|
||||
|
||||
skip_if_missing("build")
|
||||
|
||||
@@ -15,6 +16,7 @@ with patch.dict(os.environ, {"GITHUB_DEFAULT_BRANCH": "main"}):
|
||||
compute_changes = importlib.import_module("compute-changes")
|
||||
|
||||
process_changed_files = compute_changes.process_changed_files
|
||||
is_fuzzable_library_file = compute_changes.is_fuzzable_library_file
|
||||
Outputs = compute_changes.Outputs
|
||||
ANDROID_DIRS = compute_changes.ANDROID_DIRS
|
||||
IOS_DIRS = compute_changes.IOS_DIRS
|
||||
@@ -45,16 +47,16 @@ class TestProcessChangedFiles(unittest.TestCase):
|
||||
self.assertFalse(result.run_tests)
|
||||
|
||||
def test_ci_fuzz_stdlib(self):
|
||||
for p in LIBRARY_FUZZER_PATHS:
|
||||
with self.subTest(p=p):
|
||||
if p.is_dir():
|
||||
f = p / "file"
|
||||
elif p.is_file():
|
||||
f = p
|
||||
else:
|
||||
continue
|
||||
result = process_changed_files({f})
|
||||
self.assertTrue(result.run_ci_fuzz_stdlib)
|
||||
with os_helper.change_cwd(basepath):
|
||||
for p in LIBRARY_FUZZER_PATHS:
|
||||
with self.subTest(p=p):
|
||||
if p.is_dir():
|
||||
f = p / "file"
|
||||
elif p.is_file():
|
||||
f = p
|
||||
result = process_changed_files({f})
|
||||
self.assertTrue(result.run_ci_fuzz_stdlib)
|
||||
self.assertTrue(is_fuzzable_library_file(f))
|
||||
|
||||
def test_android(self):
|
||||
for d in ANDROID_DIRS:
|
||||
|
||||
@@ -68,7 +68,8 @@ LIBRARY_FUZZER_PATHS = frozenset({
|
||||
Path("Lib/encodings/"),
|
||||
Path("Modules/_codecsmodule.c"),
|
||||
Path("Modules/cjkcodecs/"),
|
||||
Path("Modules/unicodedata*"),
|
||||
Path("Modules/unicodedata.c"),
|
||||
Path("Modules/unicodedata_db.h"),
|
||||
# difflib
|
||||
Path("Lib/difflib.py"),
|
||||
# email
|
||||
@@ -116,10 +117,10 @@ class Outputs:
|
||||
|
||||
|
||||
def compute_changes() -> None:
|
||||
target_branch, head_ref = git_refs()
|
||||
target_ref, head_ref = git_refs()
|
||||
if os.environ.get("GITHUB_EVENT_NAME", "") == "pull_request":
|
||||
# Getting changed files only makes sense on a pull request
|
||||
files = get_changed_files(target_branch, head_ref)
|
||||
files = get_changed_files(target_ref, head_ref)
|
||||
outputs = process_changed_files(files)
|
||||
else:
|
||||
# Otherwise, just run the tests
|
||||
@@ -132,6 +133,7 @@ def compute_changes() -> None:
|
||||
run_wasi=True,
|
||||
run_windows_tests=True,
|
||||
)
|
||||
target_branch = target_ref.removeprefix("origin/")
|
||||
outputs = process_target_branch(outputs, target_branch)
|
||||
|
||||
if outputs.run_tests:
|
||||
|
||||
Reference in New Issue
Block a user