Preinstall: Allow to extend default list (#96402)
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
@@ -95,4 +96,89 @@ func Test_readPluginSettings(t *testing.T) {
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("when plugins.preinstall is defined", func(t *testing.T) {
|
||||
defaultPreinstallPluginsList := make([]InstallPlugin, 0, len(defaultPreinstallPlugins))
|
||||
defaultPreinstallPluginsIDs := []string{}
|
||||
for _, p := range defaultPreinstallPlugins {
|
||||
defaultPreinstallPluginsList = append(defaultPreinstallPluginsList, p)
|
||||
defaultPreinstallPluginsIDs = append(defaultPreinstallPluginsIDs, p.ID)
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
rawInput string
|
||||
disablePreinstall bool
|
||||
expected []InstallPlugin
|
||||
disableAsync bool
|
||||
disablePlugins string
|
||||
}{
|
||||
{
|
||||
name: "should add the default preinstalled plugin",
|
||||
rawInput: "",
|
||||
expected: defaultPreinstallPluginsList,
|
||||
},
|
||||
{
|
||||
name: "should add the default preinstalled plugin and the one defined",
|
||||
rawInput: "plugin1",
|
||||
expected: append(defaultPreinstallPluginsList, InstallPlugin{"plugin1", ""}),
|
||||
},
|
||||
{
|
||||
name: "should add the default preinstalled plugin and the one defined with version",
|
||||
rawInput: "plugin1@1.0.0",
|
||||
expected: append(defaultPreinstallPluginsList, InstallPlugin{"plugin1", "1.0.0"}),
|
||||
},
|
||||
{
|
||||
name: "it should remove the disabled plugin",
|
||||
rawInput: "plugin1",
|
||||
disablePlugins: "plugin1",
|
||||
expected: defaultPreinstallPluginsList,
|
||||
},
|
||||
{
|
||||
name: "it should remove default plugins",
|
||||
rawInput: "",
|
||||
disablePlugins: strings.Join(defaultPreinstallPluginsIDs, ","),
|
||||
expected: nil,
|
||||
},
|
||||
{
|
||||
name: "should ignore input when preinstall is disabled",
|
||||
rawInput: "plugin1",
|
||||
disablePreinstall: true,
|
||||
expected: nil,
|
||||
},
|
||||
{
|
||||
name: "should mark preinstall as sync",
|
||||
rawInput: "plugin1",
|
||||
disableAsync: true,
|
||||
expected: append(defaultPreinstallPluginsList, InstallPlugin{"plugin1", ""}),
|
||||
},
|
||||
}
|
||||
for _, tc := range tests {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
cfg := NewCfg()
|
||||
sec, err := cfg.Raw.NewSection("plugins")
|
||||
require.NoError(t, err)
|
||||
_, err = sec.NewKey("preinstall", tc.rawInput)
|
||||
require.NoError(t, err)
|
||||
if tc.disablePreinstall {
|
||||
_, err = sec.NewKey("preinstall_disabled", "true")
|
||||
require.NoError(t, err)
|
||||
}
|
||||
if tc.disableAsync {
|
||||
_, err = sec.NewKey("preinstall_async", "false")
|
||||
require.NoError(t, err)
|
||||
}
|
||||
if tc.disablePlugins != "" {
|
||||
_, err = sec.NewKey("disable_plugins", tc.disablePlugins)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
err = cfg.readPluginSettings(cfg.Raw)
|
||||
require.NoError(t, err)
|
||||
assert.ElementsMatch(t, cfg.PreinstallPlugins, tc.expected)
|
||||
if tc.disableAsync {
|
||||
require.Equal(t, cfg.PreinstallPluginsAsync, false)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user