diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-18 15:23:22 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-18 15:23:22 +0200 |
| commit | 4b2e1a1e0d52cba62ab7f80aecf3506c323b47fd (patch) | |
| tree | 3966ced8b77fe74f124b978e86984e9bcb953d84 /internal/calendar/temporal_ef_test.go | |
| parent | 46653b24b0afff60be35c3e876830eb522fd2acc (diff) | |
| download | lectio-4b2e1a1e0d52cba62ab7f80aecf3506c323b47fd.tar.gz lectio-4b2e1a1e0d52cba62ab7f80aecf3506c323b47fd.zip | |
fix(ef): Good Friday is black (RG 128(b) + RG 132)
This file's own comment called RG 132's black "a separate, unmodelled gap".
It is modelled now. RG 128(b)'s exception list carries Good Friday in the same
sentence as Holy Thursday's -- "Actione liturgica feria VI in Passione et
Morte Domini usque ad Communionem exclusive" excepts the day from
Passiontide's violet -- and RG 132 assigns black to it. Adopted from colitur,
which closed the same gap against the Missal in its v0.4.0.
The rubric is per-action and this model carries one colour per day, so black
is the day's principal colour, the same acknowledged limit the Palm Sunday
blessing already has. missalemeum's own colour set for the day is "bv", black
first, so the oracle test accepts this without a new allow-list entry.
Found by cross-checking clectio's output against colitur date by date, NOT by
the patch tool that produced the earlier eight corrections. That tool compares
colitur's sanctoral data against this repo's calendar ini, so a temporal day
-- computed in code on both sides, in neither file -- is structurally
invisible to it. Its docstring now says so.
TestTemporalEFHolyThursdayColour asserted Good Friday was violet "(unchanged)",
encoding the gap; renamed to TestTemporalEFTriduumColours and updated. A test
asserting the absence of a feature passes for exactly as long as the feature
is absent, which is not the same as being correct. Holy Saturday is still
pinned violet in the other direction, so a careless "the whole Triduum is
black" change fails there.
Diffstat (limited to 'internal/calendar/temporal_ef_test.go')
| -rw-r--r-- | internal/calendar/temporal_ef_test.go | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/internal/calendar/temporal_ef_test.go b/internal/calendar/temporal_ef_test.go index 8b1ffa5..db6e6aa 100644 --- a/internal/calendar/temporal_ef_test.go +++ b/internal/calendar/temporal_ef_test.go @@ -98,17 +98,34 @@ func TestTemporalEFRoseSundays(t *testing.T) { // Passiontide's violet. Good Friday and Holy Saturday, either side, stay // violet (their own black/no-colour exceptions are a separate, unmodelled // gap -- see RG 132, precedence_ef.go's own doc comments). -func TestTemporalEFHolyThursdayColour(t *testing.T) { +// TestTemporalEFTriduumColours pins all three days of the Sacred Triduum, +// which take three different colours for three different reasons. +// +// Renamed from TestTemporalEFHolyThursdayColour, which asserted Good Friday +// was violet "(unchanged)" -- encoding a gap this file's own comment used to +// call "separate, unmodelled". It is modelled now, so the test that pinned +// the gap had to move with it. A test asserting the absence of a feature +// passes for exactly as long as the feature is absent, which is not the same +// as being correct. +func TestTemporalEFTriduumColours(t *testing.T) { easter := d("2025-04-20") holyThu := easter.AddDate(0, 0, -3) goodFri := easter.AddDate(0, 0, -2) holySat := easter.AddDate(0, 0, -1) + // RG 128(b)'s named exception list, and RG 122 affirmatively. if got := temporalEF(holyThu).Cel.Colour; got != White { t.Errorf("Holy Thursday colour = %s, want white", got) } - if got := temporalEF(goodFri).Cel.Colour; got != Violet { - t.Errorf("Good Friday colour = %s, want violet (unchanged)", got) + // RG 128(b) excepts the day from Passiontide's violet; RG 132 assigns + // black. missalemeum's own colour set for the day is "bv", black first. + if got := temporalEF(goodFri).Cel.Colour; got != Black { + t.Errorf("Good Friday colour = %s, want black (RG 128(b) + RG 132)", got) } + // Holy Saturday IS still violet: RG 128(b)'s exception for it covers only + // the deacon at the Easter Preconium and the celebrant at the renewal of + // baptismal promises, not the day, and this model carries one colour per + // day. Asserted in the other direction on purpose, so a careless "the + // whole Triduum is black" change fails here. if got := temporalEF(holySat).Cel.Colour; got != Violet { t.Errorf("Holy Saturday colour = %s, want violet (unchanged)", got) } |
