diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-29 11:46:17 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-29 11:46:17 +0200 |
| commit | 8ddd910dd545c45a7227da87ca125758b4a0e2cb (patch) | |
| tree | b652bb239c622e2f8806a443db21a0b0bf8c8962 /internal/bible/bible_test.go | |
| parent | 79f9ae051c1e8f179e2e7c17f590c105eb18bef1 (diff) | |
| download | lectio-8ddd910dd545c45a7227da87ca125758b4a0e2cb.tar.gz lectio-8ddd910dd545c45a7227da87ca125758b4a0e2cb.zip | |
test(bible): skip corpus-dependent tests when optional corpora aren't embedded
Since 51c0f4e split the corpora (only vul embedded by default; wuj/drb/grb
behind -tags fullbible), `go test ./...` on the default build was red across six
packages -- every failure was a test assuming an optional corpus is present.
Guard those assertions with a skip keyed on bible.Meta(code), so they run under
-tags fullbible and skip -- not fail -- on the default vul-only build. Mixed
tests are split into subtests so the always-embedded vul assertions and pure
logic (pl->vul fallback, explicit passthrough, bt-rejection, i18n labels) keep
running on both builds. Test-only change; no product code or corpora touched.
- internal/bible: TestVerses, TestLookup, TestCorpusBooks, TestChapters,
TestGrbNoApparatusMarkers, TestCrossChapterRange* (requireCorpus helper).
- internal/cli, config, render, tui, web: the same pattern for their
corpus-dependent tests.
- Fixes an index-out-of-range panic in internal/tui's reader tests that was
aborting the package binary and masking 3 further corpus-absence failures
(TestReaderBookmarkFlow, TestReaderChapterJump, TestReaderRemembersPlace).
Verified: `go test ./...` and `go test -tags fullbible ./...` both green (0 FAIL);
guards active only on the default build (29 skips vs 1 unrelated pre-existing);
gofmt and go vet clean.
Diffstat (limited to 'internal/bible/bible_test.go')
| -rw-r--r-- | internal/bible/bible_test.go | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/internal/bible/bible_test.go b/internal/bible/bible_test.go index 71a2c89..e3c18c8 100644 --- a/internal/bible/bible_test.go +++ b/internal/bible/bible_test.go @@ -14,24 +14,40 @@ func TestVerses(t *testing.T) { {"wuj", "Wisdom", 3, 1, "A dusze sprawiedliwych"}, // deuterocanonical } for _, c := range cases { - vs := Verses(c.version, c.book, c.chap) - var got string - for _, v := range vs { - if v.Verse == c.verse { - got = v.Text + t.Run(c.version+"/"+c.book, func(t *testing.T) { + requireCorpus(t, c.version) + vs := Verses(c.version, c.book, c.chap) + var got string + for _, v := range vs { + if v.Verse == c.verse { + got = v.Text + } } - } - if !hasPrefix(got, c.wantPrefix) { - t.Errorf("%s %s %d:%d = %q want prefix %q", c.version, c.book, c.chap, c.verse, got, c.wantPrefix) - } + if !hasPrefix(got, c.wantPrefix) { + t.Errorf("%s %s %d:%d = %q want prefix %q", c.version, c.book, c.chap, c.verse, got, c.wantPrefix) + } + }) } } func hasPrefix(s, p string) bool { return len(s) >= len(p) && s[:len(p)] == p } +// requireCorpus skips the test when corpus `code` is not available. The optional +// corpora (wuj, drb, grb) are compiled in only with `-tags fullbible` (or dropped +// into the user corpora dir); without that, only vul is embedded. Keying on +// Meta() means these tests run fully under fullbible and skip -- not fail -- +// under the default build, so `go test ./...` stays honest either way. +func requireCorpus(t *testing.T, code string) { + t.Helper() + if _, ok := Meta(code); !ok { + t.Skipf("corpus %q not embedded; build with -tags fullbible", code) + } +} + // TestGrbNoApparatusMarkers guards the corpus fix: the SBLGNT apparatus sigla // (U+2E00–U+2E0D) were stripped from the Greek text. func TestGrbNoApparatusMarkers(t *testing.T) { + requireCorpus(t, "grb") for _, v := range Verses("grb", "Luke", 16) { for _, r := range v.Text { if r >= 0x2E00 && r <= 0x2E0D { @@ -53,6 +69,7 @@ func TestVul2Kings(t *testing.T) { } func TestCorpusBooks(t *testing.T) { + requireCorpus(t, "wuj") books := CorpusBooks("wuj") if len(books) == 0 { t.Fatal("wuj corpus has no books") @@ -72,6 +89,7 @@ func TestCorpusBooks(t *testing.T) { } func TestChapters(t *testing.T) { + requireCorpus(t, "wuj") ch := Chapters("wuj", "John") if len(ch) == 0 || ch[0] != 1 { t.Fatalf("John chapters = %v", ch) |
