fix(checker): a proptest! block ends, and so should the flag that accepts it
Fifth silent success in this file, found by review on PR #40. in_proptest was set on the first 'proptest!' line and NEVER CLEARED, so every later fn in that file -- helpers included -- was accepted as a test by --check-evidence. A file with one property test made the whole file's functions eligible, which is exactly the hole the any-fn fix was meant to close. Now the block's braces are tracked and the flag leaves when they balance. Fault-injected: a helper defined after a proptest! block is reported as an orphan, while the #[test] inside the block still passes. Five silent successes in one small checker in one day, every one failing in the direction that looks like passing, and none found by the person who wrote it. The gate and the thing it gates were written by the same hand and nobody injected a fault -- which is the wave's own finding turned on its tooling. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -101,11 +101,23 @@ def check_evidence(roots):
|
||||
for path in rust_files(roots):
|
||||
lines = open(path, encoding="utf8", errors="replace").read().split("\n")
|
||||
annotated = False
|
||||
in_proptest = False
|
||||
# A `proptest!` block accepts its bodies as tests -- but only INSIDE the
|
||||
# block. A bare flag was never cleared, so the first proptest! in a file
|
||||
# made every later fn, helpers included, count as a test: a silent
|
||||
# success in the gate itself (found by review on PR #40). Track the
|
||||
# block's braces and leave when they balance.
|
||||
proptest_depth = None
|
||||
for raw in lines:
|
||||
s = raw.strip()
|
||||
if s.startswith("proptest!"):
|
||||
in_proptest = True
|
||||
if proptest_depth is not None:
|
||||
proptest_depth += raw.count("{") - raw.count("}")
|
||||
if proptest_depth <= 0:
|
||||
proptest_depth = None
|
||||
elif s.startswith("proptest!"):
|
||||
proptest_depth = raw.count("{") - raw.count("}")
|
||||
if proptest_depth <= 0:
|
||||
proptest_depth = None if "{" in raw else 0
|
||||
in_proptest = proptest_depth is not None
|
||||
if s.startswith("#[") and ("test" in s or "tokio::test" in s):
|
||||
annotated = True
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user