aboutsummaryrefslogtreecommitdiff
path: root/internal/caldata/caldata_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/caldata/caldata_test.go')
-rw-r--r--internal/caldata/caldata_test.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/internal/caldata/caldata_test.go b/internal/caldata/caldata_test.go
index 7dbbf84..c0e2d50 100644
--- a/internal/caldata/caldata_test.go
+++ b/internal/caldata/caldata_test.go
@@ -402,3 +402,57 @@ func TestTridentineNamesPreservedAcrossRegeneration(t *testing.T) {
t.Errorf("assumption-of-the-blessed-virgin-mary: name.pl = %q, want the preserved Polish name", got)
}
}
+
+// TestTridentineMissalOverrides pins the four fields where the 1962 MISSALE
+// ROMANUM decides against missalemeum, and the Missal wins.
+//
+// This is the safety net for a specific accident. This file is generated by
+// scripts/gen-sanctoral-ef.go from missalemeum, which does NOT carry any of
+// these values; the generator re-applies them from its own missalOverrides
+// table on every run. If that table is ever removed, or a slug is renamed
+// upstream so an override silently stops matching, the generated file quietly
+// reverts to missalemeum's values and nothing else in this repository would
+// notice. This test notices.
+//
+// Each was found by the sibling project colitur, which validates this data
+// against the Missal and its Rubricae Generales rather than against another
+// calendar program:
+//
+// - ubaldus and didacus: the Missal's own universal calendarium ranks both
+// "III classis" outright, with no commemoration rubric, and each has a
+// Mass entry of its own in the Proprium taking its readings from a Common
+// -- which a bare commemoration never has.
+// - the two August vigils: RG 128 gives violet to "vigils of II and III
+// class outside Paschaltide". Both qualify. The rule's sole exception is
+// the Ascension's vigil, inside Paschaltide, which is white -- and which
+// is therefore checked here too, in the opposite direction, so that a
+// careless "make every vigil violet" fix would fail rather than pass.
+func TestTridentineMissalOverrides(t *testing.T) {
+ l := Tridentine()
+ for _, c := range []struct{ slug, field, want, why string }{
+ {"ubaldus", "rank", "class-3", "Missal calendarium: S. Ubaldi Ep. et Conf., III classis"},
+ {"didacus", "rank", "class-3", "Missal calendarium: S. Didaci Conf., III classis"},
+ {"vigil-of-st-lawrence", "colour", "violet", "RG 128: III-class vigil outside Paschaltide"},
+ {"vigil-of-the-assumption", "colour", "violet", "RG 128: II-class vigil outside Paschaltide"},
+ } {
+ rc, ok := l.Cels[c.slug]
+ if !ok {
+ t.Errorf("missing %q -- if the slug was renamed upstream, the generator's "+
+ "missalOverrides entry must be renamed with it, or the correction is lost", c.slug)
+ continue
+ }
+ if got := rc.Fields[c.field]; got != c.want {
+ t.Errorf("%s: %s = %q, want %q (%s). This is a MISSAL correction that "+
+ "missalemeum does not carry -- if it reverted, the generator's "+
+ "missalOverrides table has stopped being applied", c.slug, c.field, got, c.want, c.why)
+ }
+ }
+ // The exception, asserted in the other direction: RG 128's vigil rule is
+ // "outside Paschaltide", and the Ascension's vigil is inside it.
+ if rc, ok := l.Cels["vigil-of-the-ascension"]; ok {
+ if got := rc.Fields["colour"]; got != "" && got != "white" {
+ t.Errorf("vigil-of-the-ascension: colour = %q, want white -- RG 128's "+
+ "violet rule is for vigils OUTSIDE Paschaltide and this one is inside it", got)
+ }
+ }
+}