Files
grafana/pkg/build/config/version_test.go
T
Dimitris Sotirakis fa4abdcce1 Grafana Build: Sync Grafana versioning changes from build-pipeline (#53522)
* Sync version changes

(cherry picked from commit fb449ba0376cd7d86928e8b08ef77a851488604b)

Sync version refactoring changes

* Update grabpl
2022-08-11 11:44:59 +03:00

97 lines
2.6 KiB
Go

package config_test
import (
"encoding/json"
"os"
"path/filepath"
"testing"
"github.com/grafana/grafana/pkg/build/config"
"github.com/stretchr/testify/require"
)
func TestGetMetadata(t *testing.T) {
tcs := []struct {
version string
mode config.ReleaseMode
}{
{"v1.2.3", config.ReleaseMode{Mode: config.TagMode}},
{"v1.2.3-12345pre", config.ReleaseMode{Mode: config.PullRequestMode}},
{"v1.2.3-beta1", config.ReleaseMode{Mode: config.TagMode, IsBeta: true}},
{"v1.2.3-test1", config.ReleaseMode{Mode: config.TagMode, IsTest: true}},
{"v1.2.3-foobar", config.ReleaseMode{Mode: config.ReleaseBranchMode}},
{"v1.2.3-foobar", config.ReleaseMode{Mode: config.PullRequestMode}},
}
t.Run("Should return empty metadata, dist/ is not present", func(t *testing.T) {
dir := t.TempDir()
metadata, err := config.GetMetadata(filepath.Join(dir, "dist"))
require.NoError(t, err)
require.Equal(t, metadata, &config.Metadata{})
if err := os.RemoveAll(dir); err != nil {
t.Fatal(err)
}
})
for _, tc := range tcs {
dir := t.TempDir()
t.Run("Should return valid metadata, tag mode, ", func(t *testing.T) {
testMetadata(t, dir, tc.version, tc.mode)
})
if err := os.RemoveAll(dir); err != nil {
t.Fatal(err)
}
}
}
func testMetadata(t *testing.T, dir string, version string, releaseMode config.ReleaseMode) {
t.Helper()
file := filepath.Join(dir, "version.json")
createVersionJSON(t, version, file, releaseMode)
metadata, err := config.GetMetadata(file)
require.NoError(t, err)
t.Run("with a valid version", func(t *testing.T) {
expVersion := metadata.GrafanaVersion
require.Equal(t, expVersion, version)
})
t.Run("with a valid release mode from the built-in list", func(t *testing.T) {
expMode := metadata.ReleaseMode
require.NoError(t, err)
require.Equal(t, expMode, releaseMode)
})
t.Run("with a valid configuration from a JSON file", func(t *testing.T) {
version, err := config.GetVersion(metadata.ReleaseMode.Mode)
require.NoError(t, err)
parsed := verModeFromConfig(t, metadata)
require.EqualValues(t, parsed, *version)
})
}
func verModeFromConfig(t *testing.T, metadata *config.Metadata) config.Version {
t.Helper()
metadataComp := config.VersionMap{}
require.NoError(t, json.Unmarshal(configJSON, &metadataComp))
return metadataComp[metadata.ReleaseMode.Mode]
}
func createVersionJSON(t *testing.T, version string, file string, releaseMode config.ReleaseMode) {
t.Helper()
metadata := &config.Metadata{
GrafanaVersion: version,
ReleaseMode: releaseMode,
}
//nolint:gosec
f, err := os.Create(file)
require.NoError(t, err)
require.NoError(t, json.NewEncoder(f).Encode(metadata))
}