package logging import ( "bytes" "reflect" "strings" "testing" ) func TestMissingTranslations(t *testing.T) { missing := map[string][]string{ "fr-FR": {"mail.second", "mail.first"}, "en-US": nil, "de-DE": {"mail.first"}, } want := "Missing translation keys:\n" + "Language Fallback Key\n" + "de-DE en-US mail.first\n" + "fr-FR en-US mail.first\n" + " mail.second" message := missingTranslations(missing) if message != want { t.Fatalf("got %q, want %q", message, want) } if !reflect.DeepEqual(missing["fr-FR"], []string{"mail.second", "mail.first"}) { t.Fatal("report mutated input keys") } var output bytes.Buffer write(&output, true, "W", "Locale", message) for _, line := range strings.Split(strings.TrimSuffix(output.String(), "\n"), "\n") { if !strings.HasPrefix(line, "\033[33m[W]\033[0m [Locale] ") { t.Fatalf("missing warning prefix: %q", line) } } if missingTranslations(nil) != "" || missingTranslations(map[string][]string{"en-US": nil}) != "" { t.Fatal("empty report produced a warning") } }