Fix bugs in compute-changes.py logic for CIFuzz (#145232)

This commit is contained in:
Stan Ulbrych
2026-03-04 20:43:44 +00:00
committed by GitHub
parent a51b1b512d
commit ae208d5665
2 changed files with 18 additions and 14 deletions
+13 -11
View File
@@ -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:
+5 -3
View File
@@ -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: