The decoy suite is a gate of the full run (R-1116); scripts only, no release
gates / gates (push) Successful in 49s
gates / gates (push) Successful in 49s
scripts/test_gate_decoys.py is now agent_gates.py's `gate-decoys` row: the full run (which CI runs on every push), not --fast (~20 s in the workspace, 30 cases). Declared in its own COVERS; test_agent_gates.py pins it. Red-proved: a reuse-refs FACT case flipped to expect rc 0 -> CONVICTED: gate-decoys; restored, green. Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
@@ -57,6 +57,20 @@ class AgentGatesTest(unittest.TestCase):
|
||||
finally:
|
||||
shutil.rmtree(tmp, ignore_errors=True)
|
||||
|
||||
def test_decoy_suite_is_a_full_run_gate(self):
|
||||
"""R-1116: the decoy suite is a gate of the FULL run (which CI runs on every push), and --fast
|
||||
names it as skipped (~20 s, too slow for the hook)."""
|
||||
sys.dont_write_bytecode = True # no __pycache__ left in scripts/ (not gitignored here)
|
||||
sys.path.insert(0, os.path.join(ROOT, "scripts"))
|
||||
import agent_gates as mod
|
||||
rows = [g for g in mod.GATES if g[0] == "gate-decoys"]
|
||||
self.assertEqual(len(rows), 1, "gate-decoys is not registered exactly once")
|
||||
self.assertEqual(os.path.basename(rows[0][1]), "test_gate_decoys.py")
|
||||
self.assertFalse(rows[0][3], "gate-decoys must not be --fast")
|
||||
self.assertEqual([g[0] for g in mod.GATES if not g[3]], ["published", "gate-decoys"])
|
||||
self.assertIn("--fast SKIPPED (deliberate periodic runs, never in a hook): published, gate-decoys",
|
||||
self.out)
|
||||
|
||||
def test_unknown_argument_is_rejected(self):
|
||||
p = subprocess.run([sys.executable, ENTRY, "--nope"], cwd=ROOT,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
|
||||
Reference in New Issue
Block a user