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

assert not glob.glob('/dev/nvidia*')
sys.path.append('/tool-overlay')
os.environ['DATABASE_URL'] = 'postgresql://u:p' + chr(64) + 'localhost:1/db'
os.environ['REDIS_STREAMS_ENABLED'] = 'false'
patterns = sys.argv[1:] or ['test*.py']
with Path('/evidence/unit.log').open('w') as log, contextlib.redirect_stdout(log), contextlib.redirect_stderr(log):
    suite = unittest.TestSuite()
    for pattern in patterns:
        suite.addTests(unittest.defaultTestLoader.discover('tests', pattern=pattern))
    result = unittest.TextTestRunner(stream=log, verbosity=2).run(suite)
summary = dict(tests=result.testsRun, failures=len(result.failures), errors=len(result.errors), skipped=len(result.skipped), gpu_devices=0)
Path('/evidence/result.json').write_text(json.dumps(summary))
print(json.dumps(summary))
for test, error in result.failures + result.errors:
    print(str(test), error[-1800:])
raise SystemExit(not result.wasSuccessful())
