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")
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
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:
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
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
run_wasi=True,
run_windows_tests=True,
)
+ target_branch = target_ref.removeprefix("origin/")
outputs = process_target_branch(outputs, target_branch)
if outputs.run_tests: