diff --git a/scripts/verify.py b/scripts/verify.py index eb3481a1..c30968d1 100644 --- a/scripts/verify.py +++ b/scripts/verify.py @@ -313,6 +313,7 @@ def find_undeclared_files( emu_profiles: dict | None = None, target_cores: set[str] | None = None, data_names: set[str] | None = None, + include_all: bool = False, ) -> list[dict]: """Find files needed by cores but not declared in platform config.""" # Collect all filenames declared by this platform, enriched with @@ -385,12 +386,13 @@ def find_undeclared_files( archive = f.get("archive") # Skip files declared by the platform (by name or archive) - if fname in declared_names: - seen_files.add(fname) - continue - if archive and archive in declared_names: - seen_files.add(fname) - continue + if not include_all: + if fname in declared_names: + seen_files.add(fname) + continue + if archive and archive in declared_names: + seen_files.add(fname) + continue seen_files.add(fname) diff --git a/tests/test_e2e.py b/tests/test_e2e.py index 52f135b4..6f1e4532 100644 --- a/tests/test_e2e.py +++ b/tests/test_e2e.py @@ -4451,5 +4451,35 @@ struct BurnDriver BurnDrvneogeo = { self.assertEqual(result["core_version"], "v1.0.0.03") + def _load_config(self, platform_name: str) -> dict: + return load_platform_config(platform_name, self.platforms_dir) + + def test_200_find_undeclared_include_all(self): + """include_all=True returns ALL core files, including declared ones.""" + from verify import find_undeclared_files + + config = self._load_config("test_existence") + profiles = load_emulator_profiles(self.emulators_dir) + # Without include_all: only undeclared files returned + undeclared = find_undeclared_files( + config, self.emulators_dir, self.db, profiles + ) + undeclared_names = {u["name"] for u in undeclared} + # present_req.bin is declared in platform YAML, should NOT be in undeclared + self.assertNotIn("present_req.bin", undeclared_names) + + # With include_all: ALL core files returned, including declared ones + all_files = find_undeclared_files( + config, self.emulators_dir, self.db, profiles, include_all=True + ) + all_names = {u["name"] for u in all_files} + # present_req.bin IS declared but should be returned with include_all + self.assertIn("present_req.bin", all_names) + # undeclared files should still be present + self.assertIn("undeclared_req.bin", all_names) + # Launcher/alias files should still be excluded + self.assertNotIn("launcher_bios.bin", all_names) + + if __name__ == "__main__": unittest.main()