返回 DeepSeek-Reasonix
locale_test.go
根目录 / internal / secrets / locale_test.go
1 package secrets
2
3 import (
4 "os/exec"
5 "runtime"
6 "strings"
7 "testing"
8 )
9
10 func TestProcessEnvMissingLocaleUsesUTF8(t *testing.T) {
11 if runtime.GOOS == "windows" {
12 t.Skip("POSIX locale")
13 }
14 for _, key := range []string{"LANG", "LC_ALL", "LC_CTYPE"} {
15 t.Setenv(key, "")
16 }
17 env := ProcessEnv()
18 if !strings.Contains(strings.Join(env, "\n"), "LANG=") {
19 t.Fatal("missing LANG")
20 }
21 cmd := exec.Command("sed", "s/./X/g")
22 cmd.Env = env
23 cmd.Stdin = strings.NewReader("中文\n")
24 got, err := cmd.Output()
25 if err != nil || string(got) != "XX\n" {
26 t.Fatalf("UTF-8 character semantics: %q %v", got, err)
27 }
28 t.Setenv("LC_ALL", "C")
29 cmd = exec.Command("sed", "s/./X/g")
30 cmd.Env = ProcessEnv()
31 cmd.Stdin = strings.NewReader("中文\n")
32 got, err = cmd.Output()
33 if err != nil || string(got) != "XXXXXX\n" {
34 t.Fatalf("explicit byte semantics: %q %v", got, err)
35 }
36 }
37
37 lines GO