diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-15 04:16:24 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-15 04:16:24 +0200 |
| commit | 96bf100a4de32bd5f3887ffdb15b59b8bbd0376b (patch) | |
| tree | ea3be84f551016a617adf50abdd34af5ae390546 /test/test_lectionary.ml | |
| parent | b0ff86ae552b90613be21c52433f4180deba7758 (diff) | |
| download | colitur-96bf100a4de32bd5f3887ffdb15b59b8bbd0376b.tar.gz colitur-96bf100a4de32bd5f3887ffdb15b59b8bbd0376b.zip | |
test(differential): fix round 2 -- Good Friday, Passion Tuesday, stale header
Critical, and worse than what it replaced: removing a lectionary key does
not mean "no reading" to Lectionary_ef.readings -- it means step 3 silently
resumes the preceding Sunday. Good Friday, which has no Mass at all, was
emitting Palm Sunday's own Epistle and Passion narrative every year; Holy
Wednesday had the same defect. Fixed by authoring both days fully: the
Gospel was always unambiguous and is now always authored; the Epistle uses
the same "last lesson before the Gospel" convention this file's own Lenten
Ember Wednesday entry already established for an identical two-peer-lesson
shape, applied for consistency rather than invented to close this gap. C24
is retired, folded into a widened C23 covering all six Holy Week days.
Important: Passion Tuesday was shipping Holy Tuesday's Mass, a defect the
previous round's own footnote had found and left unrecorded. Fixed at the
source -- colitur_keys now excludes lectio's own (wrong) ini section for
this one weekday rather than translating it; a new passion_tuesday_entry
hand-authors the real Missal citation (Dan 14:27, 28-42 / John 7:1-13, both
scans). New entry C26 records the resulting divergence, 43 of 46 years,
traced (not merely counted) to three years where a competing I-class feast
impedes the day entirely.
Important: the allow-list header was stale one level up, still naming and
restating the diagnosis of an id (C21) retired in the previous round.
Rewritten in full rather than layered with another correction.
Minors: all three Lent Ember values now pinned (only Wednesday was before);
C22's citation corrected to attribute the date-anchor text and the rank
text to their own separate sources; assert_reachable's own comment no
longer overclaims what it can catch; C25's falsified reasoning replaced
with the directly observed fact (a first replacement derivation was itself
found wrong on a second reading and is recorded as rejected, not silently
discarded); hand-authored citations standardised to English book names
with a colon, matching this file's own dominant convention, with one
stated exception where a value must stay byte-identical to lectio's own
data rather than be reformatted.
dune test: 358/358. COLITUR_EXHAUSTIVE_SWEEP=1 dune test --force: 359/359.
Diffstat (limited to 'test/test_lectionary.ml')
| -rw-r--r-- | test/test_lectionary.ml | 96 |
1 files changed, 58 insertions, 38 deletions
diff --git a/test/test_lectionary.ml b/test/test_lectionary.ml index 8fcf8e9..e88f103 100644 --- a/test/test_lectionary.ml +++ b/test/test_lectionary.ml @@ -84,21 +84,25 @@ let test_ef_data_file_loads () = (* 119 lectio ini sections, translated/widened/renamed into colitur's own Temporal_ef vocabulary, PLUS hand-authored/derived entries (tools/bootstrap_lectionary.ml's own [colitur_keys]/ - [vigil_entries]/[holy_week_entries]/[nativity_octave_entries]/ - [derived_entries] comments have the full account, task 8, branch - ef-lectionary, fix round 1): "ef-christmas-sunday-0" widens into - itself PLUS "ef-holy-name-sunday" (+1); the six Passiontide/Lent- - Ember sections translate/rename 1:1 (no count change: Passiontide - no longer widens into two colitur keys since fix round 1's - Critical 1 correction, and the three Lent Ember sections rename - rather than widen); one hand-authored entry sourced from lectio's - SANCTORAL calendar, not this lectionary ini ([ef-nativity-vigil], - +1); four hand-authored directly from the Missal, Holy Week - (+4); three hand-authored directly from the Missal, the fixed - Nativity-Octave days (+3); one entry derived from an - already-translated one rather than re-typed ([ef-holy-name], +1). - 119 + 1 + 1 + 4 + 3 + 1 = 129. *) - Alcotest.(check int) "entry count" 129 + [vigil_entries]/[holy_week_entries]/[passion_tuesday_entry]/ + [nativity_octave_entries]/[derived_entries] comments have the full + account, task 8, branch ef-lectionary, fix rounds 1-2): + "ef-christmas-sunday-0" widens into itself PLUS "ef-holy-name- + sunday" (+1); the three Lent Ember sections rename 1:1 (no count + change); "ef-passiontide-0-tuesday" is EXCLUDED (fix round 2, + Important -- it is Holy Tuesday's data, not Passion Tuesday's, + -1); the other five Passiontide sections rename 1:1 (no count + change); one hand-authored entry sourced from lectio's SANCTORAL + calendar, not this lectionary ini ([ef-nativity-vigil], +1); SIX + hand-authored directly from the Missal, all of Holy Week (+6, + fix round 2 -- Wednesday and Friday added, the first pass's + Critical bug); ONE hand-authored directly from the Missal, + Passion Tuesday's own real citation (+1, fix round 2); three + hand-authored directly from the Missal, the fixed Nativity-Octave + days (+3); one entry derived from an already-translated one + rather than re-typed ([ef-holy-name], +1). + 119 + 1 - 1 + 1 + 6 + 1 + 3 + 1 = 131. *) + Alcotest.(check int) "entry count" 131 (List.length (Lectionary.entries l)); (match Lectionary.find l (slug "ef-lent-1-monday") with | Some [ a; b ] -> @@ -127,40 +131,56 @@ let test_ef_data_file_loads () = check_entry "ef-pentecost-ember-sat" "Rom 5:1-5." "Luke 4:38-44."; (* Critical 2 fix (coordinator review round 1): the Lenten Ember days, previously dead keys under lectio's own "ef-lent-1-<weekday>" - naming -- now reachable under colitur's own slugs. *) + naming -- now reachable under colitur's own slugs. Minor, fix + round 2 (coordinator review): all THREE are pinned, not just + Wednesday -- a mutation on Friday's or Saturday's own value used + to leave the whole suite green. *) check_entry "ef-lent-ember-wed" "3 Kgs. 19:3-8" "Matt 12:38-50"; + check_entry "ef-lent-ember-fri" "Ezech 18:20-28" "John 5:1-15"; + check_entry "ef-lent-ember-sat" "1 Thess. 5:14-23" "Matt 17:1-9"; (* Passiontide widens into Passion week ONLY now (Critical 1 fix) -- "ef-passiontide-1-monday" keeps lectio's own citation; "ef-passiontide-2-monday" (Holy Monday) is Missal-sourced, - DIFFERENT text, hand-authored in [holy_week_entries]. *) + DIFFERENT text, hand-authored in [holy_week_entries]. Fix round 2 + (Important): "ef-passiontide-1-tuesday" no longer carries lectio's + own (wrong -- Holy Tuesday's) ini value; it is hand-authored from + the Missal's own real Passion Tuesday Mass, [passion_tuesday_entry]. *) check_entry "ef-passiontide-1-monday" "Jonas 3:1-10" "John 7:32-39"; - check_entry "ef-passiontide-2-monday" "Isai. 50, 5-10" "Io. 12, 1-9"; - check_entry "ef-passiontide-2-tuesday" "Ier. 11, 18-20" "Mark 14, 32-72; 15, 1-46"; - check_entry "ef-passiontide-2-thursday" "1 Cor. 11, 20-32" "Io. 13, 1-15"; - check_entry "ef-passiontide-2-saturday" "Col. 3, 1-4" "Matt. 28, 1-7"; + check_entry "ef-passiontide-1-tuesday" "Dan 14:27, 28-42" "John 7:1-13"; + check_entry "ef-passiontide-2-monday" "Isa 50:5-10" "John 12:1-9"; + (* Gospel punctuation ("15, 1-46") intentionally kept as lectio's own + ini already has it -- see bootstrap_lectionary.ml's own + [holy_week_entries] comment on this one entry. *) + check_entry "ef-passiontide-2-tuesday" "Jer 11:18-20" "Mark 14:32-72; 15, 1-46"; + (* Critical fix, round 2: Wednesday and Good Friday were left entirely + absent by the first pass, which meant step 3 quietly resumed the + preceding Sunday's Mass there (Good Friday emitting PALM SUNDAY's + Epistle and Passion) -- the FIRST pass's own reasoning ("neither + day has a single Epistle") was right about the First slot alone; + the Gospel is always unambiguous and is now always authored, and + First uses the SAME "last lesson before the Gospel" convention + this file's own Lenten Ember Wednesday entry above already uses + for an identical two-lesson shape. *) + check_entry "ef-passiontide-2-wednesday" "Isa 53:1-12" "Luke 22:39-71; 23:1-53"; + check_entry "ef-passiontide-2-thursday" "1 Cor 11:20-32" "John 13:1-15"; + check_entry "ef-passiontide-2-friday" "Ex 12:1-11" "John 18:1-40; 19:1-42"; + check_entry "ef-passiontide-2-saturday" "Col 3:1-4" "Matt 28:1-7"; (* Important 3(a) fix (coordinator review round 1): the fixed Nativity-Octave days now carry their own direct Missal formulary ("Diebus infra octavam Nativitatis Domini"), not Holy Name Sunday's (a first guess, measured wrong, reverted -- see [nativity_octave_entries]'s own comment). *) - check_entry "ef-nativity-octave-day-5" "Tit. 3, 4-7" "Luc. 2, 15-20"; - check_entry "ef-nativity-octave-day-6" "Tit. 3, 4-7" "Luc. 2, 15-20"; - check_entry "ef-nativity-octave-day-7" "Tit. 3, 4-7" "Luc. 2, 15-20"; - (* These three MUST stay absent -- Holy Wednesday and Good Friday are - deliberately not hand-authored (multi-lesson liturgies, no single - Epistle slot; see [holy_week_entries]'s own comment for why), and - Lent's OWN "ef-lent-1-wednesday/friday/saturday" keys must not + check_entry "ef-nativity-octave-day-5" "Titus 3:4-7" "Luke 2:15-20"; + check_entry "ef-nativity-octave-day-6" "Titus 3:4-7" "Luke 2:15-20"; + check_entry "ef-nativity-octave-day-7" "Titus 3:4-7" "Luke 2:15-20"; + (* Lent's OWN "ef-lent-1-wednesday/friday/saturday" keys must not reappear once renamed away (colitur never computes them as its - own slug at all). A regression net for those decisions, not - merely documentation of them. *) - let check_absent name = - match Lectionary.find l (slug name) with - | None -> () - | Some _ -> Alcotest.fail (name ^ ": must stay absent -- see bootstrap_lectionary.ml") - in - check_absent "ef-passiontide-2-wednesday"; - check_absent "ef-passiontide-2-friday"; - check_absent "ef-lent-1-wednesday" + own slug at all) -- a regression net for that decision, not + merely documentation of it. *) + match Lectionary.find l (slug "ef-lent-1-wednesday") with + | None -> () + | Some _ -> + Alcotest.fail "ef-lent-1-wednesday: must stay absent -- see bootstrap_lectionary.ml" let suite = [ ("find present", `Quick, test_find_present); |
