fix(ci): prevent sys.modules cross-contamination between test directories in check-artifacts

When unittest discover processes skills/binary-analysis/tests/ before
tests/, the integration package gets cached in sys.modules from the
first discover call. Later discover calls reuse the cached package
which doesn't contain the expected test modules, causing spurious
ModuleNotFoundError failures.

Fix: snapshot and restore sys.modules between discover iterations.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
This commit is contained in:
username
2026-07-30 19:10:03 -04:00
co-authored by factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
parent 736859eafa
commit 96f0bd4e46
+4
View File
@@ -68,9 +68,13 @@ def run_checks(files: list[Path]) -> list[str]:
for directory in test_directories(files):
relative = directory.relative_to(ROOT)
before = set(sys.modules)
result = unittest.TextTestRunner(verbosity=0).run(
unittest.defaultTestLoader.discover(str(directory), top_level_dir=str(directory))
)
for mod in list(sys.modules):
if mod not in before:
del sys.modules[mod]
if not result.wasSuccessful():
errors.append(
f"unittest discover {relative}: "