Add test coverage for cmd/vintner and internal/i18n

Both were at 0% coverage. Focused on what's safely testable without
touching the network or filesystem: flag validation (--architecture/
--host-arch, the same guard added in the stability pass), subcommand
dispatch and aliases, help/usage error paths, and - for i18n - full
language-detection table coverage plus a completeness check that
every catalog key has both an EN and RU entry (an English-only or
Russian-only entry would silently degrade rather than fail loudly,
so this is worth locking in). cmd/vintner: 0% -> 28.8%, i18n: 0% ->
94.1%.
This commit is contained in:
Cheviiot
2026-07-25 10:41:48 +10:00
parent 26f6df6a9a
commit fc20b2fb15
6 changed files with 225 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
package main
import "testing"
// TestRunDownloadRejectsInvalidArchFlags exercises the validation added
// after the flags are parsed, which must reject typos before runDownload
// gets anywhere near the network (FetchChannelManifest) - these tests would
// hang/fail on network access if that ordering ever regressed.
func TestRunDownloadRejectsInvalidArchFlags(t *testing.T) {
for _, tc := range []struct {
name string
args []string
}{
{"bad architecture", []string{"--architecture", "x866"}},
{"bad architecture, valid mixed with invalid", []string{"--architecture", "x64", "--architecture", "sparc"}},
{"bad host-arch", []string{"--host-arch", "sparc"}},
} {
t.Run(tc.name, func(t *testing.T) {
if code := runDownload(tc.args); code != 2 {
t.Errorf("runDownload(%v) = %d, want 2", tc.args, code)
}
})
}
}
func TestValidArchitectureSets(t *testing.T) {
for _, a := range []string{"x86", "x64", "arm", "arm64", "host"} {
if !validArchitectures[a] {
t.Errorf("validArchitectures[%q] = false, want true", a)
}
}
for _, a := range []string{"x86", "x64", "arm64"} {
if !validHostArchs[a] {
t.Errorf("validHostArchs[%q] = false, want true", a)
}
}
if validHostArchs["arm"] {
t.Error(`validHostArchs["arm"] = true, want false (no 32-bit ARM host toolchain exists)`)
}
}