@ -3,9 +3,11 @@ package frontend
import (
"encoding/json"
"flag"
"fmt"
"os"
"testing"
"github.com/grafana/grafana/pkg/build/config"
"github.com/stretchr/testify/require"
"github.com/urfave/cli/v2"
)
@ -13,6 +15,7 @@ import (
const (
jobs = "jobs"
githubToken = "github-token"
buildID = "build-id"
)
type packageJson struct {
@ -26,41 +29,47 @@ func TestGetConfig(t *testing.T) {
ctx * cli . Context
name string
packageJsonVersion string
tagVersion string
metadata config . Metadata
wantErr bool
} {
{
ctx : cli . NewContext ( app , setFlags ( t , jobs , githubToken , flag . NewFlagSet ( "flagSet" , flag . ContinueOnError ) ) , nil ) ,
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" ,
me tadata : confi g. Metadata { Grafana Version: "10.0.0" , ReleaseMode : config . ReleaseMode { Mode : config . TagMode } } ,
wantErr : false ,
} ,
{
ctx : cli . NewContext ( app , setFlags ( t , jobs , githubToken , flag . NewFlagSet ( "flagSet" , flag . ContinueOnError ) ) , nil ) ,
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" ,
me tadata : confi g. Metadata { Grafana Version: "10.0.0" , ReleaseMode : config . ReleaseMode { Mode : config . TagMode } } ,
wantErr : true ,
} ,
{
ctx : cli . NewContext ( app , setFlags ( t , jobs , githubToken , flag . NewFlagSet ( "flagSet" , flag . ContinueOnError ) ) , nil ) ,
name : "non-tag event " ,
ctx : cli . NewContext ( app , setFlags ( t , jobs , githubToken , "" , flag . NewFlagSet ( "flagSet" , flag . ContinueOnError ) ) , nil ) ,
name : "test tag event, check should be skipped " ,
packageJsonVersion : "10.1.0" ,
tagVersion : "" ,
metadata : config . Metadata { GrafanaVersion : "10.1.0-test" , ReleaseMode : config . ReleaseMode { Mode : config . TagMode , IsTest : true } } ,
wantErr : false ,
} ,
{
ctx : cli . NewContext ( app , setFlags ( t , jobs , githubToken , buildID , flag . NewFlagSet ( "flagSet" , flag . ContinueOnError ) ) , nil ) ,
name : "non-tag event" ,
packageJsonVersion : "10.1.0-pre" ,
metadata : config . Metadata { GrafanaVersion : "10.1.0-12345pre" , ReleaseMode : config . ReleaseMode { Mode : config . PullRequestMode } } ,
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 )
got , _ , err := GetConfig ( tt . ctx , tt . metadata )
if ! tt . wantErr {
require . Equal ( t , got . PackageVersion , tt . packageJsonVersion )
fmt . Println ( got . PackageVersion + " : " + tt . metadata . GrafanaVersion )
require . Equal ( t , got . PackageVersion , tt . metadata . GrafanaVersion )
}
if tt . wantErr {
@ -71,7 +80,7 @@ func TestGetConfig(t *testing.T) {
}
}
func setFlags ( t * testing . T , flag1 , flag2 string , flagSet * flag . FlagSet ) * flag . FlagSet {
func setFlags ( t * testing . T , flag1 , flag2 , flag3 string , flagSet * flag . FlagSet ) * flag . FlagSet {
t . Helper ( )
if flag1 != "" {
flagSet . StringVar ( & flag1 , jobs , "2" , "" )
@ -79,6 +88,9 @@ func setFlags(t *testing.T, flag1, flag2 string, flagSet *flag.FlagSet) *flag.Fl
if flag2 != "" {
flagSet . StringVar ( & flag2 , githubToken , "token" , "" )
}
if flag3 != "" {
flagSet . StringVar ( & flag3 , buildID , "12345" , "" )
}
return flagSet
}
@ -91,12 +103,9 @@ func createTempPackageJson(t *testing.T, version string) error {
err := os . WriteFile ( "package.json" , file , 0644 )
require . NoError ( t , err )
t . Cleanup ( func ( ) {
err := os . RemoveAll ( "package.json" )
require . NoError ( t , err )
} )
return nil
}
func deleteTempPackageJson ( t * testing . T ) {
t . Helper ( )
err := os . RemoveAll ( "package.json" )
require . NoError ( t , err )
}