39 lines
1.1 KiB
Go
39 lines
1.1 KiB
Go
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")
|
|
}
|
|
}
|