Abdessamad Derraz
c8861192e6
feat: advanced tests — md5_composite, storage tiers, data dirs (135 total)
...
17 new tests covering remaining scenarios:
- md5_composite: manual calc, dirs excluded, compression-independent,
used in resolve_local_file
- storage tiers: external, user_provided, embedded, fetch_large_file
with cache hit and hash rejection
- data_directories: suppress cross-ref gaps when matched, show gaps
when unmatched
- shared groups: _shared.yml includes injection, empty group safe
- YAML inheritance: systems inherited, verification_mode override
- platform grouping: identical merged, different base_dest separated
2026-03-19 11:34:30 +01:00
Abdessamad Derraz
06d39cedad
feat: YAML integration tests with fixtures (35 new, 118 total)
...
tests/fixtures/ with synthetic platforms, emulators, bios files:
- test_existence.yml: required/optional present/missing
- test_md5.yml: correct/wrong hash, zipped_file (3 cases),
multi-hash Recalbox, truncated MD5 Batocera, dedup
- test_inherit.yml: YAML inheritance
- _shared.yml: shared groups
- emulator profiles with aliases, standalone mode, alias type
tests/test_integration.py covers:
- existence/md5 mode severity counts
- zipped_file inner ROM verification (3 cases)
- Recalbox multi-hash + Batocera truncated MD5
- worst-status aggregation per destination
- YAML inheritance
- cross-reference: undeclared, standalone skipped, alias skipped
- alias resolution
- pack consistency (verify == pack counts)
- shared groups parsing
All tests use real files, real hashes, real functions, no mocking.
2026-03-19 11:29:00 +01:00
Abdessamad Derraz
b9cdda07ee
refactor: DRY consolidation + 83 unit tests
...
Moved shared functions to common.py (single source of truth):
- check_inside_zip (was in verify.py, imported by generate_pack)
- build_zip_contents_index (was duplicated in verify + generate_pack)
- load_emulator_profiles (was in verify, cross_reference, generate_site)
- group_identical_platforms (was in verify + generate_pack)
Added tests/ with 83 unit tests covering:
- resolve_local_file: SHA1, MD5, name, alias, truncated, zip_contents
- verify: existence, md5, zipped_file, multi-hash, severity mapping
- aliases: field parsing, by_name indexing, beetle_psx field rename
- pack: dedup, file_status, zipped_file inner check, EmuDeck entries
- severity: all 12 combinations, platform-native behavior
0 regressions: pipeline.py --all produces identical results.
2026-03-19 11:19:50 +01:00