Chore: Check version compatibilty when installing a plugin (#92200)

This commit is contained in:
Andres Martinez Gotor
2024-08-22 13:47:00 +02:00
committed by GitHub
parent f188da7b65
commit 1b336e94c8
7 changed files with 89 additions and 35 deletions
+31 -6
View File
@@ -8,15 +8,25 @@ import (
"github.com/grafana/grafana/pkg/plugins/log"
)
func fakeCompatOpts() CompatOpts {
return NewCompatOpts("7.0.0", "linux", "amd64")
}
func TestSelectSystemCompatibleVersion(t *testing.T) {
logger := log.NewTestPrettyLogger()
t.Run("Should return error when requested version does not exist", func(t *testing.T) {
_, err := SelectSystemCompatibleVersion(log.NewTestPrettyLogger(), createPluginVersions(versionArg{version: "version"}), "test", "1.1.1", SystemCompatOpts{})
_, err := SelectSystemCompatibleVersion(
log.NewTestPrettyLogger(),
createPluginVersions(versionArg{version: "version"}),
"test", "1.1.1", fakeCompatOpts())
require.Error(t, err)
})
t.Run("Should return error when no version supports current arch", func(t *testing.T) {
_, err := SelectSystemCompatibleVersion(logger, createPluginVersions(versionArg{version: "version", arch: []string{"non-existent"}}), "test", "", SystemCompatOpts{})
_, err := SelectSystemCompatibleVersion(
logger,
createPluginVersions(versionArg{version: "version", arch: []string{"non-existent"}}),
"test", "", fakeCompatOpts())
require.Error(t, err)
})
@@ -24,7 +34,7 @@ func TestSelectSystemCompatibleVersion(t *testing.T) {
_, err := SelectSystemCompatibleVersion(logger, createPluginVersions(
versionArg{version: "2.0.0"},
versionArg{version: "1.1.1", arch: []string{"non-existent"}},
), "test", "1.1.1", SystemCompatOpts{})
), "test", "1.1.1", fakeCompatOpts())
require.Error(t, err)
})
@@ -32,20 +42,35 @@ func TestSelectSystemCompatibleVersion(t *testing.T) {
ver, err := SelectSystemCompatibleVersion(logger, createPluginVersions(
versionArg{version: "2.0.0", arch: []string{"non-existent"}},
versionArg{version: "1.0.0"},
), "test", "", SystemCompatOpts{})
), "test", "", fakeCompatOpts())
require.NoError(t, err)
require.Equal(t, "1.0.0", ver.Version)
})
t.Run("Should return latest version when no version specified", func(t *testing.T) {
ver, err := SelectSystemCompatibleVersion(logger, createPluginVersions(versionArg{version: "2.0.0"}, versionArg{version: "1.0.0"}), "test", "", SystemCompatOpts{})
ver, err := SelectSystemCompatibleVersion(logger, createPluginVersions(
versionArg{version: "2.0.0"},
versionArg{version: "1.0.0"}),
"test", "", fakeCompatOpts())
require.NoError(t, err)
require.Equal(t, "2.0.0", ver.Version)
})
t.Run("Should return requested version", func(t *testing.T) {
ver, err := SelectSystemCompatibleVersion(logger, createPluginVersions(versionArg{version: "2.0.0"}, versionArg{version: "1.0.0"}), "test", "1.0.0", SystemCompatOpts{})
ver, err := SelectSystemCompatibleVersion(logger, createPluginVersions(
versionArg{version: "2.0.0"},
versionArg{version: "1.0.0"}),
"test", "1.0.0", fakeCompatOpts())
require.NoError(t, err)
require.Equal(t, "1.0.0", ver.Version)
})
t.Run("Should return error when requested version is not compatible", func(t *testing.T) {
isCompatible := false
_, err := SelectSystemCompatibleVersion(logger,
createPluginVersions(versionArg{version: "2.0.0", isCompatible: &isCompatible}),
"test", "2.0.0", fakeCompatOpts(),
)
require.ErrorContains(t, err, "not compatible")
})
}