88 lines
2.0 KiB
Go
88 lines
2.0 KiB
Go
// SPDX-License-Identifier: Apache-2.0
|
|
// Copyright Authors of K9s
|
|
|
|
package config
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/adrg/xdg"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
var pluginYmlTestData = Plugin{
|
|
Scopes: []string{"po", "dp"},
|
|
Args: []string{"-n", "$NAMESPACE", "-boolean"},
|
|
ShortCut: "shift-s",
|
|
Description: "blee",
|
|
Command: "duh",
|
|
Confirm: true,
|
|
Background: false,
|
|
}
|
|
|
|
var test1YmlTestData = Plugin{
|
|
Scopes: []string{"po", "dp"},
|
|
Args: []string{"-n", "$NAMESPACE", "-boolean"},
|
|
ShortCut: "shift-s",
|
|
Description: "blee",
|
|
Command: "duh",
|
|
Confirm: true,
|
|
Background: false,
|
|
}
|
|
|
|
var test2YmlTestData = Plugin{
|
|
Scopes: []string{"svc", "ing"},
|
|
Args: []string{"-n", "$NAMESPACE", "-oyaml"},
|
|
ShortCut: "shift-r",
|
|
Description: "bla",
|
|
Command: "duha",
|
|
Confirm: false,
|
|
Background: true,
|
|
}
|
|
|
|
func TestPluginLoad(t *testing.T) {
|
|
AppPluginsFile = "/tmp/k9s-test/fred.yaml"
|
|
os.Setenv("XDG_DATA_HOME", "/tmp/k9s-test")
|
|
xdg.Reload()
|
|
|
|
p := NewPlugins()
|
|
assert.NoError(t, p.Load("testdata/plugins.yaml"))
|
|
|
|
assert.Equal(t, 1, len(p.Plugins))
|
|
k, ok := p.Plugins["blah"]
|
|
assert.True(t, ok)
|
|
assert.ObjectsAreEqual(pluginYmlTestData, k)
|
|
}
|
|
|
|
func TestSinglePluginFileLoad(t *testing.T) {
|
|
p := NewPlugins()
|
|
assert.NoError(t, p.load("testdata/plugins.yaml"))
|
|
assert.NoError(t, p.loadPluginDir("/random/dir/not/exist"))
|
|
|
|
assert.Equal(t, 1, len(p.Plugins))
|
|
k, ok := p.Plugins["blah"]
|
|
assert.True(t, ok)
|
|
|
|
assert.ObjectsAreEqual(pluginYmlTestData, k)
|
|
}
|
|
|
|
func TestMultiplePluginFilesLoad(t *testing.T) {
|
|
p := NewPlugins()
|
|
assert.NoError(t, p.load("testdata/plugins.yaml"))
|
|
assert.NoError(t, p.loadPluginDir("testdata/plugins"))
|
|
|
|
testPlugins := map[string]Plugin{
|
|
"blah": pluginYmlTestData,
|
|
"test1": test1YmlTestData,
|
|
"test2": test2YmlTestData,
|
|
}
|
|
|
|
assert.Equal(t, len(testPlugins), len(p.Plugins))
|
|
for name, expectedPlugin := range testPlugins {
|
|
k, ok := p.Plugins[name]
|
|
assert.True(t, ok)
|
|
assert.ObjectsAreEqual(expectedPlugin, k)
|
|
}
|
|
}
|