124 lines
2.8 KiB
Go
124 lines
2.8 KiB
Go
// SPDX-License-Identifier: Apache-2.0
|
|
// Copyright Authors of K9s
|
|
|
|
package config_test
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/adrg/xdg"
|
|
"github.com/derailed/k9s/internal/config"
|
|
"github.com/derailed/k9s/internal/config/data"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestInitLogLoc(t *testing.T) {
|
|
tmp, err := config.UserTmpDir()
|
|
assert.NoError(t, err)
|
|
|
|
uu := map[string]struct {
|
|
dir string
|
|
e string
|
|
}{
|
|
"log-env": {
|
|
dir: "/tmp/test/k9s/logs",
|
|
e: "/tmp/test/k9s/logs/k9s.log",
|
|
},
|
|
"xdg-env": {
|
|
dir: "/tmp/test/xdg-state",
|
|
e: "/tmp/test/xdg-state/k9s/k9s.log",
|
|
},
|
|
"cfg-env": {
|
|
dir: "/tmp/test/k9s-test",
|
|
e: filepath.Join(tmp, "k9s.log"),
|
|
},
|
|
}
|
|
|
|
for k := range uu {
|
|
u := uu[k]
|
|
t.Run(k, func(t *testing.T) {
|
|
os.Unsetenv(config.K9sEnvLogsDir)
|
|
os.Unsetenv("XDG_STATE_HOME")
|
|
os.Unsetenv(config.K9sEnvConfigDir)
|
|
switch k {
|
|
case "log-env":
|
|
os.Setenv(config.K9sEnvLogsDir, u.dir)
|
|
case "xdg-env":
|
|
os.Setenv("XDG_STATE_HOME", u.dir)
|
|
xdg.Reload()
|
|
case "cfg-env":
|
|
os.Setenv(config.K9sEnvConfigDir, u.dir)
|
|
}
|
|
err := config.InitLogLoc()
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, u.e, config.AppLogFile)
|
|
assert.NoError(t, os.RemoveAll(config.AppLogFile))
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestEnsureBenchmarkCfg(t *testing.T) {
|
|
os.Setenv(config.K9sEnvConfigDir, "/tmp/test-config")
|
|
assert.NoError(t, config.InitLocs())
|
|
defer assert.NoError(t, os.RemoveAll("/tmp/test-config"))
|
|
|
|
assert.NoError(t, data.EnsureFullPath("/tmp/test-config/clusters/cl-1/ct-2", data.DefaultDirMod))
|
|
assert.NoError(t, os.WriteFile("/tmp/test-config/clusters/cl-1/ct-2/benchmarks.yaml", []byte{}, data.DefaultFileMod))
|
|
|
|
uu := map[string]struct {
|
|
cluster, context string
|
|
f, e string
|
|
}{
|
|
"not-exist": {
|
|
cluster: "cl-1",
|
|
context: "ct-1",
|
|
f: "/tmp/test-config/clusters/cl-1/ct-1/benchmarks.yaml",
|
|
e: "benchmarks:\n defaults:\n concurrency: 2\n requests: 200",
|
|
},
|
|
"exist": {
|
|
cluster: "cl-1",
|
|
context: "ct-2",
|
|
f: "/tmp/test-config/clusters/cl-1/ct-2/benchmarks.yaml",
|
|
},
|
|
}
|
|
|
|
for k := range uu {
|
|
u := uu[k]
|
|
t.Run(k, func(t *testing.T) {
|
|
f, err := config.EnsureBenchmarksCfgFile(u.cluster, u.context)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, u.f, f)
|
|
bb, err := os.ReadFile(f)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, u.e, string(bb))
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestSkinFileFromName(t *testing.T) {
|
|
config.AppSkinsDir = "/tmp/k9s-test/skins"
|
|
defer assert.NoError(t, os.RemoveAll("/tmp/k9s-test/skins"))
|
|
|
|
uu := map[string]struct {
|
|
n string
|
|
e string
|
|
}{
|
|
"empty": {
|
|
e: "/tmp/k9s-test/skins/stock.yaml",
|
|
},
|
|
"happy": {
|
|
n: "fred-blee",
|
|
e: "/tmp/k9s-test/skins/fred-blee.yaml",
|
|
},
|
|
}
|
|
|
|
for k := range uu {
|
|
u := uu[k]
|
|
t.Run(k, func(t *testing.T) {
|
|
assert.Equal(t, u.e, config.SkinFileFromName(u.n))
|
|
})
|
|
}
|
|
}
|