mirror of
https://github.com/caddyserver/caddy.git
synced 2025-11-11 00:56:56 -05:00
another Windows fix
Signed-off-by: Mohammed Al Sahaf <msaa1990@gmail.com>
This commit is contained in:
parent
05504942d8
commit
656bfc3111
101
storage_test.go
101
storage_test.go
@ -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) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user