Commit a7c6cb9
committed
fix(comments): emit required <a:bodyPr> in <p188:txBody> (maintainer UAT)
Maintainer opened uat_issue25_comments.pptx in PowerPoint: file opened
clean (no repair) but ZERO comments displayed. Root cause: the add
path builds the body via get_or_add_txBody() (a bare <p188:txBody/>)
then sets text via _set_txBody_text, which only PRESERVED a pre-existing
<a:bodyPr> and never created one. <p188:txBody> is a DrawingML
a:CT_TextBody whose schema REQUIRES <a:bodyPr> as first child;
PowerPoint silently drops comments with a bodyPr-less txBody — no
repair dialog, the comment is just absent. The entire green trinity +
17/17 UAT could not see this; only maintainer visual review did.
Fix: _set_txBody_text now GUARANTEES a leading <a:bodyPr/> (inserts it
when absent) for both comments and replies. Added
DescribeThreadedCommentBodyPrRegression (2 tests) asserting every
txBody carries <a:bodyPr> before <a:p>, so the silent-drop class is
now test-caught. uat_issue25.py OUT path moved under ./uat/ per
CLAUDE.md §6a update.
Trinity: pytest 3753, ruff clean, behave 1062, 0 failed.
Refs #251 parent 9fa2ff9 commit a7c6cb9
2 files changed
Lines changed: 58 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
54 | 54 | | |
55 | 55 | | |
56 | 56 | | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
61 | 65 | | |
62 | 66 | | |
63 | 67 | | |
| 68 | + | |
| 69 | + | |
64 | 70 | | |
65 | 71 | | |
66 | 72 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
626 | 626 | | |
627 | 627 | | |
628 | 628 | | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
629 | 677 | | |
630 | 678 | | |
0 commit comments