mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
NPM packages: Fail build-frontend-packages
step if package.json
and input tag differ (#70011)
* Fail if package.json version is different than the tag * Add tests * Update message * Small refactoring * Fix lint
This commit is contained in:
parent
9f7776f073
commit
a6b524fd56
@ -1,31 +1,39 @@
|
||||
package frontend
|
||||
|
||||
import (
|
||||
"github.com/urfave/cli/v2"
|
||||
"fmt"
|
||||
|
||||
"github.com/grafana/grafana/pkg/build/config"
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
const GrafanaDir = "."
|
||||
|
||||
func GetConfig(c *cli.Context, version string) (config.Config, config.Edition, error) {
|
||||
func GetConfig(c *cli.Context, inputTagVersion string) (config.Config, config.Edition, error) {
|
||||
cfg := config.Config{
|
||||
NumWorkers: c.Int("jobs"),
|
||||
GitHubToken: c.String("github-token"),
|
||||
PackageVersion: version,
|
||||
PackageVersion: inputTagVersion,
|
||||
}
|
||||
|
||||
mode := config.Edition(c.String("edition"))
|
||||
buildID := c.String("build-id")
|
||||
packageVersion, err := config.GetGrafanaVersion(buildID, GrafanaDir)
|
||||
if err != nil {
|
||||
return config.Config{}, "", cli.Exit(err.Error(), 1)
|
||||
}
|
||||
|
||||
if version == "" {
|
||||
buildID := c.String("build-id")
|
||||
var err error
|
||||
version, err = config.GetGrafanaVersion(buildID, GrafanaDir)
|
||||
cfg.PackageVersion = version
|
||||
if inputTagVersion == "" {
|
||||
cfg.PackageVersion = packageVersion
|
||||
if err != nil {
|
||||
return config.Config{}, config.EditionOSS, cli.Exit(err.Error(), 1)
|
||||
}
|
||||
return cfg, mode, err
|
||||
}
|
||||
if inputTagVersion != packageVersion {
|
||||
return config.Config{}, "", cli.Exit(fmt.Errorf("package.json version and input tag version differ %s != %s.\nPlease update package.json", packageVersion, inputTagVersion), 1)
|
||||
}
|
||||
|
||||
cfg.PackageVersion = inputTagVersion
|
||||
return cfg, mode, nil
|
||||
}
|
||||
|
102
pkg/build/frontend/config_test.go
Normal file
102
pkg/build/frontend/config_test.go
Normal file
@ -0,0 +1,102 @@
|
||||
package frontend
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
const (
|
||||
jobs = "jobs"
|
||||
githubToken = "github-token"
|
||||
)
|
||||
|
||||
type packageJson struct {
|
||||
Version string `json:"version"`
|
||||
}
|
||||
|
||||
var app = cli.NewApp()
|
||||
|
||||
func TestGetConfig(t *testing.T) {
|
||||
tests := []struct {
|
||||
ctx *cli.Context
|
||||
name string
|
||||
packageJsonVersion string
|
||||
tagVersion string
|
||||
wantErr bool
|
||||
}{
|
||||
{
|
||||
ctx: cli.NewContext(app, setFlags(t, jobs, githubToken, flag.NewFlagSet("flagSet", flag.ContinueOnError)), nil),
|
||||
name: "package.json matches tag",
|
||||
packageJsonVersion: "10.0.0",
|
||||
tagVersion: "10.0.0",
|
||||
wantErr: false,
|
||||
},
|
||||
{
|
||||
ctx: cli.NewContext(app, setFlags(t, jobs, githubToken, flag.NewFlagSet("flagSet", flag.ContinueOnError)), nil),
|
||||
name: "package.json doesn't match tag",
|
||||
packageJsonVersion: "10.1.0",
|
||||
tagVersion: "10.0.0",
|
||||
wantErr: true,
|
||||
},
|
||||
{
|
||||
ctx: cli.NewContext(app, setFlags(t, jobs, githubToken, flag.NewFlagSet("flagSet", flag.ContinueOnError)), nil),
|
||||
name: "non-tag event",
|
||||
packageJsonVersion: "10.1.0",
|
||||
tagVersion: "",
|
||||
wantErr: false,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
var context cli.Context
|
||||
err := createTempPackageJson(t, tt.packageJsonVersion)
|
||||
require.NoError(t, err)
|
||||
defer deleteTempPackageJson(t)
|
||||
|
||||
got, _, err := GetConfig(&context, tt.tagVersion)
|
||||
if !tt.wantErr {
|
||||
require.Equal(t, got.PackageVersion, tt.packageJsonVersion)
|
||||
}
|
||||
|
||||
if tt.wantErr {
|
||||
require.Equal(t, got.PackageVersion, "")
|
||||
require.Error(t, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func setFlags(t *testing.T, flag1, flag2 string, flagSet *flag.FlagSet) *flag.FlagSet {
|
||||
t.Helper()
|
||||
if flag1 != "" {
|
||||
flagSet.StringVar(&flag1, jobs, "2", "")
|
||||
}
|
||||
if flag2 != "" {
|
||||
flagSet.StringVar(&flag2, githubToken, "token", "")
|
||||
}
|
||||
return flagSet
|
||||
}
|
||||
|
||||
func createTempPackageJson(t *testing.T, version string) error {
|
||||
t.Helper()
|
||||
|
||||
data := packageJson{Version: version}
|
||||
file, _ := json.MarshalIndent(data, "", " ")
|
||||
|
||||
err := os.WriteFile("package.json", file, 0644)
|
||||
require.NoError(t, err)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func deleteTempPackageJson(t *testing.T) {
|
||||
t.Helper()
|
||||
|
||||
err := os.RemoveAll("package.json")
|
||||
require.NoError(t, err)
|
||||
}
|
Loading…
Reference in New Issue
Block a user