3.7 KiB
FAIL
tests/scripts/ooxml.py:45 — DOCX comment verification accepts an orphaned comment part as a preserved comment. Reproducer: take the DOCX produced by a_docx_keeps_text_comments_and_tracking_across_sessions, remove every w:commentReference from word/document.xml, and retain word/comments.xml. python3 tests/scripts/ooxml.py contract <file> exits 0, including the textutil check, although the document has zero comment references and the saved comment has lost its attachment to the document. This leaves the comment preservation claim in docs/compatibility.md:15 without an effective regression check (PRD §19.2). Fix direction: verify the document's comment references, their IDs and intended anchors against the related comment part, and require this mutation to fail.
tests/scripts/ooxml.py:50 — The tracking-state assertion checks only the element's presence. Reproducer: replace the generated DOCX's <w:trackRevisions/> with <w:trackRevisions w:val="false"/>. The independent checker exits 0 while the persisted setting explicitly disables tracking; docs/compatibility.md:15 claims the tracking switch is preserved. Fix direction: interpret the OOXML OnOff value, assert tracking is enabled, and exercise the explicit-false case.
tests/scripts/ooxml.py:85 — XLSX verification omits the input cells used to calculate its independent expectations, allowing changed inputs and stale formula caches to pass. Reproducer: in the XLSX produced by an_xlsx_keeps_formulas_and_results_across_sessions, change H1 from 7 to 70 and retain the saved formulas and caches. The checker exits 0 with H3=35, H4=2.33333333333333, H8=12 and H9=36, although those values disagree with the saved H1=70 and H2=5. This misses content corruption and stale results covered by PRD §19.2. Fix direction: independently verify the specified input cells and their types alongside the formula texts and computed expectations; require the input-only mutation to fail.
tests/scripts/ooxml.py:68 — The XLSX reader inspects the physical xl/worksheets/sheet1.xml entry without resolving the workbook's sheet relationships. Reproducer: change the generated file's worksheet relationship in xl/_rels/workbook.xml.rels from worksheets/sheet1.xml to worksheets/missing.xml, retaining the original worksheet entry. python3 tests/scripts/ooxml.py sheet <file> exits 0 even though the workbook's declared sheet points to a missing part. PRD §19.2 requires saved structure to survive independent verification. Fix direction: resolve the workbook's declared sheets through their relationship IDs, validate the targets, and check the intended worksheet through that mapping.
tests/scripts/ooxml.py:116 — PPTX verification counts slide IDs and scans archive entries while ignoring the relationships that make slides and notes part of the presentation. Two independent mutations of the generated PPTX each exit 0: change the slide-two relationship in ppt/_rels/presentation.xml.rels to slides/missing.xml; remove the notesSlide relationship from ppt/slides/_rels/slide1.xml.rels while retaining the notes XML. The former breaks a declared slide; the latter disconnects the saved speaker notes from slide one. The checker still supports the preservation claim in docs/compatibility.md:17. Fix direction: resolve the ordered slide list and each slide's notes through their relationships, verify the referenced targets, and assert the expected content, visibility and notes on their owning slides.
tests/scripts/ooxml.py:58 — column_row is dead code, violating the project's rule 6. Repository search finds only its definition; AST inspection finds one FunctionDef and zero Name references. Running all three CASES leaves this function unused. Fix direction: remove the unused function.