diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-18 16:08:44 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-18 16:08:44 +0200 |
| commit | b7b28ab0ba96717b7222bb892806d7dc828a966f (patch) | |
| tree | 590651b88a173f6e35e2ebfa53d945a12b988425 /internal/calendar/oracle_ef_test.go | |
| parent | 967e911728eefb85dc53065c73c5c5d4cdce6a59 (diff) | |
| parent | 27acee1930dc728b286c655cb66bd5e44804df6f (diff) | |
| download | lectio-b7b28ab0ba96717b7222bb892806d7dc828a966f.tar.gz lectio-b7b28ab0ba96717b7222bb892806d7dc828a966f.zip | |
merge: RG 72's Christmas Time boundary, and the season/slug split it needed
Separates the liturgical season from the season that names slugs and numbers
weeks, so the boundary could move without renaming every slug in the window.
Diffstat (limited to 'internal/calendar/oracle_ef_test.go')
| -rw-r--r-- | internal/calendar/oracle_ef_test.go | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/internal/calendar/oracle_ef_test.go b/internal/calendar/oracle_ef_test.go index b74d935..b765a34 100644 --- a/internal/calendar/oracle_ef_test.go +++ b/internal/calendar/oracle_ef_test.go @@ -249,11 +249,18 @@ var efAllowList = []efAllow{ // defects, and not touched here: efSeason is a season-boundary // function with much wider reach than any of the seven, and changing // it is out of this task's scope. + // CORRECTED 2026-08-18: lectio now follows RG 72 and reads 6-13 January + // as Christmas Time, so this divergence has CHANGED SIDES. It is + // missalemeum that calls those days "time after Epiphany" now, and + // what this excuses is a SEASON difference rather than the colour one + // it was written for -- the colour follows correctly once the season + // is right, which is why the six colour rows this used to cover are + // simply gone. match: func(date string, day time.Time, o efOracleDay) bool { return day.Month() == time.January && day.Day() >= 6 && day.Day() <= 13 }, - field: "colour", - reason: "RG 72-73/RG 119(a): 6-13 Jan is Christmastide, not lectio's time-after-Epiphany reading (efSeason, not one of the seven defects; see colitur rules-register.md §3c item 1)", + field: "season", + reason: "RG 72: Christmas Time runs 'usque ad diem 13 ianuarii inclusive', so 6-13 Jan is the Epiphany section OF Christmas Time; missalemeum reads it as time after Epiphany (colitur C1)", }, { // RG 33: "Vigilia II aut III classis penitus omittitur, si occurrat in @@ -330,7 +337,7 @@ func TestOracleEF(t *testing.T) { } sort.Strings(dates) - var seasonMiss, rankMiss, colourMiss, rankAllowed, colourAllowed, skipped, total int + var seasonMiss, seasonAllowed, rankMiss, colourMiss, rankAllowed, colourAllowed, skipped, total int shownSeason, shownRank, shownColour := 0, 0, 0 for _, date := range dates { od := oracle[date] @@ -356,10 +363,25 @@ func TestOracleEF(t *testing.T) { if want == "" { skipped++ } else if got.Season != want { - seasonMiss++ - if shownSeason < 40 { - t.Errorf("%s: EF season got %q want %q (from %q)", date, got.Season, want, src) - shownSeason++ + // The season axis consults the allow-list, and an excused day is + // NOT counted in seasonMiss. Neither was true before: until the + // RG 72 boundary was fixed no cited divergence had ever been a + // SEASON one -- the 6-13 January window showed up as a colour + // difference, because the wrong season produced the wrong colour + // too. With the season right the colour follows, and what is left + // is a season difference with no way to say "this one is known". + // Counting an excused day in seasonMiss would be worse than + // useless: the threshold below is a t.Fatalf, so the allow-list + // would print a reason and fail the suite anyway. + if ok, why := efAllowed(date, day, od, "season"); ok { + seasonAllowed++ + t.Logf("[allow-listed] %s: EF season got %q want %q — %s", date, got.Season, want, why) + } else { + seasonMiss++ + if shownSeason < 40 { + t.Errorf("%s: EF season got %q want %q (from %q)", date, got.Season, want, src) + shownSeason++ + } } } @@ -419,6 +441,7 @@ func TestOracleEF(t *testing.T) { t.Logf("EF oracle: %d checked, %d skipped(unmapped), %d season mismatches, "+ "%d rank mismatches (%d allow-listed), %d colour mismatches (%d allow-listed)", total, skipped, seasonMiss, rankMiss, rankAllowed, colourMiss, colourAllowed) + t.Logf("EF oracle: %d season mismatches allow-listed", seasonAllowed) if seasonMiss > 0 { t.Fatalf("%d/%d EF season mismatches vs missalemeum — temporalEF is wrong", seasonMiss, total) } |
