Files
RustNotMC/tools/test_remote_fireworks_parity.py
SashegDev 874b6f20c2 Клиент: начальный импорт кодовой базы
Основа — Horizon (MIT). История апстрима не переносится: этот репозиторий ведёт свою.
2026-10-29 22:04:28 +03:00

35 lines
1.4 KiB
Python

#!/usr/bin/env python3
"""FireworkRocketEntity event 17 renders the configured burst before tracked removal.
Exercise both hosting paths and subsequent trail/fade frames through real clients.
"""
import json
import subprocess
import lab
import lan_e2e as lan
def main():
subprocess.run(['cargo', 'build', '--locked', '--profile', 'fast', '-p', 'horizon-client',
'--bin', 'horizon-client', '--bin', 'horizon-ctl'], cwd=lab.ROOT, check=True)
metadata = json.loads(subprocess.check_output(
['cargo', 'metadata', '--format-version', '1', '--no-deps'], cwd=lab.ROOT, text=True))
ctl = lab.ROOT / metadata['target_directory'] / 'fast' / 'horizon-ctl'
# CI supplies the display; each game still gets fresh scratch homes.
lan.game_env = lambda _screen, home: lab.game_env(
HORIZON_HOME=home, HORIZON_TELEMETRY_URL='off')
reports = {}
for threaded in (True, False):
lan.SERVER_THREAD = threaded
mode = 'server-thread' if threaded else 'in-frame'
out = lab.LOCAL / 'remote-fireworks-parity' / mode
out.mkdir(parents=True, exist_ok=True)
reports[mode] = lan.run(ctl, out, lab.RESOURCES.resolve(), ['fireworks'])
lab.write_json(lab.LOCAL / 'remote-fireworks-parity' / 'report.json', reports)
assert all(r['pass'] for mode in reports.values() for r in mode.values()), reports
if __name__ == '__main__':
main()