import contextlib
import io
import json
import os
from pathlib import Path
import unittest
import sys
import types

os.umask(0o077)
os.environ['DATABASE_URL'] = 'postgresql://unit:unit' + chr(64) + 'localhost:1/disabled'
# GPU-free unit boundary: any accidental media execution fails immediately.
sdk = types.ModuleType('pyservicemaker')
class NoRuntime:
    def __init__(self, *args, **kwargs):
        raise AssertionError('Native media execution is forbidden in unit verification')
for name in ('BufferOperator', 'BufferRetriever', 'Flow', 'Pipeline', 'Probe'):
    setattr(sdk, name, NoRuntime)
sys.modules['pyservicemaker'] = sdk
output = io.StringIO()
with contextlib.redirect_stdout(output), contextlib.redirect_stderr(output):
    suite = unittest.defaultTestLoader.discover('/work/tests')
    result = unittest.TextTestRunner(stream=output, verbosity=2).run(suite)
Path('/evidence/tests.log').write_text(output.getvalue())
summary = {'tests': result.testsRun,
           'failures': [str(t) for t, _ in result.failures],
           'errors': [str(t) for t, _ in result.errors],
           'skipped': len(result.skipped)}
Path('/evidence/summary.json').write_text(json.dumps(summary, indent=2))
print(json.dumps(summary))
raise SystemExit(not result.wasSuccessful())
