From c110f5a10e33500a40bed3da5f354b05a54e7e3f Mon Sep 17 00:00:00 2001 From: Ben Meier Date: Thu, 5 Sep 2024 16:46:55 +0100 Subject: [PATCH] fix: reject --image when multiple score files are provided Signed-off-by: Ben Meier --- main_generate.go | 4 ++-- main_generate_test.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/main_generate.go b/main_generate.go index 10ddf32..9151845 100644 --- a/main_generate.go +++ b/main_generate.go @@ -85,8 +85,8 @@ manifests. All resources and links between Workloads will be resolved and provis } state := &sd.State - if len(args) != 1 && (cmd.Flags().Lookup(generateCmdOverridesFileFlag).Changed || cmd.Flags().Lookup(generateCmdOverridePropertyFlag).Changed) { - return errors.Errorf("cannot use --%s or --%s when 0 or more than 1 score files are provided", generateCmdOverridePropertyFlag, generateCmdOverridesFileFlag) + if len(args) != 1 && (cmd.Flags().Lookup(generateCmdOverridesFileFlag).Changed || cmd.Flags().Lookup(generateCmdOverridePropertyFlag).Changed || cmd.Flags().Lookup(generateCmdImageFlag).Changed) { + return errors.Errorf("cannot use --%s, --%s, or --%s when 0 or more than 1 score files are provided", generateCmdOverridePropertyFlag, generateCmdOverridesFileFlag, generateCmdImageFlag) } slices.Sort(args) diff --git a/main_generate_test.go b/main_generate_test.go index 897f1ce..7b525b0 100644 --- a/main_generate_test.go +++ b/main_generate_test.go @@ -208,3 +208,31 @@ resources: assert.Contains(t, string(raw), string(raw2)) } + +func TestGenerateMultipleSpecsWithImage(t *testing.T) { + td := changeToTempDir(t) + stdout, _, err := executeAndResetCommand(context.Background(), rootCmd, []string{"init"}) + assert.NoError(t, err) + assert.Equal(t, "", stdout) + assert.NoError(t, os.WriteFile(filepath.Join(td, "scoreA.yaml"), []byte(` +apiVersion: score.dev/v1b1 +metadata: + name: example-a +containers: + hello: + image: foo +`), 0644)) + assert.NoError(t, os.WriteFile(filepath.Join(td, "scoreB.yaml"), []byte(` +apiVersion: score.dev/v1b1 +metadata: + name: example-b +containers: + hello: + image: foo +`), 0644)) + stdout, _, err = executeAndResetCommand(context.Background(), rootCmd, []string{ + "generate", "--image", "nginx:latest", "scoreA.yaml", "scoreB.yaml", + }) + assert.EqualError(t, err, "cannot use --override-property, --overrides-file, or --image when 0 or more than 1 score files are provided") + assert.Equal(t, "", stdout) +}