another Windows fix

Signed-off-by: Mohammed Al Sahaf <msaa1990@gmail.com>
This commit is contained in:
Mohammed Al Sahaf 2025-10-20 02:54:00 +03:00
parent 05504942d8
commit 656bfc3111
No known key found for this signature in database

View File

@ -56,67 +56,60 @@ func TestHomeDir_CrossPlatform(t *testing.T) {
}{ }{
{ {
name: "normal HOME set", name: "normal HOME set",
skipOS: []string{"windows"}, // Skip on Windows - HOME isn't typically used on Windows
envVars: map[string]string{ envVars: map[string]string{
"HOME": func() string { "HOME": "/home/user",
if runtime.GOOS == "windows" {
return "C:\\Users\\user"
}
return "/home/user"
}(),
}, },
unsetVars: []string{"HOMEDRIVE", "HOMEPATH", "USERPROFILE", "home"}, unsetVars: []string{"HOMEDRIVE", "HOMEPATH", "USERPROFILE", "home"},
expected: func() string { expected: "/home/user",
if runtime.GOOS == "windows" {
return "C:\\Users\\user"
}
return "/home/user"
}(),
}, },
{ {
name: "no environment variables", name: "no environment variables",
unsetVars: []string{"HOME", "HOMEDRIVE", "HOMEPATH", "USERPROFILE", "home"}, unsetVars: []string{"HOME", "HOMEDRIVE", "HOMEPATH", "USERPROFILE", "home"},
expected: ".", // Fallback to current directory expected: ".", // Fallback to current directory
}, },
}
// Windows-specific tests
windowsTests := []struct {
name string
envVars map[string]string
unsetVars []string
expected string
}{
{ {
name: "windows style with HOMEDRIVE and HOMEPATH", name: "windows HOMEDRIVE and HOMEPATH",
envVars: map[string]string{ envVars: map[string]string{
"HOMEDRIVE": "C:", "HOMEDRIVE": "C:",
"HOMEPATH": "\\Users\\user", "HOMEPATH": "\\Users\\user",
}, },
unsetVars: []string{"HOME", "USERPROFILE", "home"}, unsetVars: []string{"HOME", "USERPROFILE", "home"},
expected: func() string { expected: "C:\\Users\\user",
if runtime.GOOS == "windows" {
return "C:\\Users\\user"
}
return "." // Non-windows systems fall back to current dir
}(),
}, },
{ {
name: "windows style with USERPROFILE", name: "windows USERPROFILE",
envVars: map[string]string{ envVars: map[string]string{
"USERPROFILE": "C:\\Users\\user", "USERPROFILE": "C:\\Users\\user",
}, },
unsetVars: []string{"HOME", "HOMEDRIVE", "HOMEPATH", "home"}, unsetVars: []string{"HOME", "HOMEDRIVE", "HOMEPATH", "home"},
expected: func() string { expected: "C:\\Users\\user",
if runtime.GOOS == "windows" {
return "C:\\Users\\user"
}
return "."
}(),
}, },
}
// Plan9-specific tests
plan9Tests := []struct {
name string
envVars map[string]string
unsetVars []string
expected string
}{
{ {
name: "plan9 style", name: "plan9 home variable",
skipOS: []string{"windows"}, // Skip on Windows
envVars: map[string]string{ envVars: map[string]string{
"home": "/usr/user", "home": "/usr/user",
}, },
unsetVars: []string{"HOME", "HOMEDRIVE", "HOMEPATH", "USERPROFILE"}, unsetVars: []string{"HOME", "HOMEDRIVE", "HOMEPATH", "USERPROFILE"},
expected: func() string { expected: "/usr/user",
if runtime.GOOS == "plan9" {
return "/usr/user"
}
return "."
}(),
}, },
} }
@ -149,6 +142,46 @@ func TestHomeDir_CrossPlatform(t *testing.T) {
} }
}) })
} }
// Run Windows-specific tests only on Windows
if runtime.GOOS == "windows" {
for _, test := range windowsTests {
t.Run(test.name, func(t *testing.T) {
for key, value := range test.envVars {
os.Setenv(key, value)
}
for _, key := range test.unsetVars {
os.Unsetenv(key)
}
result := HomeDir()
if result != test.expected {
t.Errorf("Expected '%s', got '%s'", test.expected, result)
}
})
}
}
// Run Plan9-specific tests only on Plan9
if runtime.GOOS == "plan9" {
for _, test := range plan9Tests {
t.Run(test.name, func(t *testing.T) {
for key, value := range test.envVars {
os.Setenv(key, value)
}
for _, key := range test.unsetVars {
os.Unsetenv(key)
}
result := HomeDir()
if result != test.expected {
t.Errorf("Expected '%s', got '%s'", test.expected, result)
}
})
}
}
} }
func TestHomeDirUnsafe_EdgeCases(t *testing.T) { func TestHomeDirUnsafe_EdgeCases(t *testing.T) {