More paste fixes
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
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 ""
|
||||
}
|
||||
Reference in New Issue
Block a user