Files
nexus/internal/terminalenv/terminalenv_test.go
T
2026-06-02 11:56:18 +01:00

86 lines
2.2 KiB
Go

package terminalenv
import "testing"
func TestLocalShellEnvSetsTermAndUTF8WhenMissing(t *testing.T) {
got := LocalShellEnv([]string{"SHELL=/bin/zsh"})
if value := envValue(got, envTerm); value != defaultTerm {
t.Fatalf("TERM = %q, want %q", value, defaultTerm)
}
if value := envValue(got, envLANG); value == "" || !isUTF8Locale(value) {
t.Fatalf("LANG = %q, want UTF-8 locale", value)
}
}
func TestLocalShellEnvUsesLCTypeWhenLangIsNonUTF8(t *testing.T) {
got := ensureUTF8CharacterLocale([]string{"LANG=C"}, "linux")
if value := envValue(got, envLANG); value != "C" {
t.Fatalf("LANG = %q, want C", value)
}
if value := envValue(got, envLCType); value != "C.UTF-8" {
t.Fatalf("LC_CTYPE = %q, want C.UTF-8", value)
}
}
func TestLocalShellEnvOverridesNonUTF8LCAll(t *testing.T) {
got := ensureUTF8CharacterLocale([]string{"LC_ALL=C", "LANG=C"}, "darwin")
if value := envValue(got, envLCAll); value != "en_US.UTF-8" {
t.Fatalf("LC_ALL = %q, want en_US.UTF-8", value)
}
}
func TestSSHEnvVarsPreservesProfileUTF8Locale(t *testing.T) {
got := SSHEnvVars(map[string]string{
"LANG": "de_DE.UTF-8",
"FOO": "bar",
})
if got["LANG"] != "de_DE.UTF-8" {
t.Fatalf("LANG = %q, want profile value", got["LANG"])
}
if got["FOO"] != "bar" {
t.Fatalf("FOO = %q, want bar", got["FOO"])
}
if _, ok := got[envLCType]; ok {
t.Fatalf("unexpected LC_CTYPE default when LANG is already UTF-8")
}
}
func TestSSHEnvVarsPreservesProfileNonUTF8Locale(t *testing.T) {
got := SSHEnvVars(map[string]string{
envLANG: "C",
"FOO": "bar",
})
if got[envLANG] != "C" {
t.Fatalf("LANG = %q, want C", got[envLANG])
}
if _, ok := got[envLCType]; ok {
t.Fatalf("unexpected LC_CTYPE default when profile sets locale")
}
}
func TestSSHEnvVarsAddsUTF8LCTypeByDefault(t *testing.T) {
got := SSHEnvVars(map[string]string{"FOO": "bar"})
if got["FOO"] != "bar" {
t.Fatalf("FOO = %q, want bar", got["FOO"])
}
if value := got[envLCType]; value == "" || !isUTF8Locale(value) {
t.Fatalf("LC_CTYPE = %q, want UTF-8 locale", value)
}
}
func envValue(env []string, key string) string {
prefix := key + "="
for _, item := range env {
if len(item) >= len(prefix) && item[:len(prefix)] == prefix {
return item[len(prefix):]
}
}
return ""
}