mugit/internal/config/config_test.go(view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
package config
import (
"os"
"path/filepath"
"testing"
"olexsmir.xyz/x/is"
)
func TestFindConfigFile(t *testing.T) {
t.Run("returns user provided path when it exists", func(t *testing.T) {
path, err := findConfigFile("testdata/hostkey")
is.Err(t, err, nil)
is.Equal(t, path, "testdata/hostkey")
})
t.Run("falls back when user path doesn't exist", func(t *testing.T) {
path, err := findConfigFile("/nonexistent/user/config.yaml")
if err != nil {
is.Err(t, err, ErrConfigNotFound)
} else {
_, statErr := os.Stat(path)
is.Err(t, statErr, nil)
}
})
t.Run("finds config in user config directory", func(t *testing.T) {
tmpDir := t.TempDir()
configDir := filepath.Join(tmpDir, "mugit")
if err := os.MkdirAll(configDir, 0o755); err != nil {
t.Fatal(err)
}
configFile := filepath.Join(configDir, "config.yaml")
if err := os.WriteFile(configFile, []byte("test"), 0o644); err != nil {
t.Fatal(err)
}
t.Setenv("XDG_CONFIG_HOME", tmpDir)
path, err := findConfigFile("")
is.Err(t, err, nil)
is.Equal(t, path, configFile)
})
t.Run("returns error when no config found anywhere", func(t *testing.T) {
t.Setenv("XDG_CONFIG_HOME", "/nonexistent")
t.Setenv("HOME", "/nonexistent")
path, err := findConfigFile("/nonexistent/config.yaml")
is.Err(t, err, ErrConfigNotFound)
is.Equal(t, path, "")
})
t.Run("prefers data directory over user config", func(t *testing.T) {
tmpDir := t.TempDir()
configDir := filepath.Join(tmpDir, "mugit")
if err := os.MkdirAll(configDir, 0o755); err != nil {
t.Fatal(err)
}
userConfigFile := filepath.Join(configDir, "config.yaml")
if err := os.WriteFile(userConfigFile, []byte("user config"), 0o644); err != nil {
t.Fatal(err)
}
t.Setenv("XDG_CONFIG_HOME", tmpDir)
path, err := findConfigFile("")
is.Err(t, err, nil)
if path == "/var/lib/mugit/config.yaml" {
_, statErr := os.Stat(path)
is.Err(t, statErr, nil)
} else {
is.Equal(t, path, userConfigFile)
}
})
}
|