Files
libretro/tests/test_gap_settlement.py
T

51 lines
1.8 KiB
Python

"""The gap report settles a core file as verify does: slot or size.
cross_reference counted a core file declared as soon as a platform named
it. RetroArch names Galaksija's 4 KiB galaksija/rom1.bin, so DOSBox's
32 KiB SC-55/ROM1.BIN left the gaps page while verify listed it undeclared.
"""
from __future__ import annotations
import os
import sys
import unittest
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(REPO_ROOT / "scripts"))
from cross_reference import cross_reference # noqa: E402
from validation import declaration_settles # noqa: E402
SC55 = {"name": "ROM1.BIN", "path": "SC-55/ROM1.BIN", "size": 32768,
"validation": ["size"], "required": True}
class OneRule(unittest.TestCase):
def test_a_same_named_file_of_another_size_does_not_settle(self):
declared = {"ROM1.BIN": [(4096, "galaksija/rom1.bin")]}
self.assertFalse(declaration_settles(SC55, "ROM1.BIN", declared, SC55["path"]))
declared["ROM1.BIN"].append((32768, "rom1.bin"))
self.assertTrue(declaration_settles(SC55, "ROM1.BIN", declared, SC55["path"]))
def test_the_gap_report_reads_it(self):
profiles = {"dosbox": {"emulator": "DOSBox", "type": "libretro",
"systems": ["dos"], "files": [SC55]}}
report = cross_reference(
profiles, {}, {"files": {}, "indexes": {}},
all_declared={"ROM1.BIN": [(4096, "galaksija/rom1.bin")]},
)
self.assertEqual(
[g["name"] for g in report["dosbox"]["gap_details"]], ["ROM1.BIN"]
)
def test_both_sides_call_it(self):
for module in ("verify.py", "cross_reference.py"):
source = (REPO_ROOT / "scripts" / module).read_text(encoding="utf-8")
self.assertIn("declaration_settles(", source, module)
if __name__ == "__main__":
unittest.main()