import io import unittest from unittest.mock import patch from scripts.run_seeded_snake_tournament import ENGINE_USER_AGENT, run_game class _Completed: returncode = 0 stdout = "INFO Game completed after 42 turns. Prism was the winner.\n" class _OutputFile: def __init__(self, *args, **kwargs): self.file = io.BytesIO( b'{"turn":0}\n' b'{"winnerId":"snake-id","winnerName":"Prism","isDraw":false}\n' ) self.name = "arena-output.jsonl" def __enter__(self): return self def __exit__(self, *args): self.file.close() def seek(self, offset): return self.file.seek(offset) def __iter__(self): return iter(self.file) class TestSeededSnakeTournament(unittest.TestCase): def test_proxy_identifies_requests_as_battlesnake_engine(self): self.assertIn("BattlesnakeEngine", ENGINE_USER_AGENT) @patch("scripts.run_seeded_snake_tournament.subprocess.run", return_value=_Completed()) @patch("scripts.run_seeded_snake_tournament.tempfile.NamedTemporaryFile", _OutputFile) def test_run_game_reads_official_engine_result(self, run): result = run_game( cli="battlesnake", seed=7, game_type="standard", map_name="standard", players=[("Apex", "http://host:9001"), ("Prism", "http://host:9002")], width=11, height=11, timeout_ms=500, ) self.assertEqual(result, { "seed": 7, "winner": "Prism", "draw": False, "turns": 42, }) command = run.call_args.args[0] self.assertIn("--seed", command) self.assertIn("--output", command) if __name__ == "__main__": unittest.main()