aboutsummaryrefslogtreecommitdiff
path: root/test/test_rite_of.ml
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_rite_of.ml')
-rw-r--r--test/test_rite_of.ml45
1 files changed, 25 insertions, 20 deletions
diff --git a/test/test_rite_of.ml b/test/test_rite_of.ml
index a1892ae..5e369b8 100644
--- a/test/test_rite_of.ml
+++ b/test/test_rite_of.ml
@@ -77,21 +77,25 @@ let real_of_rite = Rite_of.context ~lectionary:real_of_lectionary
let run year = Val.run real_of_rite real_of_layer ~year
-(* data/of/lectionary.sexp's own provenance header names ONE informational
- temporal-slug gap: [of-nativity] (25 December -- Christmas Day itself)
- has no entry, because niedziela.pl's own source keys the Nativity's
- several Masses (Vigil/Night/Dawn/Day) differently than a single flat
- slug can address, and [Lectionary_of.readings] has no fallback beyond
- its own three-step chain (unlike EF's RG 299 preceding-Sunday rule,
- which OF's own OLM Praenotanda gives no equivalent for -- see
- lectionary_of.mli's own citation). This makes {!Colitur_kernel.Validate
- .run}'s ["citations-unresolved"] check fire exactly once a year, on 25
- December, on real shipped data -- a documented, measured gap in
- lectionary_of's own data file (out of this task's scope to touch or
- close: lectionary_of.* is excluded from this task's brief), not a defect
- this module's wiring introduced. Named and filtered explicitly, never
- silently dropped, so a future SECOND gap (a regression) still reddens
- this test. *)
+(* CLOSED, fix wave I8 (final-review.md, 2026-08-25-colitur-of-phases-3-5).
+ This paragraph used to describe a LIVE gap: data/of/lectionary.sexp's
+ own provenance header named ONE informational temporal-slug gap,
+ [of-nativity] (25 December -- Christmas Day itself), because
+ niedziela.pl's own source never covered the Christmas DAY Mass at all
+ (only the Vigil), which made {!Colitur_kernel.Validate.run}'s
+ ["citations-unresolved"]/["formulary"] checks fire every year, on 25
+ December, on real shipped data. tools/bootstrap_lectionary_of.ml's own
+ [hand_authored] table now injects that entry directly (Isaiah 52:7-10 /
+ John 1:1-18, OLM 1981's own "16 Ad Missam in die",
+ docs/research/of/olm-1981-ocr.txt:4513-4520) -- a primary-source
+ citation, not a guess, the same discipline every other hand-authored
+ entry in this project follows. [is_known_nativity_gap] is kept, not
+ deleted, but is no longer in [is_known]'s own filter below: it now
+ exists ONLY as an explicit, named "this must never fire again" check
+ ({!check_year_allowing_known_gaps}'s own dedicated assertion) -- a
+ regression here surfaces as an ordinary unexpected-failure test error,
+ not a silently-absorbed known gap, which is the whole point of moving a
+ predicate out of the filter once its own defect closes. *)
let ends_with ~suffix s =
let ls = String.length s and lx = String.length suffix in
ls >= lx && String.sub s (ls - lx) lx = suffix
@@ -141,18 +145,19 @@ let is_known_holy_family_fallback_gap (f : Val.failure) =
let check_year_allowing_known_gaps year =
let fs = run year in
- let is_known f = is_known_nativity_gap f || is_known_holy_family_fallback_gap f in
+ (* Fix wave I8: [is_known_nativity_gap] is deliberately NOT part of
+ [is_known] any more -- see that predicate's own header. Only the
+ Holy Family fallback gap is still filtered out here. *)
+ let is_known f = is_known_holy_family_fallback_gap f in
let unexpected = List.filter (fun f -> not (is_known f)) fs in
(match unexpected with
| [] -> ()
| fs ->
Alcotest.failf "%d: %s" year
(String.concat "; " (List.map Val.failure_to_string (List.filteri (fun i _ -> i < 5) fs))));
- let nativity_gaps = List.filter is_known_nativity_gap fs in
Alcotest.(check int)
- (Printf.sprintf "%d: exactly the two documented of-nativity checks (citations-unresolved + \
- formulary), no more" year)
- 2 (List.length nativity_gaps)
+ (Printf.sprintf "%d: no of-nativity citations-unresolved/formulary gap (fix wave I8 -- was 2)" year)
+ 0 (List.length (List.filter is_known_nativity_gap fs))
(* Landmark years, the same choice test_validate.ml's own
[test_landmark_years] makes for EF: both domain edges plus two ordinary