1package config
2
3import (
4 "path/filepath"
5 "testing"
6
7 "github.com/stretchr/testify/require"
8)
9
10func TestGetXDGDirs_ProdPreservesLayout(t *testing.T) {
11 home := t.TempDir()
12 t.Setenv("ENV", "")
13 t.Setenv("HOME", home)
14 t.Setenv("XDG_CONFIG_HOME", filepath.Join(home, ".config"))
15 t.Setenv("XDG_DATA_HOME", filepath.Join(home, ".local", "share"))
16 t.Setenv("XDG_STATE_HOME", filepath.Join(home, ".local", "state"))
17 t.Setenv("XDG_CACHE_HOME", filepath.Join(home, ".cache"))
18
19 dirs, err := GetXDGDirs()
20 require.NoError(t, err)
21 require.Equal(t, filepath.Join(home, ".config", appName), dirs.ConfigHome)
22 require.Equal(t, filepath.Join(home, ".local", "share", appName), dirs.DataHome)
23 require.Equal(t, filepath.Join(home, ".local", "state", appName), dirs.StateHome)
24 require.Equal(t, filepath.Join(home, ".cache", appName), dirs.CacheHome)
25}
26
27func TestGetXDGDirs_DevUsesSharedSandboxLayout(t *testing.T) {
28 wd := t.TempDir()
29 t.Chdir(wd)
30
31 t.Setenv("ENV", "dev")
32 dirs, err := GetXDGDirs()
33 require.NoError(t, err)
34 require.Equal(t, filepath.Join(wd, ".dev", appName, "config"), dirs.ConfigHome)
35 require.Equal(t, filepath.Join(wd, ".dev", appName, "data"), dirs.DataHome)
36 require.Equal(t, filepath.Join(wd, ".dev", appName, "state"), dirs.StateHome)
37 require.Equal(t, filepath.Join(wd, ".dev", appName, "cache"), dirs.CacheHome)
38
39 logDir, err := GetLogDir()
40 require.NoError(t, err)
41 require.Equal(t, filepath.Join(wd, ".dev", appName, "logs"), logDir)
42}