mirror of
https://github.com/grafana/grafana.git
synced 2024-11-24 09:50:29 -06:00
26dfdd5af3
* installer -> repo * add semver format checking * add plugin callbacks in test * remove newline * post install only scans new directories * remove unused stuff * everything in own package * add missing cli params * make grafana version part of the API * resolve conflicts * tidy up logger * fix cli and tidy log statements * rename log package * update struct name * fix linter issue * fs -> filestore * reorder imports * alias import * fix test * fix test * inline var * revert jsonc file * make repo dep of manager * actually inject the thing * accept all args for compatability checks * accept compat from store * pass os + arch vals * don't inject fs * tidy up * tidy up * merge with main and tidy fs storage * fix test * fix packages * fix comment + field name * update fs naming * fixed wire * remove unused func * fix mocks * fix storage test * renaming * fix log line * fix test * re-order field * tidying * add test for update with same version * fix wire for CLI * remove use of ioutil * don't pass field * small tidy * ignore code scanning warn * fix testdata link * update lgtm code
95 lines
3.0 KiB
Go
95 lines
3.0 KiB
Go
package repo
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestSelectVersion(t *testing.T) {
|
|
i := &Manager{log: &fakeLogger{}}
|
|
|
|
t.Run("Should return error when requested version does not exist", func(t *testing.T) {
|
|
_, err := i.selectVersion(createPlugin(versionArg{version: "version"}), "1.1.1", CompatOpts{})
|
|
require.Error(t, err)
|
|
})
|
|
|
|
t.Run("Should return error when no version supports current arch", func(t *testing.T) {
|
|
_, err := i.selectVersion(createPlugin(versionArg{version: "version", arch: []string{"non-existent"}}), "", CompatOpts{})
|
|
require.Error(t, err)
|
|
})
|
|
|
|
t.Run("Should return error when requested version does not support current arch", func(t *testing.T) {
|
|
_, err := i.selectVersion(createPlugin(
|
|
versionArg{version: "2.0.0"},
|
|
versionArg{version: "1.1.1", arch: []string{"non-existent"}},
|
|
), "1.1.1", CompatOpts{})
|
|
require.Error(t, err)
|
|
})
|
|
|
|
t.Run("Should return latest available for arch when no version specified", func(t *testing.T) {
|
|
ver, err := i.selectVersion(createPlugin(
|
|
versionArg{version: "2.0.0", arch: []string{"non-existent"}},
|
|
versionArg{version: "1.0.0"},
|
|
), "", CompatOpts{})
|
|
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 := i.selectVersion(createPlugin(versionArg{version: "2.0.0"}, versionArg{version: "1.0.0"}), "", CompatOpts{})
|
|
require.NoError(t, err)
|
|
require.Equal(t, "2.0.0", ver.Version)
|
|
})
|
|
|
|
t.Run("Should return requested version", func(t *testing.T) {
|
|
ver, err := i.selectVersion(createPlugin(versionArg{version: "2.0.0"}, versionArg{version: "1.0.0"}), "1.0.0", CompatOpts{})
|
|
require.NoError(t, err)
|
|
require.Equal(t, "1.0.0", ver.Version)
|
|
})
|
|
}
|
|
|
|
type versionArg struct {
|
|
version string
|
|
arch []string
|
|
}
|
|
|
|
func createPlugin(versions ...versionArg) *Plugin {
|
|
p := &Plugin{
|
|
Versions: []Version{},
|
|
}
|
|
|
|
for _, version := range versions {
|
|
ver := Version{
|
|
Version: version.version,
|
|
Commit: fmt.Sprintf("commit_%s", version.version),
|
|
URL: fmt.Sprintf("url_%s", version.version),
|
|
}
|
|
if version.arch != nil {
|
|
ver.Arch = map[string]ArchMeta{}
|
|
for _, arch := range version.arch {
|
|
ver.Arch[arch] = ArchMeta{
|
|
SHA256: fmt.Sprintf("sha256_%s", arch),
|
|
}
|
|
}
|
|
}
|
|
p.Versions = append(p.Versions, ver)
|
|
}
|
|
|
|
return p
|
|
}
|
|
|
|
type fakeLogger struct{}
|
|
|
|
func (f *fakeLogger) Successf(_ string, _ ...interface{}) {}
|
|
func (f *fakeLogger) Failuref(_ string, _ ...interface{}) {}
|
|
func (f *fakeLogger) Info(_ ...interface{}) {}
|
|
func (f *fakeLogger) Infof(_ string, _ ...interface{}) {}
|
|
func (f *fakeLogger) Debug(_ ...interface{}) {}
|
|
func (f *fakeLogger) Debugf(_ string, _ ...interface{}) {}
|
|
func (f *fakeLogger) Warn(_ ...interface{}) {}
|
|
func (f *fakeLogger) Warnf(_ string, _ ...interface{}) {}
|
|
func (f *fakeLogger) Error(_ ...interface{}) {}
|
|
func (f *fakeLogger) Errorf(_ string, _ ...interface{}) {}
|