2023-10-03 20:07:00 +02:00
|
|
|
package cli
|
|
|
|
|
|
|
|
import (
|
2025-02-21 18:33:13 +02:00
|
|
|
goversion "go/version"
|
2023-10-03 20:07:00 +02:00
|
|
|
"os"
|
2024-11-14 19:53:00 +02:00
|
|
|
"path/filepath"
|
2024-12-24 16:34:17 +02:00
|
|
|
"runtime"
|
2023-10-03 20:07:00 +02:00
|
|
|
"testing"
|
|
|
|
|
|
|
|
"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")
|
2024-12-24 16:34:17 +02:00
|
|
|
os.Unsetenv("USERPROFILE")
|
2023-10-03 20:07:00 +02:00
|
|
|
os.Unsetenv("XDG_CONFIG_HOME")
|
|
|
|
AppFs = afero.NewMemMapFs()
|
2025-01-29 16:36:00 +03:00
|
|
|
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)
|
2024-12-24 16:34:17 +02:00
|
|
|
setHome(t, 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)
|
2024-12-24 16:34:17 +02:00
|
|
|
setHome(t, 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)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-12-24 16:34:17 +02:00
|
|
|
func setHome(t *testing.T, dir string) {
|
|
|
|
homeEnv := "HOME"
|
|
|
|
if runtime.GOOS == "windows" {
|
|
|
|
homeEnv = "USERPROFILE"
|
|
|
|
}
|
|
|
|
t.Setenv(homeEnv, dir)
|
|
|
|
}
|
|
|
|
|
2023-10-03 20:07:00 +02:00
|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|
2024-11-18 15:45:28 +02:00
|
|
|
|
|
|
|
func TestGetVersion(t *testing.T) {
|
2025-02-21 18:33:13 +02:00
|
|
|
t.Run("Development version", func(t *testing.T) {
|
|
|
|
got := getVersion(defaultBuilder, defaultDate, defaultCommit, defaultVersion)
|
|
|
|
want := "version (devel)\n"
|
|
|
|
if goversion.Compare(runtime.Version(), "go1.24") < 0 {
|
|
|
|
want = "version \n"
|
|
|
|
}
|
|
|
|
|
|
|
|
if got != want {
|
|
|
|
t.Errorf("getVersion() = %q, want %q", got, want)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
t.Run("Release version", func(t *testing.T) {
|
|
|
|
got := getVersion("builder", "2024-11-15 10:52 UTC", "7ee4500e125e2d1b12653b2c8e140fec380919b4", "v1.5.0-12-g7ee4500-dev")
|
|
|
|
want := `Version: v1.5.0-12-g7ee4500-dev
|
2024-11-18 15:45:28 +02:00
|
|
|
Commit: 7ee4500e125e2d1b12653b2c8e140fec380919b4
|
|
|
|
Built 2024-11-15 10:52 UTC by builder
|
2025-02-21 18:33:13 +02:00
|
|
|
`
|
2024-11-18 15:45:28 +02:00
|
|
|
|
2025-02-21 18:33:13 +02:00
|
|
|
if got != want {
|
|
|
|
t.Errorf("getVersion() = %q, want %q", got, want)
|
|
|
|
}
|
|
|
|
})
|
2024-11-18 15:45:28 +02:00
|
|
|
}
|