test: docs contract merged-stream test pins its own ON FAILURE line (#146)
CI / verify (push) Successful in 1m10s
Release / release (push) Successful in 35s

The comparison against render_failure_hint() alone passed unchanged if the
record lost its exit-1 cause, since both sides fell back to the same see: line.
CHANGES prose for 8d5fc6e corrected: three mismatches plus one #142 correction.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SnAJ7Z3CpVD3PRbN73QtU2

Files changed:
- CHANGES.md
- VERSION
- tools/chemenu/tests/test_cli.py
This commit is contained in:
torben committed 2026-09-26 18:50:01 +02:00
1 parent 8d5fc6e941
commit 8f61209b6b
3 files changed
+33 -16

No files matched your search

+27 -15
View File
@@ -59,7 +59,7 @@ concern - readable here, never shipped as something to parse.
--- ---
## 7.1.0-beta.25 - 2026-09-26 - Command records: three more mismatches from #142 aligned to code ## 7.1.0-beta.26 - 2026-09-26 - docs contract: the merged-stream test pins its own ON FAILURE line
**Author:** Torben Nehmer **Author:** Torben Nehmer
@@ -94,6 +94,7 @@ concern - readable here, never shipped as something to parse.
- network: property defined; sync, publish and upstream merge marked networked - network: property defined; sync, publish and upstream merge marked networked
- log append: unreadable --body-file is an ERROR line, not a traceback - log append: unreadable --body-file is an ERROR line, not a traceback
- Command records: three more mismatches from #142 aligned to code - Command records: three more mismatches from #142 aligned to code
- docs contract: the merged-stream test pins its own ON FAILURE line
<!-- /wikitool:bumps --> <!-- /wikitool:bumps -->
### CalDAV task-tracker provider (Nextcloud Tasks, iOS Reminders); review reports unknown-value findings instead of skipping them ### CalDAV task-tracker provider (Nextcloud Tasks, iOS Reminders); review reports unknown-value findings instead of skipping them
@@ -392,20 +393,31 @@ record's cause now names the cases ("missing, not a readable file, or not valid
### Command records: three more mismatches from #142 aligned to code ### Command records: three more mismatches from #142 aligned to code
Four more text-vs-code disagreements from #142's collection issue (Gitea #146), decided in the Three more text-vs-code disagreements from #142's collection issue (Gitea #146), plus a
code's favour and fixed in the text - no behaviour change. `lint`'s quote-limit cap counts correction of one of #142's own text fixes - all decided in the code's favour and fixed in the
blockquotes, not lines, since #22 changed the unit; `kb/CONTRACT.md`'s Quotation cap section had text, no behaviour change. `lint`'s quote-limit cap counts blockquotes, not lines, since #22
kept the old wording and now names the same unit, with the rule that a fenced code block is changed the unit; `kb/CONTRACT.md`'s Quotation cap section had kept the old wording and now
masked out first. `docs contract`'s record carried no exit-1 cause at all although names the same unit, with code masked out first. `docs contract`'s record carried no exit-1
`contract_command` fails when `tools/CONTRACT.md` is missing - the case #143's own follow-up cause at all although `contract_command` fails when `tools/CONTRACT.md` is missing, so it now
flagged - so it now names that cause; the merged-stream test that used to exercise the `see:` names that cause; the merged-stream test that used to exercise the `see:` fallback through this
fallback through this very gap is updated to check the new hint instead, and the fallback itself very gap now pins the command's own ON FAILURE line literally, and the fallback itself stays
stays covered by its own fixture-based test. `xref add`'s `atomic` property still described the covered by its own fixture-based test. `xref add`'s `atomic` property still described a two-write
two-write shape from before the edge became one-sided, though the code and its own NOTES have shape, though the code and the record's own NOTES say an edge is written into A only and B is
long said a source-page edge only ever writes A; it now says so. `publish`'s `atomic` property, never touched; it now says so. `publish`'s `atomic` property, tightened earlier in this
tightened once already in this candidate to "every gate runs before staging", still missed the candidate to "every gate runs before staging", still missed the one case that breaks it: on the
one case that breaks it: the rebase-review gate can exit 42 on the single retry of a rejected single retry of a rejected push, the rebase-review gate can exit 42 after the local commit
push, which happens after the commit already landed. exists - nothing is pushed, and the `--confirm-rebase` re-run pushes that commit.
The five other text fixes #142 made in the code's direction were checked against the code and
stand as they are.
### docs contract: the merged-stream test pins its own ON FAILURE line
The previous change's test compared `docs contract`'s output only against
`render_failure_hint()` of the same record - which would still pass if the record lost its
exit-1 cause again, because both sides would then fall back to the same `see:` line. It now also
pins the `ON FAILURE (wikitool docs contract -h):` header and the missing-file cause literally;
removing the cause from the record fails it.
--- ---
+1 -1
View File
@@ -1 +1 @@
7.1.0-beta.25 7.1.0-beta.26
+5
View File
@@ -367,5 +367,10 @@ def test_stderr_hint_follows_the_error_line_when_streams_are_merged(tmp_path):
assert result.returncode == 1 assert result.returncode == 1
lines = result.stdout.splitlines() lines = result.stdout.splitlines()
assert lines[0] == "ERROR tools/CONTRACT.md is missing." assert lines[0] == "ERROR tools/CONTRACT.md is missing."
# Pinned literally, not only against `render_failure_hint`: that comparison
# alone would pass unchanged if the record lost its cause again, since both
# sides would then fall back to the same `see:` line.
assert lines[1] == "ON FAILURE (wikitool docs contract -h):"
assert lines[2].startswith(" `tools/CONTRACT.md` is missing -> Not transient - restore the file")
hint = cli_contract.render_failure_hint(cli_contract.get("docs contract")) hint = cli_contract.render_failure_hint(cli_contract.get("docs contract"))
assert "\n".join(lines[1:]) == hint assert "\n".join(lines[1:]) == hint