import contextlib
import json
import pathlib
import unittest
import os

R=pathlib.Path('/evidence')
before=json.loads((R/'before.json').read_text())
after=json.loads((R/'after.json').read_text())
for kind in before['results']:
    a,b=before['results'][kind]['contextra'],after['results'][kind]['contextra']
    assert a['outputs']==b['outputs'], 'candidate ID parity'
    assert a['states']==b['states'], 'tracked/lost/class parity'
label=os.environ.get('VERIFY_LABEL','tests')
with (R/(label+'.log')).open('w') as log,contextlib.redirect_stdout(log),contextlib.redirect_stderr(log):
    suite=unittest.TestSuite()
    for pattern in ('test_tracking_empty_update.py','test_tracking_preparation.py','test_det_result_path.py'):
        suite.addTests(unittest.defaultTestLoader.discover('/source/tests',pattern=pattern))
    result=unittest.TextTestRunner(stream=log,verbosity=2).run(suite)
out=dict(tests=result.testsRun,failures=len(result.failures),errors=len(result.errors),
         id_state_parity=True,frames_compared=300)
(R/(label+'-result.json')).write_text(json.dumps(out,indent=2));print(json.dumps(out))
raise SystemExit(0 if result.wasSuccessful() else 1)
