28 lines
1.0 KiB
Python
28 lines
1.0 KiB
Python
from pathlib import Path
|
|
import runpy
|
|
import tempfile
|
|
import unittest
|
|
|
|
|
|
APPROVE = runpy.run_path(str(Path(__file__).resolve().parents[1] / "scripts/nq-approve-merge"))
|
|
HEAD = "a" * 40
|
|
|
|
|
|
class MergeGateTests(unittest.TestCase):
|
|
def test_review_evidence_must_match_exact_head_and_approval(self):
|
|
root = Path("/tmp/opencode")
|
|
root.mkdir(exist_ok=True)
|
|
with tempfile.TemporaryDirectory(dir=root) as directory:
|
|
review = Path(directory) / "review.txt"
|
|
review.write_text(f"Findings: none\nREVIEWED_HEAD: {HEAD}\nREVIEW_VERDICT: APPROVED\n")
|
|
APPROVE["validate_review"](review, HEAD)
|
|
with self.assertRaisesRegex(RuntimeError, "exact head"):
|
|
APPROVE["validate_review"](review, "b" * 40)
|
|
review.write_text(f"REVIEWED_HEAD: {HEAD}\nREVIEW_VERDICT: CHANGES_REQUIRED\n")
|
|
with self.assertRaisesRegex(RuntimeError, "exact head"):
|
|
APPROVE["validate_review"](review, HEAD)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|