Files
ai-exchange/tests/unit/test_run_unattended_harness.py
T
2026-05-12 09:13:22 +08:00

47 lines
1.6 KiB
Python

import contextlib
import io
import json
import unittest
from unittest.mock import patch
from scripts import run_unattended_harness
class RunUnattendedHarnessTests(unittest.TestCase):
def test_main_outputs_json_report(self) -> None:
payload = {
"status": "passed",
"passed_checks": ["policy_suppression"],
"warnings": [],
"blockers": [],
}
output = io.StringIO()
with patch("scripts.run_unattended_harness.run_unattended_harness", return_value=payload) as harness:
with contextlib.redirect_stdout(output):
exit_code = run_unattended_harness.main(
env={"UNATTENDED_HARNESS_OUTPUT_JSON": "1", "UNATTENDED_HARNESS_INSTRUMENT_ID": "2"}
)
self.assertEqual(exit_code, 0)
harness.assert_called_once_with(instrument_id=2)
self.assertEqual(json.loads(output.getvalue())["status"], "passed")
def test_main_returns_nonzero_for_blockers(self) -> None:
payload = {
"status": "blocked",
"passed_checks": [],
"warnings": [],
"blockers": ["runtime_environment"],
}
output = io.StringIO()
with patch("scripts.run_unattended_harness.run_unattended_harness", return_value=payload):
with contextlib.redirect_stdout(output):
exit_code = run_unattended_harness.main(env={})
self.assertEqual(exit_code, 2)
self.assertIn("runtime_environment", output.getvalue())
if __name__ == "__main__":
unittest.main()