Initial commit

This commit is contained in:
2026-10-09 02:48:24 +02:00
commit e05d973a8d
133 changed files with 101507 additions and 0 deletions

51
tests/test_realgame.py Normal file
View File

@@ -0,0 +1,51 @@
"""Read-only checks against the installed game (skipped when it is not installed)."""
import random
import pytest
from ackit.game import Game
from ackit.inject import pack_bnk_path, is_pack
from ackit.pack import Pack
from ackit.verify.selfcheck import rebuild_identical
from ackit.wad import Wad, write_wad
from ackit.wem import split_concatenated
pytestmark = pytest.mark.game
def test_wad_roundtrip_identical(real_game_dir, tmp_path):
g = Game(real_game_dir)
src = g.wad("SFX")
out = str(tmp_path / "rt.wad")
write_wad(Wad(src), out, {})
a, b = open(src, "rb"), open(out, "rb")
while True:
x, y = a.read(1 << 22), b.read(1 << 22)
assert x == y
if not x:
break
def test_stream_packs_noop_identical(real_game_dir):
g = Game(real_game_dir)
wad = g.wad("SFX")
w = Wad(wad)
for e in w.entries:
if is_pack(wad, e.hash):
bnk = open(pack_bnk_path(wad, e.hash), "rb").read()
payload = w.read(e.hash)
nb, npay = Pack(bnk).rebuild(payload, {})
assert nb == bnk and npay == payload
def test_builder_reproduces_game_wems(real_game_dir):
g = Game(real_game_dir)
lang = g.language()
w = Wad(g.wad(lang))
rnd = random.Random(5)
n = 0
for e in rnd.sample(w.entries, 80):
for _, r in split_concatenated(w.read(e.hash))[0][:3]:
assert rebuild_identical(r)
n += 1
assert n >= 80