import contextlib
import glob
import json
import os
from pathlib import Path
import sys
import unittest

os.umask(0o077)
assert not glob.glob('/dev/nvidia*')
os.environ['DATABASE_URL'] = 'postgresql://u:p' + chr(64) + 'localhost:1/db'
os.environ['REDIS_STREAMS_ENABLED'] = 'false'
os.environ['TMPDIR'] = '/evidence'
sys.path.append('/tool-overlay')
with Path('/evidence/tests.log').open('w') as log, contextlib.redirect_stdout(log), contextlib.redirect_stderr(log):
    suite = unittest.TestSuite()
    for pattern in ['test_start_diagnostics.py', 'test_control_stall_helper.py', 'test_cleanup_boundary.py', 'test_composition_architecture.py']:
        suite.addTests(unittest.defaultTestLoader.discover('tests', pattern=pattern))
    result = unittest.TextTestRunner(stream=log, verbosity=2).run(suite)
summary = dict(tests=result.testsRun, errors=len(result.errors), failures=len(result.failures),
               gpu_nodes=0, status='PASS' if result.wasSuccessful() else 'FAIL')
Path('/evidence/verification.json').write_text(json.dumps(summary, indent=2))
print(json.dumps(summary))
sys.exit(not result.wasSuccessful())
