Files
EscapistsReintroduced/tests/test_environment_restart_runner.py
T

63 lines
3.2 KiB
Python

#!/usr/bin/env python3
"""Negative runner checks stop before any native process/audio initialization."""
from pathlib import Path
import subprocess
import sys
import tempfile
import unittest
ROOT = Path(__file__).resolve().parents[1]
class EnvironmentRestartRunnerTests(unittest.TestCase):
def invoke(self, profile, *extra):
return subprocess.run([sys.executable, str(ROOT/'tools/headless_workbench.py'),
'--compat', str(profile/'missing-prefix'), '--profile', str(profile),
'--smoke', 'environment-restart', '--project', 'core', '--rounds', '2',
*extra], text=True, capture_output=True)
def test_requires_two_core_rounds(self):
with tempfile.TemporaryDirectory() as directory:
for extra in [('--rounds','1'), ('--rounds','3'), ('--project','chat')]:
with self.subTest(extra=extra):
result = self.invoke(Path(directory), *extra)
self.assertNotEqual(result.returncode, 0)
self.assertIn('requires --project core --rounds 2', result.stderr)
def test_every_existing_fixture_file_is_refused_and_preserved(self):
for name in ['erri-environment-restart.json', 'erri-environment-restart.json.bak',
'erri-environment-restart.json.tmp', 'erri-environment-restart-round.json']:
with self.subTest(name=name), tempfile.TemporaryDirectory() as directory:
profile = Path(directory)
path = profile/name
path.write_text('prior evidence')
result = self.invoke(profile)
self.assertNotEqual(result.returncode, 0)
self.assertIn('fixture paths must not preexist', result.stderr)
self.assertEqual(path.read_text(), 'prior evidence')
def test_broken_fixture_symlink_is_refused(self):
with tempfile.TemporaryDirectory() as directory:
profile = Path(directory)
(profile/'erri-environment-restart.json').symlink_to(profile/'missing-target')
result = self.invoke(profile)
self.assertIn('fixture paths must not preexist', result.stderr)
self.assertTrue((profile/'erri-environment-restart.json').is_symlink())
def test_empty_fixture_reaches_existing_prefix_guard_without_side_effects(self):
with tempfile.TemporaryDirectory() as directory:
profile = Path(directory)
result = self.invoke(profile)
self.assertNotEqual(result.returncode, 0)
self.assertIn('must be a disposable cloned prefix', result.stderr)
self.assertEqual(list(profile.iterdir()), [])
def test_existing_environment_outcome_does_not_acquire_restart_path_policy(self):
with tempfile.TemporaryDirectory() as directory:
profile = Path(directory)
(profile/'erri-environment-restart.json').write_text('prior evidence')
result = self.invoke(profile, '--smoke', 'environment', '--rounds', '1')
self.assertIn('must be a disposable cloned prefix', result.stderr)
self.assertNotIn('fixture paths must not preexist', result.stderr)
if __name__ == '__main__': unittest.main()