2026-04-20 17:39:44 +08:00
|
|
|
"""Unit tests for validate_compliance_fixtures.py."""
|
|
|
|
|
import unittest
|
|
|
|
|
from pathlib import Path
|
|
|
|
|
from tempfile import TemporaryDirectory
|
|
|
|
|
|
2026-06-04 09:33:43 +08:00
|
|
|
from tests.test_helpers import run_script
|
2026-04-20 17:39:44 +08:00
|
|
|
|
|
|
|
|
SCRIPT = Path(__file__).resolve().parent / "validate_compliance_fixtures.py"
|
|
|
|
|
REAL_FIXTURES = Path(__file__).resolve().parent.parent / "examples" / "compliance"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestValidateComplianceFixtures(unittest.TestCase):
|
|
|
|
|
def test_real_fixtures_all_pass(self) -> None:
|
|
|
|
|
result = run_script(SCRIPT, str(REAL_FIXTURES))
|
|
|
|
|
self.assertEqual(result.returncode, 0, msg=result.stdout + result.stderr)
|
|
|
|
|
self.assertIn("OK", result.stdout)
|
|
|
|
|
self.assertNotIn("FAIL", result.stdout)
|
2026-04-20 17:51:55 +08:00
|
|
|
self.assertNotIn("no fixture", result.stderr.lower())
|
2026-04-20 17:39:44 +08:00
|
|
|
|
|
|
|
|
def test_empty_dir_fails(self) -> None:
|
|
|
|
|
with TemporaryDirectory() as tmp:
|
|
|
|
|
result = run_script(SCRIPT, tmp)
|
|
|
|
|
self.assertEqual(result.returncode, 1)
|
|
|
|
|
self.assertIn("no fixture", result.stderr.lower())
|
|
|
|
|
|
|
|
|
|
def test_invalid_fixture_fails(self) -> None:
|
|
|
|
|
with TemporaryDirectory() as tmp:
|
|
|
|
|
bad = Path(tmp) / "fixture_invalid.yaml"
|
|
|
|
|
bad.write_text("mode: not_a_valid_mode\n", encoding="utf-8")
|
|
|
|
|
result = run_script(SCRIPT, tmp)
|
|
|
|
|
self.assertEqual(result.returncode, 1)
|
|
|
|
|
self.assertIn("FAIL", result.stdout)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
unittest.main()
|