返回 DeepSeek-Reasonix
locale_test.go
根目录 / internal / localeenv / locale_test.go
1 package localeenv
2
3 import (
4 "reflect"
5 "testing"
6 )
7
8 func TestDefaultPreservesExplicitLocale(t *testing.T) {
9 for _, key := range []string{"LANG", "LC_ALL", "LC_CTYPE"} {
10 for _, value := range []string{"C", "POSIX", "zh_CN.GB18030", "en_US.UTF-8"} {
11 env := []string{"PATH=/bin", key + "=" + value}
12 if got := withDefault(env, "C.UTF-8"); !reflect.DeepEqual(got, env) {
13 t.Fatalf("changed explicit locale: %v", got)
14 }
15 }
16 }
17 }
18
19 func TestDefaultOnlyFillsMissingLocale(t *testing.T) {
20 env := []string{"PATH=/bin", "LANG=", "LC_ALL=", "LC_COLLATE=C"}
21 want := []string{"PATH=/bin", "LC_ALL=", "LC_COLLATE=C", "LANG=C.UTF-8"}
22 if got := withDefault(env, "C.UTF-8"); !reflect.DeepEqual(got, want) {
23 t.Fatalf("got %v", got)
24 }
25 if env[1] != "LANG=" {
26 t.Fatal("mutated source environment")
27 }
28 if got := withDefault(env, ""); !reflect.DeepEqual(got, env) {
29 t.Fatal("invented unavailable locale")
30 }
31 }
32
33 func TestSelectInstalledUTF8(t *testing.T) {
34 for input, want := range map[string]string{
35 "C\nPOSIX\nen_US.UTF-8\n": "en_US.UTF-8",
36 "en_US.utf8\nC.utf8\n": "C.utf8",
37 "C\nPOSIX\n": "",
38 "C\nzh_CN.UTF-8\n": "zh_CN.UTF-8",
39 } {
40 if got := selectUTF8(input); got != want {
41 t.Fatalf("got %q want %q", got, want)
42 }
43 }
44 }
45
45 lines GO