2023-10-03 20:07:00 +02:00
|
|
|
package cli
|
|
|
|
|
|
|
|
import (
|
|
|
|
"os"
|
2024-11-14 19:53:00 +02:00
|
|
|
"path/filepath"
|
2023-10-03 20:07:00 +02:00
|
|
|
"testing"
|
|
|
|
|
2024-11-04 16:36:18 +02:00
|
|
|
"github.com/mitchellh/go-homedir"
|
2023-10-03 20:07:00 +02:00
|
|
|
"github.com/spf13/afero"
|
|
|
|
)
|
|
|
|
|
2023-11-02 18:07:46 +02:00
|
|
|
func TestMain(m *testing.M) {
|
2023-10-03 20:07:00 +02:00
|
|
|
os.Unsetenv("HOME")
|
|
|
|
os.Unsetenv("XDG_CONFIG_HOME")
|
|
|
|
AppFs = afero.NewMemMapFs()
|
2024-11-04 16:36:18 +02:00
|
|
|
homedir.DisableCache = true
|
2023-11-02 18:07:46 +02:00
|
|
|
os.Exit(m.Run())
|
2023-10-03 20:07:00 +02:00
|
|
|
}
|
|
|
|
|
2024-11-04 16:36:18 +02:00
|
|
|
func TestXDGConfigDirIsPreferredFirst(t *testing.T) {
|
2023-11-02 18:07:46 +02:00
|
|
|
t.Cleanup(func() {
|
|
|
|
// reset fs after test
|
|
|
|
AppFs = afero.NewMemMapFs()
|
|
|
|
})
|
2023-10-03 20:07:00 +02:00
|
|
|
|
2024-11-14 19:53:00 +02:00
|
|
|
xdgDirPath := filepath.FromSlash("/tmp-iofs/xdg/config")
|
|
|
|
homeDirPath := filepath.FromSlash("/tmp-iofs/home/tester")
|
2023-10-03 20:07:00 +02:00
|
|
|
AppFs.MkdirAll(xdgDirPath, 0755)
|
|
|
|
AppFs.MkdirAll(homeDirPath, 0755)
|
|
|
|
|
2024-11-14 19:53:00 +02:00
|
|
|
afero.WriteFile(AppFs, filepath.Join(xdgDirPath, "revive.toml"), []byte("\n"), 0644)
|
2023-11-02 18:07:46 +02:00
|
|
|
t.Setenv("XDG_CONFIG_HOME", xdgDirPath)
|
2023-10-03 20:07:00 +02:00
|
|
|
|
2024-11-14 19:53:00 +02:00
|
|
|
afero.WriteFile(AppFs, filepath.Join(homeDirPath, "revive.toml"), []byte("\n"), 0644)
|
2023-11-02 18:07:46 +02:00
|
|
|
t.Setenv("HOME", homeDirPath)
|
2023-10-03 20:07:00 +02:00
|
|
|
|
|
|
|
got := buildDefaultConfigPath()
|
2024-11-14 19:53:00 +02:00
|
|
|
want := filepath.Join(xdgDirPath, "revive.toml")
|
2023-10-03 20:07:00 +02:00
|
|
|
|
|
|
|
if got != want {
|
|
|
|
t.Errorf("got %q, wanted %q", got, want)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHomeConfigDir(t *testing.T) {
|
2024-11-04 16:36:18 +02:00
|
|
|
t.Cleanup(func() { AppFs = afero.NewMemMapFs() })
|
2024-11-14 19:53:00 +02:00
|
|
|
homeDirPath := filepath.FromSlash("/tmp-iofs/home/tester")
|
2023-10-03 20:07:00 +02:00
|
|
|
AppFs.MkdirAll(homeDirPath, 0755)
|
|
|
|
|
2024-11-14 19:53:00 +02:00
|
|
|
afero.WriteFile(AppFs, filepath.Join(homeDirPath, "revive.toml"), []byte("\n"), 0644)
|
2023-11-02 18:07:46 +02:00
|
|
|
t.Setenv("HOME", homeDirPath)
|
2023-10-03 20:07:00 +02:00
|
|
|
|
|
|
|
got := buildDefaultConfigPath()
|
2024-11-14 19:53:00 +02:00
|
|
|
want := filepath.Join(homeDirPath, "revive.toml")
|
2023-10-03 20:07:00 +02:00
|
|
|
|
|
|
|
if got != want {
|
|
|
|
t.Errorf("got %q, wanted %q", got, want)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestXDGConfigDir(t *testing.T) {
|
2024-11-04 16:36:18 +02:00
|
|
|
t.Cleanup(func() { AppFs = afero.NewMemMapFs() })
|
2024-11-14 19:53:00 +02:00
|
|
|
xdgDirPath := filepath.FromSlash("/tmp-iofs/xdg/config")
|
2023-10-03 20:07:00 +02:00
|
|
|
AppFs.MkdirAll(xdgDirPath, 0755)
|
|
|
|
|
2024-11-14 19:53:00 +02:00
|
|
|
afero.WriteFile(AppFs, filepath.Join(xdgDirPath, "revive.toml"), []byte("\n"), 0644)
|
2023-11-02 18:07:46 +02:00
|
|
|
t.Setenv("XDG_CONFIG_HOME", xdgDirPath)
|
2023-10-03 20:07:00 +02:00
|
|
|
|
|
|
|
got := buildDefaultConfigPath()
|
2024-11-14 19:53:00 +02:00
|
|
|
want := filepath.Join(xdgDirPath, "revive.toml")
|
2023-10-03 20:07:00 +02:00
|
|
|
|
|
|
|
if got != want {
|
|
|
|
t.Errorf("got %q, wanted %q", got, want)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestXDGConfigDirNoFile(t *testing.T) {
|
2024-11-04 16:36:18 +02:00
|
|
|
t.Cleanup(func() { AppFs = afero.NewMemMapFs() })
|
2024-11-14 19:53:00 +02:00
|
|
|
xdgDirPath := filepath.FromSlash("/tmp-iofs/xdg/config")
|
2023-11-02 18:07:46 +02:00
|
|
|
t.Setenv("XDG_CONFIG_HOME", xdgDirPath)
|
2023-10-03 20:07:00 +02:00
|
|
|
|
|
|
|
got := buildDefaultConfigPath()
|
2024-11-04 16:36:18 +02:00
|
|
|
want := ""
|
2023-10-03 20:07:00 +02:00
|
|
|
|
|
|
|
if got != want {
|
|
|
|
t.Errorf("got %q, wanted %q", got, want)
|
|
|
|
}
|
|
|
|
}
|