import contextlib
import ctypes
import json
import os
from pathlib import Path
import subprocess
import unittest

R=Path('/evidence')
os.umask(0o077)
summary={}
with (R/'source-verify.log').open('x') as log,contextlib.redirect_stdout(log),contextlib.redirect_stderr(log):
    subprocess.run(['make','-C','/source/native/nvinferserver_rfdetr','BUILD_DIR=/evidence/native','-j2','all','check'],check=True,stdout=log,stderr=log,timeout=120)
    subprocess.run(['g++','-std=c++14','-O2','-shared','-fPIC','-I/source/native/nvinferserver_rfdetr',
                    '/source/tests/pose_decode_probe.cpp','-o','/evidence/pose_decode.so'],check=True,stdout=log,stderr=log,timeout=30)
    suite=unittest.TestSuite()
    for name in ('test_pose_path.py','test_intrusion.py','test_intrusion_connection.py','test_output_settings.py','test_capture_boundary.py'):
        suite.addTests(unittest.defaultTestLoader.discover('/source/tests',pattern=name))
    result=unittest.TextTestRunner(stream=log,verbosity=2).run(suite)
    summary.update(tests=result.testsRun,errors=len(result.errors),failures=len(result.failures))
(R/'source-verify.json').write_text(json.dumps(summary,indent=2))
print(json.dumps(summary))
raise SystemExit(not result.wasSuccessful())
