test(b-gate): the mutant's needle is the door's name BARE, not the door's name in a sentence
First attempt at M12 still passed 86 of 86 -- the arm planted a docstring that MENTIONED the module in prose, and the gate compares whole strings, so prose never reached the check either way. The arm proved something already true and left the mutant alive. The cheapest cheat is the bare name: a string that IS the dotted module, standing alone. That is what the arm plants now, and the same for the step's symbol. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
75cb142252
commit
6a8106a897
1 changed files with 10 additions and 10 deletions
|
|
@ -1148,24 +1148,24 @@ def test_a_probe_that_drives_the_door_without_naming_the_step_proves_the_door_on
|
|||
|
||||
|
||||
def test_a_probe_that_only_mentions_the_door_or_the_step_proves_neither(tmp_path: Path) -> None:
|
||||
"""FUNN 19.09, mutant M12 overlevde: leses HELE probens kropp, holder det å NEVNE døren og
|
||||
steget i docstringen. Da er «rører døren» en omtale igjen, ikke en atferd — nøyaktig feilen
|
||||
ett hakk lenger inne. Gaten leser derfor aldri en streng som står alene."""
|
||||
"""FUNN 19.09, mutant M12 overlevde FØRSTE forsøk på å felle den: leses HELE probens kropp,
|
||||
holder det å skrive dørens navn som en streng som står alene. Da er «rører døren» en omtale
|
||||
igjen, ikke en atferd — nøyaktig feilen ett hakk lenger inne.
|
||||
|
||||
Nålen er dørens navn NØYAKTIG, ikke som del av en setning: gaten sammenligner hele strenger,
|
||||
så en docstring som OMTALER modulen i prosa faller uansett. Den billigste måten å jukse på er
|
||||
derfor å skrive navnet bart, og det er den formen armen planter."""
|
||||
src = _fake_src(tmp_path, chat_client=False)
|
||||
_write_probe(tmp_path, docstring="en ekte probe, den kaller fakesrc.driver med gjoer_noe")
|
||||
_write_probe(tmp_path, docstring="en ekte probe: den kjører døren og sjekker exit-koden")
|
||||
row = gate.score_toolbox(_one_step(), src, _fake_run_path(), _FAKE_PASSED, tmp_path)
|
||||
assert (row.k, row.n) == (1, 1), row.exceptions
|
||||
|
||||
_write_probe(
|
||||
tmp_path,
|
||||
door="fakesrc.enhelt_annen_modul",
|
||||
docstring="denne proben kjører fakesrc.driver",
|
||||
)
|
||||
_write_probe(tmp_path, door="fakesrc.enhelt_annen_modul", docstring="fakesrc.driver")
|
||||
row = gate.score_toolbox(_one_step(), src, _fake_run_path(), _FAKE_PASSED, tmp_path)
|
||||
assert (row.k, row.n) == (0, 1), row.exceptions
|
||||
assert any("rører ikke døren" in x for x in row.exceptions), row.exceptions
|
||||
|
||||
_write_probe(tmp_path, needle="et_annet_navn", docstring="beviser steget gjoer_noe")
|
||||
_write_probe(tmp_path, needle="et_annet_navn", docstring="gjoer_noe")
|
||||
row = gate.score_toolbox(_one_step(), src, _fake_run_path(), _FAKE_PASSED, tmp_path)
|
||||
assert (row.k, row.n) == (0, 1), row.exceptions
|
||||
assert any("navngir ikke steget" in x for x in row.exceptions), row.exceptions
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue