]> FriiDump Source - friidump.git/blob - tests/test_linux_xbox_portable_contract.py
Fix MSVC CMake SHA1 header resolution
[friidump.git] / tests / test_linux_xbox_portable_contract.py
1 #!/usr/bin/env python3
2 from pathlib import Path
3 import re
4
5 root = Path(__file__).resolve().parents[1]
6 dumper = (root / "libfriidump" / "dumper.c").read_text(encoding="utf-8")
7 portable = (root / "libfriidump" / "xbox_portable.c").read_text(encoding="utf-8")
8 cmake = (root / "libfriidump" / "CMakeLists.txt").read_text(encoding="utf-8")
9 rsp = (root / "msvc32_friidump.rsp").read_text(encoding="utf-8")
10
11 checks = [
12     ("portable source is compiled by CMake", "xbox_portable.c" in cmake),
13     ("portable source is compiled by MSVC response file", r"libfriidump\xbox_portable.c" in rsp),
14     ("portable XDFS/XBE metadata parser exists", "xbox_portable_read_metadata" in portable),
15     ("portable UTF-16 title conversion exists", "xbox_decode_title" in portable),
16     ("portable DMI media-ID extraction exists", "xbox_parse_media_id" in portable),
17     ("portable result handoff begins for ISO", "xbox_portable_result_begin (dmp, dmp -> outfile_iso, '1')" in dumper),
18     ("portable result handoff begins for XISO", "xbox_portable_result_begin (dmp, dmp -> outfile_xiso, '2')" in dumper),
19     ("portable result handoff captures metadata", "xbox_portable_result_capture_metadata (dmp)" in dumper),
20     ("portable result handoff finalizes hashes", "result -> hashes_complete = 1" in dumper),
21     ("Linux default XBE-derived filename is resolved", "xbox_portable_resolve_output_path" in dumper),
22     ("Windows challenge-drive copied path remains guarded", bool(re.search(r"#ifdef WIN32\s+if \(disc_is_xbox_challenge_drive", dumper))),
23 ]
24
25 failed = False
26 for label, ok in checks:
27     print(f"{'PASS' if ok else 'FAIL'}: {label}")
28     failed |= not ok
29
30 if failed:
31     raise SystemExit(1)
32
33 print("LINUX XBOX PORTABLE CONTRACT: PASS")