45 lines
1.8 KiB
Python
45 lines
1.8 KiB
Python
import importlib.util
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
|
|
def load_post_patch_runner():
|
|
script_path = Path(__file__).resolve().parents[1] / "scripts" / "run_round04_post_patch_verification.py"
|
|
spec = importlib.util.spec_from_file_location("run_round04_post_patch_verification", script_path)
|
|
module = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(module)
|
|
return module
|
|
|
|
|
|
class Round041PostPatchVerificationTests(unittest.TestCase):
|
|
def test_targeted_labels_are_limited_to_review_approved_cases(self):
|
|
runner = load_post_patch_runner()
|
|
|
|
self.assertEqual(
|
|
sorted(runner.TARGET_EXPECTATIONS.keys()),
|
|
["R04-BI-002", "R04-BI-024", "R04-BI-035", "R04-BI-036"],
|
|
)
|
|
|
|
def test_report_marks_target_cases_pass_after_patch(self):
|
|
runner = load_post_patch_runner()
|
|
root = Path(__file__).resolve().parents[1]
|
|
|
|
report = runner.build_post_patch_report(root)
|
|
|
|
self.assertIn("# Round 04.1 Post-Patch Routing Verification Report", report)
|
|
self.assertIn("This is not a second blind test.", report)
|
|
self.assertIn("Targeted cases checked: 4", report)
|
|
self.assertIn("Targeted failures: 0", report)
|
|
self.assertIn("Behavior changes recorded: 5", report)
|
|
self.assertIn("## Non-target Behavior Diff / Accepted Collateral Change", report)
|
|
self.assertIn("### R04-BI-022", report)
|
|
self.assertIn("Not a new failure.", report)
|
|
self.assertIn("lightweight QPI is acceptable and IA should remain rejected", report)
|
|
for case_id in ["R04-BI-002", "R04-BI-024", "R04-BI-035", "R04-BI-036"]:
|
|
self.assertIn(f"### {case_id}", report)
|
|
self.assertIn("status: `PASS`", report)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|