Merge pull request #3893 from natasha41575/fixTests

use assert statements for kustomize edit tests
This commit is contained in:
Jeff Regan
2021-05-12 16:33:27 -07:00
committed by GitHub
12 changed files with 172 additions and 501 deletions

View File

@@ -7,6 +7,7 @@ import (
"strings" "strings"
"testing" "testing"
"github.com/stretchr/testify/assert"
"sigs.k8s.io/kustomize/api/filesys" "sigs.k8s.io/kustomize/api/filesys"
"sigs.k8s.io/kustomize/kustomize/v4/commands/internal/kustfile" "sigs.k8s.io/kustomize/kustomize/v4/commands/internal/kustfile"
testutils_test "sigs.k8s.io/kustomize/kustomize/v4/commands/internal/testutils" testutils_test "sigs.k8s.io/kustomize/kustomize/v4/commands/internal/testutils"
@@ -26,19 +27,12 @@ func TestAddBaseHappyPath(t *testing.T) {
cmd := newCmdAddBase(fSys) cmd := newCmdAddBase(fSys)
args := []string{baseDirectoryPaths} args := []string{baseDirectoryPaths}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
if err != nil {
t.Errorf("unexpected cmd error: %v", err)
}
content, err := testutils_test.ReadTestKustomization(fSys) content, err := testutils_test.ReadTestKustomization(fSys)
if err != nil { assert.NoError(t, err)
t.Errorf("unexpected read error: %v", err)
}
for _, base := range bases { for _, base := range bases {
if !strings.Contains(string(content), base) { assert.Contains(t, string(content), base)
t.Errorf("expected base name in kustomization")
}
} }
} }
@@ -53,22 +47,14 @@ func TestAddBaseAlreadyThere(t *testing.T) {
cmd := newCmdAddBase(fSys) cmd := newCmdAddBase(fSys)
args := []string{baseDirectoryPaths} args := []string{baseDirectoryPaths}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
if err != nil {
t.Fatalf("unexpected cmd error: %v", err)
}
// adding an existing base should return an error // adding an existing base should return an error
err = cmd.RunE(cmd, args) assert.Error(t, cmd.RunE(cmd, args))
if err == nil {
t.Errorf("expected already there problem")
}
var expectedErrors []string var expectedErrors []string
for _, base := range bases { for _, base := range bases {
msg := "base " + base + " already in kustomization file" msg := "base " + base + " already in kustomization file"
expectedErrors = append(expectedErrors, msg) expectedErrors = append(expectedErrors, msg)
if !kustfile.StringInSlice(msg, expectedErrors) { assert.True(t, kustfile.StringInSlice(msg, expectedErrors))
t.Errorf("unexpected error %v", err)
}
} }
} }
@@ -77,10 +63,6 @@ func TestAddBaseNoArgs(t *testing.T) {
cmd := newCmdAddBase(fSys) cmd := newCmdAddBase(fSys)
err := cmd.Execute() err := cmd.Execute()
if err == nil { assert.Error(t, err)
t.Errorf("expected error: %v", err) assert.Equal(t, "must specify a base directory", err.Error())
}
if err.Error() != "must specify a base directory" {
t.Errorf("incorrect error: %v", err.Error())
}
} }

View File

@@ -4,9 +4,9 @@
package add package add
import ( import (
"strings"
"testing" "testing"
"github.com/stretchr/testify/assert"
"sigs.k8s.io/kustomize/api/filesys" "sigs.k8s.io/kustomize/api/filesys"
testutils_test "sigs.k8s.io/kustomize/kustomize/v4/commands/internal/testutils" testutils_test "sigs.k8s.io/kustomize/kustomize/v4/commands/internal/testutils"
) )
@@ -27,20 +27,11 @@ func TestAddComponentHappyPath(t *testing.T) {
cmd := newCmdAddComponent(fSys) cmd := newCmdAddComponent(fSys)
args := []string{componentFileName + "*"} args := []string{componentFileName + "*"}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
if err != nil {
t.Errorf("unexpected cmd error: %v", err)
}
content, err := testutils_test.ReadTestKustomization(fSys) content, err := testutils_test.ReadTestKustomization(fSys)
if err != nil { assert.NoError(t, err)
t.Errorf("unexpected read error: %v", err) assert.Contains(t, string(content), componentFileName)
} assert.Contains(t, string(content), componentFileName+"another")
if !strings.Contains(string(content), componentFileName) {
t.Errorf("expected component name in kustomization")
}
if !strings.Contains(string(content), componentFileName+"another") {
t.Errorf("expected component name in kustomization")
}
} }
func TestAddComponentAlreadyThere(t *testing.T) { func TestAddComponentAlreadyThere(t *testing.T) {
@@ -50,16 +41,10 @@ func TestAddComponentAlreadyThere(t *testing.T) {
cmd := newCmdAddComponent(fSys) cmd := newCmdAddComponent(fSys)
args := []string{componentFileName} args := []string{componentFileName}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
if err != nil {
t.Fatalf("unexpected cmd error: %v", err)
}
// adding an existing component doesn't return an error // adding an existing component doesn't return an error
err = cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
if err != nil {
t.Errorf("unexpected cmd error :%v", err)
}
} }
func TestAddKustomizationFileAsComponent(t *testing.T) { func TestAddKustomizationFileAsComponent(t *testing.T) {
@@ -69,19 +54,11 @@ func TestAddKustomizationFileAsComponent(t *testing.T) {
cmd := newCmdAddComponent(fSys) cmd := newCmdAddComponent(fSys)
args := []string{componentFileName} args := []string{componentFileName}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
if err != nil {
t.Fatalf("unexpected cmd error: %v", err)
}
content, err := testutils_test.ReadTestKustomization(fSys) content, err := testutils_test.ReadTestKustomization(fSys)
if err != nil { assert.NoError(t, err)
t.Errorf("unexpected read error: %v", err) assert.NotContains(t, string(content), componentFileName)
}
if strings.Contains(string(content), componentFileName) {
t.Errorf("%v shouldn't be in the list of the components", componentFileName)
}
} }
func TestAddComponentNoArgs(t *testing.T) { func TestAddComponentNoArgs(t *testing.T) {
@@ -89,10 +66,6 @@ func TestAddComponentNoArgs(t *testing.T) {
cmd := newCmdAddComponent(fSys) cmd := newCmdAddComponent(fSys)
err := cmd.Execute() err := cmd.Execute()
if err == nil { assert.Error(t, err)
t.Errorf("expected error: %v", err) assert.Equal(t, "must specify a component file", err.Error())
}
if err.Error() != "must specify a component file" {
t.Errorf("incorrect error: %v", err.Error())
}
} }

View File

@@ -4,9 +4,9 @@
package add package add
import ( import (
"strings"
"testing" "testing"
"github.com/stretchr/testify/assert"
"sigs.k8s.io/kustomize/api/filesys" "sigs.k8s.io/kustomize/api/filesys"
valtest_test "sigs.k8s.io/kustomize/api/testutils/valtest" valtest_test "sigs.k8s.io/kustomize/api/testutils/valtest"
"sigs.k8s.io/kustomize/api/types" "sigs.k8s.io/kustomize/api/types"
@@ -18,13 +18,9 @@ func makeKustomization(t *testing.T) *types.Kustomization {
fSys := filesys.MakeFsInMemory() fSys := filesys.MakeFsInMemory()
testutils_test.WriteTestKustomization(fSys) testutils_test.WriteTestKustomization(fSys)
kf, err := kustfile.NewKustomizationFile(fSys) kf, err := kustfile.NewKustomizationFile(fSys)
if err != nil { assert.NoError(t, err)
t.Errorf("unexpected new error %v", err)
}
m, err := kf.Read() m, err := kf.Read()
if err != nil { assert.NoError(t, err)
t.Errorf("unexpected read error %v", err)
}
return m return m
} }
@@ -33,21 +29,13 @@ func TestRunAddAnnotation(t *testing.T) {
o.metadata = map[string]string{"owls": "cute", "otters": "adorable"} o.metadata = map[string]string{"owls": "cute", "otters": "adorable"}
m := makeKustomization(t) m := makeKustomization(t)
err := o.addAnnotations(m) assert.NoError(t, o.addAnnotations(m))
if err != nil {
t.Errorf("unexpected error: could not write to kustomization file")
}
// adding the same test input should not work // adding the same test input should not work
err = o.addAnnotations(m) assert.Error(t, o.addAnnotations(m))
if err == nil {
t.Errorf("expected already in kustomization file error")
}
// adding new annotations should work // adding new annotations should work
o.metadata = map[string]string{"new": "annotation"} o.metadata = map[string]string{"new": "annotation"}
err = o.addAnnotations(m) assert.NoError(t, o.addAnnotations(m))
if err != nil {
t.Errorf("unexpected error: could not write to kustomization file")
}
} }
func TestAddAnnotationNoArgs(t *testing.T) { func TestAddAnnotationNoArgs(t *testing.T) {
@@ -56,12 +44,8 @@ func TestAddAnnotationNoArgs(t *testing.T) {
cmd := newCmdAddAnnotation(fSys, v.Validator) cmd := newCmdAddAnnotation(fSys, v.Validator)
err := cmd.Execute() err := cmd.Execute()
v.VerifyNoCall() v.VerifyNoCall()
if err == nil { assert.Error(t, err)
t.Errorf("expected an error") assert.Equal(t, "must specify annotation", err.Error())
}
if err.Error() != "must specify annotation" {
t.Errorf("incorrect error: %v", err.Error())
}
} }
func TestAddAnnotationInvalidFormat(t *testing.T) { func TestAddAnnotationInvalidFormat(t *testing.T) {
@@ -71,12 +55,8 @@ func TestAddAnnotationInvalidFormat(t *testing.T) {
args := []string{"whatever:whatever"} args := []string{"whatever:whatever"}
err := cmd.RunE(cmd, args) err := cmd.RunE(cmd, args)
v.VerifyCall() v.VerifyCall()
if err == nil { assert.Error(t, err)
t.Errorf("expected an error") assert.Equal(t, valtest_test.SAD, err.Error())
}
if err.Error() != valtest_test.SAD {
t.Errorf("incorrect error: %v", err.Error())
}
} }
func TestAddAnnotationManyArgs(t *testing.T) { func TestAddAnnotationManyArgs(t *testing.T) {
@@ -85,11 +65,8 @@ func TestAddAnnotationManyArgs(t *testing.T) {
v := valtest_test.MakeHappyMapValidator(t) v := valtest_test.MakeHappyMapValidator(t)
cmd := newCmdAddAnnotation(fSys, v.Validator) cmd := newCmdAddAnnotation(fSys, v.Validator)
args := []string{"k1:v1,k2:v2,k3:v3,k4:v5"} args := []string{"k1:v1,k2:v2,k3:v3,k4:v5"}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
v.VerifyCall() v.VerifyCall()
if err != nil {
t.Errorf("unexpected error: %v", err.Error())
}
} }
func TestAddAnnotationValueQuoted(t *testing.T) { func TestAddAnnotationValueQuoted(t *testing.T) {
@@ -98,11 +75,8 @@ func TestAddAnnotationValueQuoted(t *testing.T) {
v := valtest_test.MakeHappyMapValidator(t) v := valtest_test.MakeHappyMapValidator(t)
cmd := newCmdAddAnnotation(fSys, v.Validator) cmd := newCmdAddAnnotation(fSys, v.Validator)
args := []string{"k1:\"v1\""} args := []string{"k1:\"v1\""}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
v.VerifyCall() v.VerifyCall()
if err != nil {
t.Errorf("unexpected error: %v", err.Error())
}
} }
func TestAddAnnotationValueWithColon(t *testing.T) { func TestAddAnnotationValueWithColon(t *testing.T) {
@@ -111,11 +85,8 @@ func TestAddAnnotationValueWithColon(t *testing.T) {
v := valtest_test.MakeHappyMapValidator(t) v := valtest_test.MakeHappyMapValidator(t)
cmd := newCmdAddAnnotation(fSys, v.Validator) cmd := newCmdAddAnnotation(fSys, v.Validator)
args := []string{"k1:\"v1:v2\""} args := []string{"k1:\"v1:v2\""}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
v.VerifyCall() v.VerifyCall()
if err != nil {
t.Errorf("unexpected error: %v", err.Error())
}
} }
func TestAddAnnotationValueWithComma(t *testing.T) { func TestAddAnnotationValueWithComma(t *testing.T) {
@@ -125,20 +96,11 @@ func TestAddAnnotationValueWithComma(t *testing.T) {
cmd := newCmdAddAnnotation(fSys, v.Validator) cmd := newCmdAddAnnotation(fSys, v.Validator)
value := "{\"k1\":\"v1\",\"k2\":\"v2\"}" value := "{\"k1\":\"v1\",\"k2\":\"v2\"}"
args := []string{"test:" + value} args := []string{"test:" + value}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
v.VerifyCall() v.VerifyCall()
if err != nil {
t.Errorf("unexpected error: %v", err.Error())
}
b, err := fSys.ReadFile("/kustomization.yaml") b, err := fSys.ReadFile("/kustomization.yaml")
if err != nil { assert.NoError(t, err)
t.Errorf("unexpected error: %v", err.Error()) assert.Contains(t, string(b), value)
}
if !strings.Contains(string(b), value) {
t.Errorf(
"Modified file doesn't contain expected string.\nExpected string:\n%s\nActual:\n%s",
value, b)
}
} }
func TestAddAnnotationNoKey(t *testing.T) { func TestAddAnnotationNoKey(t *testing.T) {
@@ -148,12 +110,8 @@ func TestAddAnnotationNoKey(t *testing.T) {
args := []string{":nokey"} args := []string{":nokey"}
err := cmd.RunE(cmd, args) err := cmd.RunE(cmd, args)
v.VerifyNoCall() v.VerifyNoCall()
if err == nil { assert.Error(t, err)
t.Errorf("expected an error") assert.Equal(t, "invalid annotation: ':nokey' (need k:v pair where v may be quoted)", err.Error())
}
if err.Error() != "invalid annotation: ':nokey' (need k:v pair where v may be quoted)" {
t.Errorf("incorrect error: %v", err.Error())
}
} }
func TestAddAnnotationTooManyColons(t *testing.T) { func TestAddAnnotationTooManyColons(t *testing.T) {
@@ -162,11 +120,8 @@ func TestAddAnnotationTooManyColons(t *testing.T) {
v := valtest_test.MakeHappyMapValidator(t) v := valtest_test.MakeHappyMapValidator(t)
cmd := newCmdAddAnnotation(fSys, v.Validator) cmd := newCmdAddAnnotation(fSys, v.Validator)
args := []string{"key:v1:v2"} args := []string{"key:v1:v2"}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
v.VerifyCall() v.VerifyCall()
if err != nil {
t.Errorf("unexpected error: %v", err.Error())
}
} }
func TestAddAnnotationNoValue(t *testing.T) { func TestAddAnnotationNoValue(t *testing.T) {
@@ -175,11 +130,8 @@ func TestAddAnnotationNoValue(t *testing.T) {
v := valtest_test.MakeHappyMapValidator(t) v := valtest_test.MakeHappyMapValidator(t)
cmd := newCmdAddAnnotation(fSys, v.Validator) cmd := newCmdAddAnnotation(fSys, v.Validator)
args := []string{"no:,value"} args := []string{"no:,value"}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
v.VerifyCall() v.VerifyCall()
if err != nil {
t.Errorf("unexpected error: %v", err.Error())
}
} }
func TestAddAnnotationMultipleArgs(t *testing.T) { func TestAddAnnotationMultipleArgs(t *testing.T) {
@@ -188,11 +140,8 @@ func TestAddAnnotationMultipleArgs(t *testing.T) {
v := valtest_test.MakeHappyMapValidator(t) v := valtest_test.MakeHappyMapValidator(t)
cmd := newCmdAddAnnotation(fSys, v.Validator) cmd := newCmdAddAnnotation(fSys, v.Validator)
args := []string{"this:annotation", "has:spaces"} args := []string{"this:annotation", "has:spaces"}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
v.VerifyCall() v.VerifyCall()
if err != nil {
t.Errorf("unexpected error: %v", err.Error())
}
} }
func TestAddAnnotationForce(t *testing.T) { func TestAddAnnotationForce(t *testing.T) {
@@ -201,32 +150,22 @@ func TestAddAnnotationForce(t *testing.T) {
v := valtest_test.MakeHappyMapValidator(t) v := valtest_test.MakeHappyMapValidator(t)
cmd := newCmdAddAnnotation(fSys, v.Validator) cmd := newCmdAddAnnotation(fSys, v.Validator)
args := []string{"key:foo"} args := []string{"key:foo"}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
v.VerifyCall() v.VerifyCall()
if err != nil {
t.Errorf("unexpected error: %v", err.Error())
}
// trying to add the same annotation again should not work // trying to add the same annotation again should not work
args = []string{"key:bar"} args = []string{"key:bar"}
v = valtest_test.MakeHappyMapValidator(t) v = valtest_test.MakeHappyMapValidator(t)
cmd = newCmdAddAnnotation(fSys, v.Validator) cmd = newCmdAddAnnotation(fSys, v.Validator)
err = cmd.RunE(cmd, args) err := cmd.RunE(cmd, args)
v.VerifyCall() v.VerifyCall()
if err == nil { assert.Error(t, err)
t.Errorf("expected an error") assert.Equal(t, "annotation key already in kustomization file", err.Error())
}
if err.Error() != "annotation key already in kustomization file" {
t.Errorf("expected an error")
}
// but trying to add it with --force should // but trying to add it with --force should
v = valtest_test.MakeHappyMapValidator(t) v = valtest_test.MakeHappyMapValidator(t)
cmd = newCmdAddAnnotation(fSys, v.Validator) cmd = newCmdAddAnnotation(fSys, v.Validator)
cmd.Flag("force").Value.Set("true") cmd.Flag("force").Value.Set("true")
err = cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
v.VerifyCall() v.VerifyCall()
if err != nil {
t.Errorf("unexpected error: %v", err.Error())
}
} }
func TestRunAddLabel(t *testing.T) { func TestRunAddLabel(t *testing.T) {
@@ -234,21 +173,12 @@ func TestRunAddLabel(t *testing.T) {
o.metadata = map[string]string{"owls": "cute", "otters": "adorable"} o.metadata = map[string]string{"owls": "cute", "otters": "adorable"}
m := makeKustomization(t) m := makeKustomization(t)
err := o.addLabels(m) assert.NoError(t, o.addLabels(m))
if err != nil {
t.Errorf("unexpected error: could not write to kustomization file")
}
// adding the same test input should not work // adding the same test input should not work
err = o.addLabels(m) assert.Error(t, o.addLabels(m))
if err == nil {
t.Errorf("expected already in kustomization file error")
}
// adding new labels should work // adding new labels should work
o.metadata = map[string]string{"new": "label"} o.metadata = map[string]string{"new": "label"}
err = o.addLabels(m) assert.NoError(t, o.addLabels(m))
if err != nil {
t.Errorf("unexpected error: could not write to kustomization file")
}
} }
func TestAddLabelNoArgs(t *testing.T) { func TestAddLabelNoArgs(t *testing.T) {
@@ -257,12 +187,8 @@ func TestAddLabelNoArgs(t *testing.T) {
cmd := newCmdAddLabel(fSys, v.Validator) cmd := newCmdAddLabel(fSys, v.Validator)
err := cmd.Execute() err := cmd.Execute()
v.VerifyNoCall() v.VerifyNoCall()
if err == nil { assert.Error(t, err)
t.Errorf("expected an error") assert.Equal(t, "must specify label", err.Error())
}
if err.Error() != "must specify label" {
t.Errorf("incorrect error: %v", err.Error())
}
} }
func TestAddLabelInvalidFormat(t *testing.T) { func TestAddLabelInvalidFormat(t *testing.T) {
@@ -272,9 +198,7 @@ func TestAddLabelInvalidFormat(t *testing.T) {
args := []string{"exclamation!:point"} args := []string{"exclamation!:point"}
err := cmd.RunE(cmd, args) err := cmd.RunE(cmd, args)
v.VerifyCall() v.VerifyCall()
if err == nil { assert.Error(t, err)
t.Errorf("expected an error")
}
if err.Error() != valtest_test.SAD { if err.Error() != valtest_test.SAD {
t.Errorf("incorrect error: %v", err.Error()) t.Errorf("incorrect error: %v", err.Error())
} }
@@ -287,9 +211,7 @@ func TestAddLabelNoKey(t *testing.T) {
args := []string{":nokey"} args := []string{":nokey"}
err := cmd.RunE(cmd, args) err := cmd.RunE(cmd, args)
v.VerifyNoCall() v.VerifyNoCall()
if err == nil { assert.Error(t, err)
t.Errorf("expected an error")
}
if err.Error() != "invalid label: ':nokey' (need k:v pair where v may be quoted)" { if err.Error() != "invalid label: ':nokey' (need k:v pair where v may be quoted)" {
t.Errorf("incorrect error: %v", err.Error()) t.Errorf("incorrect error: %v", err.Error())
} }
@@ -301,11 +223,8 @@ func TestAddLabelTooManyColons(t *testing.T) {
v := valtest_test.MakeHappyMapValidator(t) v := valtest_test.MakeHappyMapValidator(t)
cmd := newCmdAddLabel(fSys, v.Validator) cmd := newCmdAddLabel(fSys, v.Validator)
args := []string{"key:v1:v2"} args := []string{"key:v1:v2"}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
v.VerifyCall() v.VerifyCall()
if err != nil {
t.Errorf("unexpected error: %v", err.Error())
}
} }
func TestAddLabelNoValue(t *testing.T) { func TestAddLabelNoValue(t *testing.T) {
@@ -314,11 +233,8 @@ func TestAddLabelNoValue(t *testing.T) {
v := valtest_test.MakeHappyMapValidator(t) v := valtest_test.MakeHappyMapValidator(t)
cmd := newCmdAddLabel(fSys, v.Validator) cmd := newCmdAddLabel(fSys, v.Validator)
args := []string{"no,value:"} args := []string{"no,value:"}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
v.VerifyCall() v.VerifyCall()
if err != nil {
t.Errorf("unexpected error: %v", err.Error())
}
} }
func TestAddLabelMultipleArgs(t *testing.T) { func TestAddLabelMultipleArgs(t *testing.T) {
@@ -327,11 +243,8 @@ func TestAddLabelMultipleArgs(t *testing.T) {
v := valtest_test.MakeHappyMapValidator(t) v := valtest_test.MakeHappyMapValidator(t)
cmd := newCmdAddLabel(fSys, v.Validator) cmd := newCmdAddLabel(fSys, v.Validator)
args := []string{"this:input", "has:spaces"} args := []string{"this:input", "has:spaces"}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
v.VerifyCall() v.VerifyCall()
if err != nil {
t.Errorf("unexpected error: %v", err.Error())
}
} }
func TestAddLabelForce(t *testing.T) { func TestAddLabelForce(t *testing.T) {
@@ -340,30 +253,20 @@ func TestAddLabelForce(t *testing.T) {
v := valtest_test.MakeHappyMapValidator(t) v := valtest_test.MakeHappyMapValidator(t)
cmd := newCmdAddLabel(fSys, v.Validator) cmd := newCmdAddLabel(fSys, v.Validator)
args := []string{"key:foo"} args := []string{"key:foo"}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
v.VerifyCall() v.VerifyCall()
if err != nil {
t.Errorf("unexpected error: %v", err.Error())
}
// trying to add the same label again should not work // trying to add the same label again should not work
args = []string{"key:bar"} args = []string{"key:bar"}
v = valtest_test.MakeHappyMapValidator(t) v = valtest_test.MakeHappyMapValidator(t)
cmd = newCmdAddLabel(fSys, v.Validator) cmd = newCmdAddLabel(fSys, v.Validator)
err = cmd.RunE(cmd, args) err := cmd.RunE(cmd, args)
v.VerifyCall() v.VerifyCall()
if err == nil { assert.Error(t, err)
t.Errorf("expected an error") assert.Equal(t, "label key already in kustomization file", err.Error())
}
if err.Error() != "label key already in kustomization file" {
t.Errorf("expected an error")
}
// but trying to add it with --force should // but trying to add it with --force should
v = valtest_test.MakeHappyMapValidator(t) v = valtest_test.MakeHappyMapValidator(t)
cmd = newCmdAddLabel(fSys, v.Validator) cmd = newCmdAddLabel(fSys, v.Validator)
cmd.Flag("force").Value.Set("true") cmd.Flag("force").Value.Set("true")
err = cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
v.VerifyCall() v.VerifyCall()
if err != nil {
t.Errorf("unexpected error: %v", err.Error())
}
} }

View File

@@ -7,6 +7,7 @@ import (
"strings" "strings"
"testing" "testing"
"github.com/stretchr/testify/assert"
"sigs.k8s.io/kustomize/api/filesys" "sigs.k8s.io/kustomize/api/filesys"
testutils_test "sigs.k8s.io/kustomize/kustomize/v4/commands/internal/testutils" testutils_test "sigs.k8s.io/kustomize/kustomize/v4/commands/internal/testutils"
) )
@@ -42,18 +43,11 @@ func TestAddPatchWithFilePath(t *testing.T) {
"--label-selector", labelSelector, "--label-selector", labelSelector,
} }
cmd.SetArgs(args) cmd.SetArgs(args)
err := cmd.Execute() assert.NoError(t, cmd.Execute())
if err != nil {
t.Errorf("unexpected cmd error: %v", err)
}
content, err := testutils_test.ReadTestKustomization(fSys) content, err := testutils_test.ReadTestKustomization(fSys)
if err != nil { assert.NoError(t, err)
t.Errorf("unexpected read error: %v", err)
}
for i := 1; i < len(args); i += 2 { for i := 1; i < len(args); i += 2 {
if !strings.Contains(string(content), args[i]) { assert.Contains(t, string(content), args[i])
t.Errorf("expected flag value of %s in kustomization but got\n%s", args[i-1], content)
}
} }
} }
@@ -74,18 +68,11 @@ func TestAddPatchWithPatchContent(t *testing.T) {
"--label-selector", labelSelector, "--label-selector", labelSelector,
} }
cmd.SetArgs(args) cmd.SetArgs(args)
err := cmd.Execute() assert.NoError(t, cmd.Execute())
if err != nil {
t.Errorf("unexpected cmd error: %v", err)
}
content, err := testutils_test.ReadTestKustomization(fSys) content, err := testutils_test.ReadTestKustomization(fSys)
if err != nil { assert.NoError(t, err)
t.Errorf("unexpected read error: %v", err)
}
for i := 1; i < len(args); i += 2 { for i := 1; i < len(args); i += 2 {
if !strings.Contains(string(content), strings.Trim(args[i], " \n")) { assert.Contains(t, string(content), strings.Trim(args[i], " \n"))
t.Errorf("expected flag value of %s in kustomization but got\n%s", args[i-1], content)
}
} }
} }
@@ -106,16 +93,10 @@ func TestAddPatchAlreadyThere(t *testing.T) {
"--label-selector", labelSelector, "--label-selector", labelSelector,
} }
cmd.SetArgs(args) cmd.SetArgs(args)
err := cmd.Execute() assert.NoError(t, cmd.Execute())
if err != nil {
t.Fatalf("unexpected cmd error: %v", err)
}
// adding an existing patch shouldn't return an error // adding an existing patch shouldn't return an error
err = cmd.Execute() assert.NoError(t, cmd.Execute())
if err != nil {
t.Errorf("unexpected cmd error: %v", err)
}
} }
func TestAddPatchNoArgs(t *testing.T) { func TestAddPatchNoArgs(t *testing.T) {
@@ -123,10 +104,6 @@ func TestAddPatchNoArgs(t *testing.T) {
cmd := newCmdAddPatch(fSys) cmd := newCmdAddPatch(fSys)
err := cmd.Execute() err := cmd.Execute()
if err == nil { assert.Error(t, err)
t.Errorf("expected error: %v", err) assert.Equal(t, "must provide either patch or path", err.Error())
}
if err.Error() != "must provide either patch or path" {
t.Errorf("incorrect error: %v", err.Error())
}
} }

View File

@@ -4,9 +4,9 @@
package add package add
import ( import (
"strings"
"testing" "testing"
"github.com/stretchr/testify/assert"
"sigs.k8s.io/kustomize/api/filesys" "sigs.k8s.io/kustomize/api/filesys"
testutils_test "sigs.k8s.io/kustomize/kustomize/v4/commands/internal/testutils" testutils_test "sigs.k8s.io/kustomize/kustomize/v4/commands/internal/testutils"
) )
@@ -27,20 +27,11 @@ func TestAddResourceHappyPath(t *testing.T) {
cmd := newCmdAddResource(fSys) cmd := newCmdAddResource(fSys)
args := []string{resourceFileName + "*"} args := []string{resourceFileName + "*"}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
if err != nil {
t.Errorf("unexpected cmd error: %v", err)
}
content, err := testutils_test.ReadTestKustomization(fSys) content, err := testutils_test.ReadTestKustomization(fSys)
if err != nil { assert.NoError(t, err)
t.Errorf("unexpected read error: %v", err) assert.Contains(t, string(content), resourceFileName)
} assert.Contains(t, string(content), resourceFileName+"another")
if !strings.Contains(string(content), resourceFileName) {
t.Errorf("expected resource name in kustomization")
}
if !strings.Contains(string(content), resourceFileName+"another") {
t.Errorf("expected resource name in kustomization")
}
} }
func TestAddResourceAlreadyThere(t *testing.T) { func TestAddResourceAlreadyThere(t *testing.T) {
@@ -50,16 +41,10 @@ func TestAddResourceAlreadyThere(t *testing.T) {
cmd := newCmdAddResource(fSys) cmd := newCmdAddResource(fSys)
args := []string{resourceFileName} args := []string{resourceFileName}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
if err != nil {
t.Fatalf("unexpected cmd error: %v", err)
}
// adding an existing resource doesn't return an error // adding an existing resource doesn't return an error
err = cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
if err != nil {
t.Errorf("unexpected cmd error :%v", err)
}
} }
func TestAddKustomizationFileAsResource(t *testing.T) { func TestAddKustomizationFileAsResource(t *testing.T) {
@@ -69,19 +54,12 @@ func TestAddKustomizationFileAsResource(t *testing.T) {
cmd := newCmdAddResource(fSys) cmd := newCmdAddResource(fSys)
args := []string{resourceFileName} args := []string{resourceFileName}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
if err != nil {
t.Fatalf("unexpected cmd error: %v", err)
}
content, err := testutils_test.ReadTestKustomization(fSys) content, err := testutils_test.ReadTestKustomization(fSys)
if err != nil { assert.NoError(t, err)
t.Errorf("unexpected read error: %v", err)
}
if strings.Contains(string(content), resourceFileName) { assert.NotContains(t, string(content), resourceFileName)
t.Errorf("%v shouldn't be in the list of the resources", resourceFileName)
}
} }
func TestAddResourceNoArgs(t *testing.T) { func TestAddResourceNoArgs(t *testing.T) {
@@ -89,10 +67,6 @@ func TestAddResourceNoArgs(t *testing.T) {
cmd := newCmdAddResource(fSys) cmd := newCmdAddResource(fSys)
err := cmd.Execute() err := cmd.Execute()
if err == nil { assert.Error(t, err)
t.Errorf("expected error: %v", err) assert.Equal(t, "must specify a resource file", err.Error())
}
if err.Error() != "must specify a resource file" {
t.Errorf("incorrect error: %v", err.Error())
}
} }

View File

@@ -4,10 +4,9 @@
package add package add
import ( import (
"fmt"
"strings"
"testing" "testing"
"github.com/stretchr/testify/assert"
"sigs.k8s.io/kustomize/api/filesys" "sigs.k8s.io/kustomize/api/filesys"
"sigs.k8s.io/kustomize/kustomize/v4/commands/internal/kustfile" "sigs.k8s.io/kustomize/kustomize/v4/commands/internal/kustfile"
testutils_test "sigs.k8s.io/kustomize/kustomize/v4/commands/internal/testutils" testutils_test "sigs.k8s.io/kustomize/kustomize/v4/commands/internal/testutils"
@@ -29,20 +28,11 @@ func TestAddTransformerHappyPath(t *testing.T) {
cmd := newCmdAddTransformer(fSys) cmd := newCmdAddTransformer(fSys)
args := []string{transformerFileName + "*"} args := []string{transformerFileName + "*"}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
if err != nil {
t.Errorf("unexpected cmd error: %v", err)
}
content, err := testutils_test.ReadTestKustomization(fSys) content, err := testutils_test.ReadTestKustomization(fSys)
if err != nil { assert.NoError(t, err)
t.Errorf("unexpected read error: %v", err) assert.Contains(t, string(content), transformerFileName)
} assert.Contains(t, string(content), transformerFileName+"another")
if !strings.Contains(string(content), transformerFileName) {
t.Errorf("expected transformer name in kustomization")
}
if !strings.Contains(string(content), transformerFileName+"another") {
t.Errorf("expected transformer name in kustomization")
}
} }
func TestAddTransformerAlreadyThere(t *testing.T) { func TestAddTransformerAlreadyThere(t *testing.T) {
@@ -52,30 +42,18 @@ func TestAddTransformerAlreadyThere(t *testing.T) {
cmd := newCmdAddTransformer(fSys) cmd := newCmdAddTransformer(fSys)
args := []string{transformerFileName} args := []string{transformerFileName}
err := cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
if err != nil {
t.Fatalf("unexpected cmd error: %v", err)
}
// adding an existing transformer shouldn't return an error // adding an existing transformer shouldn't return an error
err = cmd.RunE(cmd, args) assert.NoError(t, cmd.RunE(cmd, args))
if err != nil {
t.Errorf("unexpected cmd error: %v", err)
}
// There can be only one. May it be the... // There can be only one. May it be the...
mf, err := kustfile.NewKustomizationFile(fSys) mf, err := kustfile.NewKustomizationFile(fSys)
if err != nil { assert.NoError(t, err)
t.Fatalf("error retrieving kustomization file: %v", err)
}
m, err := mf.Read() m, err := mf.Read()
if err != nil { assert.NoError(t, err)
t.Fatalf("error reading kustomization file: %v", err) assert.Equal(t, 1, len(m.Transformers))
} assert.Equal(t, transformerFileName, m.Transformers[0])
if len(m.Transformers) != 1 || m.Transformers[0] != transformerFileName {
t.Errorf("expected transformers [%s]; got transformers [%s]", transformerFileName, strings.Join(m.Transformers, ","))
}
} }
func TestAddTransformerNoArgs(t *testing.T) { func TestAddTransformerNoArgs(t *testing.T) {
@@ -83,12 +61,8 @@ func TestAddTransformerNoArgs(t *testing.T) {
cmd := newCmdAddTransformer(fSys) cmd := newCmdAddTransformer(fSys)
err := cmd.Execute() err := cmd.Execute()
if err == nil { assert.Error(t, err)
t.Errorf("expected error: %v", err) assert.Equal(t, "must specify a transformer file", err.Error())
}
if err.Error() != "must specify a transformer file" {
t.Errorf("incorrect error: %v", err.Error())
}
} }
func TestAddTransformerMissingKustomizationYAML(t *testing.T) { func TestAddTransformerMissingKustomizationYAML(t *testing.T) {
@@ -99,11 +73,6 @@ func TestAddTransformerMissingKustomizationYAML(t *testing.T) {
cmd := newCmdAddTransformer(fSys) cmd := newCmdAddTransformer(fSys)
args := []string{transformerFileName + "*"} args := []string{transformerFileName + "*"}
err := cmd.RunE(cmd, args) err := cmd.RunE(cmd, args)
if err == nil { assert.Error(t, err)
t.Errorf("expected error: %v", err) assert.Equal(t, "Missing kustomization file 'kustomization.yaml'.\n", err.Error())
}
fmt.Println(err.Error())
if err.Error() != "Missing kustomization file 'kustomization.yaml'.\n" {
t.Errorf("incorrect error: %v", err.Error())
}
} }

View File

@@ -6,6 +6,7 @@ package add
import ( import (
"testing" "testing"
"github.com/stretchr/testify/assert"
"sigs.k8s.io/kustomize/api/filesys" "sigs.k8s.io/kustomize/api/filesys"
"sigs.k8s.io/kustomize/api/kv" "sigs.k8s.io/kustomize/api/kv"
"sigs.k8s.io/kustomize/api/loader" "sigs.k8s.io/kustomize/api/loader"
@@ -15,14 +16,12 @@ import (
func TestNewAddConfigMapIsNotNil(t *testing.T) { func TestNewAddConfigMapIsNotNil(t *testing.T) {
fSys := filesys.MakeFsInMemory() fSys := filesys.MakeFsInMemory()
if newCmdAddConfigMap( assert.NotNil(t, newCmdAddConfigMap(
fSys, fSys,
kv.NewLoader( kv.NewLoader(
loader.NewFileLoaderAtCwd(fSys), loader.NewFileLoaderAtCwd(fSys),
valtest_test.MakeFakeValidator()), valtest_test.MakeFakeValidator()),
nil) == nil { nil))
t.Fatal("newCmdAddConfigMap shouldn't be nil")
}
} }
func TestMakeConfigMapArgs(t *testing.T) { func TestMakeConfigMapArgs(t *testing.T) {
@@ -36,28 +35,11 @@ func TestMakeConfigMapArgs(t *testing.T) {
t.Fatal("Initial kustomization should not have any configmaps") t.Fatal("Initial kustomization should not have any configmaps")
} }
args := findOrMakeConfigMapArgs(kustomization, cmName) args := findOrMakeConfigMapArgs(kustomization, cmName)
assert.NotNil(t, args)
if args == nil { assert.Equal(t, 1, len(kustomization.ConfigMapGenerator))
t.Fatalf("args should always be non-nil") assert.Equal(t, &kustomization.ConfigMapGenerator[len(kustomization.ConfigMapGenerator)-1], args)
} assert.Equal(t, args, findOrMakeConfigMapArgs(kustomization, cmName))
assert.Equal(t, 1, len(kustomization.ConfigMapGenerator))
if len(kustomization.ConfigMapGenerator) != 1 {
t.Fatalf("Kustomization should have newly created configmap")
}
if &kustomization.ConfigMapGenerator[len(kustomization.ConfigMapGenerator)-1] != args {
t.Fatalf("Pointer address for newly inserted configmap generator should be same")
}
args2 := findOrMakeConfigMapArgs(kustomization, cmName)
if args2 != args {
t.Fatalf("should have returned an existing args with name: %v", cmName)
}
if len(kustomization.ConfigMapGenerator) != 1 {
t.Fatalf("Should not insert configmap for an existing name: %v", cmName)
}
} }
func TestMergeFlagsIntoConfigMapArgs_LiteralSources(t *testing.T) { func TestMergeFlagsIntoConfigMapArgs_LiteralSources(t *testing.T) {
@@ -69,12 +51,8 @@ func TestMergeFlagsIntoConfigMapArgs_LiteralSources(t *testing.T) {
mergeFlagsIntoGeneratorArgs( mergeFlagsIntoGeneratorArgs(
&args.GeneratorArgs, &args.GeneratorArgs,
flagsAndArgs{LiteralSources: []string{"k2=v2"}}) flagsAndArgs{LiteralSources: []string{"k2=v2"}})
if k.ConfigMapGenerator[0].LiteralSources[0] != "k1=v1" { assert.Equal(t, "k1=v1", k.ConfigMapGenerator[0].LiteralSources[0])
t.Fatalf("expected v1") assert.Equal(t, "k2=v2", k.ConfigMapGenerator[0].LiteralSources[1])
}
if k.ConfigMapGenerator[0].LiteralSources[1] != "k2=v2" {
t.Fatalf("expected v2")
}
} }
func TestMergeFlagsIntoConfigMapArgs_FileSources(t *testing.T) { func TestMergeFlagsIntoConfigMapArgs_FileSources(t *testing.T) {
@@ -86,12 +64,8 @@ func TestMergeFlagsIntoConfigMapArgs_FileSources(t *testing.T) {
mergeFlagsIntoGeneratorArgs( mergeFlagsIntoGeneratorArgs(
&args.GeneratorArgs, &args.GeneratorArgs,
flagsAndArgs{FileSources: []string{"file2"}}) flagsAndArgs{FileSources: []string{"file2"}})
if k.ConfigMapGenerator[0].FileSources[0] != "file1" { assert.Equal(t, "file1", k.ConfigMapGenerator[0].FileSources[0])
t.Fatalf("expected file1") assert.Equal(t, "file2", k.ConfigMapGenerator[0].FileSources[1])
}
if k.ConfigMapGenerator[0].FileSources[1] != "file2" {
t.Fatalf("expected file2")
}
} }
func TestMergeFlagsIntoConfigMapArgs_EnvSource(t *testing.T) { func TestMergeFlagsIntoConfigMapArgs_EnvSource(t *testing.T) {
@@ -103,12 +77,8 @@ func TestMergeFlagsIntoConfigMapArgs_EnvSource(t *testing.T) {
mergeFlagsIntoGeneratorArgs( mergeFlagsIntoGeneratorArgs(
&args.GeneratorArgs, &args.GeneratorArgs,
flagsAndArgs{EnvFileSource: "env2"}) flagsAndArgs{EnvFileSource: "env2"})
if k.ConfigMapGenerator[0].EnvSources[0] != "env1" { assert.Equal(t, "env1", k.ConfigMapGenerator[0].EnvSources[0])
t.Fatalf("expected env1") assert.Equal(t, "env2", k.ConfigMapGenerator[0].EnvSources[1])
}
if k.ConfigMapGenerator[0].EnvSources[1] != "env2" {
t.Fatalf("expected env2")
}
} }
func TestMergeFlagsIntoConfigMapArgs_Behavior(t *testing.T) { func TestMergeFlagsIntoConfigMapArgs_Behavior(t *testing.T) {
@@ -122,9 +92,7 @@ func TestMergeFlagsIntoConfigMapArgs_Behavior(t *testing.T) {
mergeFlagsIntoGeneratorArgs( mergeFlagsIntoGeneratorArgs(
&args.GeneratorArgs, &args.GeneratorArgs,
createBehaviorFlags) createBehaviorFlags)
if k.ConfigMapGenerator[0].Behavior != "create" { assert.Equal(t, "create", k.ConfigMapGenerator[0].Behavior)
t.Fatalf("expected create")
}
mergeBehaviorFlags := flagsAndArgs{ mergeBehaviorFlags := flagsAndArgs{
Behavior: "merge", Behavior: "merge",
@@ -133,9 +101,7 @@ func TestMergeFlagsIntoConfigMapArgs_Behavior(t *testing.T) {
mergeFlagsIntoGeneratorArgs( mergeFlagsIntoGeneratorArgs(
&args.GeneratorArgs, &args.GeneratorArgs,
mergeBehaviorFlags) mergeBehaviorFlags)
if k.ConfigMapGenerator[0].Behavior != "merge" { assert.Equal(t, "merge", k.ConfigMapGenerator[0].Behavior)
t.Fatalf("expected merge")
}
replaceBehaviorFlags := flagsAndArgs{ replaceBehaviorFlags := flagsAndArgs{
Behavior: "replace", Behavior: "replace",
@@ -144,7 +110,5 @@ func TestMergeFlagsIntoConfigMapArgs_Behavior(t *testing.T) {
mergeFlagsIntoGeneratorArgs( mergeFlagsIntoGeneratorArgs(
&args.GeneratorArgs, &args.GeneratorArgs,
replaceBehaviorFlags) replaceBehaviorFlags)
if k.ConfigMapGenerator[0].Behavior != "replace" { assert.Equal(t, "replace", k.ConfigMapGenerator[0].Behavior)
t.Fatalf("expected replace")
}
} }

View File

@@ -7,23 +7,20 @@ import (
"reflect" "reflect"
"testing" "testing"
"github.com/stretchr/testify/assert"
"sigs.k8s.io/kustomize/api/filesys" "sigs.k8s.io/kustomize/api/filesys"
) )
func TestDataValidation_NoName(t *testing.T) { func TestDataValidation_NoName(t *testing.T) {
fa := flagsAndArgs{} fa := flagsAndArgs{}
assert.Error(t, fa.Validate([]string{}))
if fa.Validate([]string{}) == nil {
t.Fatal("Validation should fail if no name is specified")
}
} }
func TestDataValidation_MoreThanOneName(t *testing.T) { func TestDataValidation_MoreThanOneName(t *testing.T) {
fa := flagsAndArgs{} fa := flagsAndArgs{}
if fa.Validate([]string{"name", "othername"}) == nil { assert.Error(t, fa.Validate([]string{"name", "othername"}))
t.Fatal("Validation should fail if more than one name is specified")
}
} }
func TestDataConfigValidation_Flags(t *testing.T) { func TestDataConfigValidation_Flags(t *testing.T) {
@@ -80,10 +77,11 @@ func TestDataConfigValidation_Flags(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
if test.fa.Validate([]string{"name"}) == nil && test.shouldFail { err := test.fa.Validate([]string{"name"})
t.Fatalf("Validation should fail if %s", test.name) if test.shouldFail {
} else if test.fa.Validate([]string{"name"}) != nil && !test.shouldFail { assert.Error(t, err)
t.Fatalf("Validation should succeed if %s", test.name) } else {
assert.NoError(t, err)
} }
} }
} }

View File

@@ -6,24 +6,22 @@ package add
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/api/kv" "github.com/stretchr/testify/assert"
valtest_test "sigs.k8s.io/kustomize/api/testutils/valtest"
"sigs.k8s.io/kustomize/api/filesys" "sigs.k8s.io/kustomize/api/filesys"
"sigs.k8s.io/kustomize/api/kv"
"sigs.k8s.io/kustomize/api/loader" "sigs.k8s.io/kustomize/api/loader"
valtest_test "sigs.k8s.io/kustomize/api/testutils/valtest"
"sigs.k8s.io/kustomize/api/types" "sigs.k8s.io/kustomize/api/types"
) )
func TestNewCmdAddSecretIsNotNil(t *testing.T) { func TestNewCmdAddSecretIsNotNil(t *testing.T) {
fSys := filesys.MakeFsInMemory() fSys := filesys.MakeFsInMemory()
if newCmdAddSecret( assert.NotNil(t, newCmdAddSecret(
fSys, fSys,
kv.NewLoader( kv.NewLoader(
loader.NewFileLoaderAtCwd(fSys), loader.NewFileLoaderAtCwd(fSys),
valtest_test.MakeFakeValidator()), valtest_test.MakeFakeValidator()),
nil) == nil { nil))
t.Fatal("newCmdAddSecret shouldn't be nil")
}
} }
func TestMakeSecretArgs(t *testing.T) { func TestMakeSecretArgs(t *testing.T) {
@@ -36,32 +34,13 @@ func TestMakeSecretArgs(t *testing.T) {
secretType := "Opaque" secretType := "Opaque"
if len(kustomization.SecretGenerator) != 0 { assert.Equal(t, 0, len(kustomization.SecretGenerator))
t.Fatal("Initial kustomization should not have any secrets")
}
args := findOrMakeSecretArgs(kustomization, secretName, namespace, secretType) args := findOrMakeSecretArgs(kustomization, secretName, namespace, secretType)
assert.NotNil(t, args)
if args == nil { assert.Equal(t, 1, len(kustomization.SecretGenerator))
t.Fatalf("args should always be non-nil") assert.Equal(t, args, &kustomization.SecretGenerator[len(kustomization.SecretGenerator)-1])
} assert.Equal(t, args, findOrMakeSecretArgs(kustomization, secretName, namespace, secretType))
assert.Equal(t, 1, len(kustomization.SecretGenerator))
if len(kustomization.SecretGenerator) != 1 {
t.Fatalf("Kustomization should have newly created secret")
}
if &kustomization.SecretGenerator[len(kustomization.SecretGenerator)-1] != args {
t.Fatalf("Pointer address for newly inserted secret generator should be same")
}
args2 := findOrMakeSecretArgs(kustomization, secretName, namespace, secretType)
if args2 != args {
t.Fatalf("should have returned an existing args with name: %v", secretName)
}
if len(kustomization.SecretGenerator) != 1 {
t.Fatalf("Should not insert secret for an existing name: %v", secretName)
}
} }
func TestMergeFlagsIntoSecretArgs_LiteralSources(t *testing.T) { func TestMergeFlagsIntoSecretArgs_LiteralSources(t *testing.T) {
@@ -73,12 +52,8 @@ func TestMergeFlagsIntoSecretArgs_LiteralSources(t *testing.T) {
mergeFlagsIntoGeneratorArgs( mergeFlagsIntoGeneratorArgs(
&args.GeneratorArgs, &args.GeneratorArgs,
flagsAndArgs{LiteralSources: []string{"k2=v2"}}) flagsAndArgs{LiteralSources: []string{"k2=v2"}})
if k.SecretGenerator[0].LiteralSources[0] != "k1=v1" { assert.Equal(t, "k1=v1", k.SecretGenerator[0].LiteralSources[0])
t.Fatalf("expected v1") assert.Equal(t, "k2=v2", k.SecretGenerator[0].LiteralSources[1])
}
if k.SecretGenerator[0].LiteralSources[1] != "k2=v2" {
t.Fatalf("expected v2")
}
} }
func TestMergeFlagsIntoSecretArgs_FileSources(t *testing.T) { func TestMergeFlagsIntoSecretArgs_FileSources(t *testing.T) {
@@ -90,12 +65,8 @@ func TestMergeFlagsIntoSecretArgs_FileSources(t *testing.T) {
mergeFlagsIntoGeneratorArgs( mergeFlagsIntoGeneratorArgs(
&args.GeneratorArgs, &args.GeneratorArgs,
flagsAndArgs{FileSources: []string{"file2"}}) flagsAndArgs{FileSources: []string{"file2"}})
if k.SecretGenerator[0].FileSources[0] != "file1" { assert.Equal(t, "file1", k.SecretGenerator[0].FileSources[0])
t.Fatalf("expected file1") assert.Equal(t, "file2", k.SecretGenerator[0].FileSources[1])
}
if k.SecretGenerator[0].FileSources[1] != "file2" {
t.Fatalf("expected file2")
}
} }
func TestMergeFlagsIntoSecretArgs_EnvSource(t *testing.T) { func TestMergeFlagsIntoSecretArgs_EnvSource(t *testing.T) {
@@ -107,12 +78,8 @@ func TestMergeFlagsIntoSecretArgs_EnvSource(t *testing.T) {
mergeFlagsIntoGeneratorArgs( mergeFlagsIntoGeneratorArgs(
&args.GeneratorArgs, &args.GeneratorArgs,
flagsAndArgs{EnvFileSource: "env2"}) flagsAndArgs{EnvFileSource: "env2"})
if k.SecretGenerator[0].EnvSources[0] != "env1" { assert.Equal(t, "env1", k.SecretGenerator[0].EnvSources[0])
t.Fatalf("expected env1") assert.Equal(t, "env2", k.SecretGenerator[0].EnvSources[1])
}
if k.SecretGenerator[0].EnvSources[1] != "env2" {
t.Fatalf("expected env2")
}
} }
func TestMergeFlagsIntoSecretArgs_DisableNameSuffixHash(t *testing.T) { func TestMergeFlagsIntoSecretArgs_DisableNameSuffixHash(t *testing.T) {
@@ -121,7 +88,5 @@ func TestMergeFlagsIntoSecretArgs_DisableNameSuffixHash(t *testing.T) {
mergeFlagsIntoGeneratorArgs( mergeFlagsIntoGeneratorArgs(
&args.GeneratorArgs, &args.GeneratorArgs,
flagsAndArgs{DisableNameSuffixHash: true}) flagsAndArgs{DisableNameSuffixHash: true})
if k.SecretGenerator[0].Options.DisableNameSuffixHash != true { assert.True(t, k.SecretGenerator[0].Options.DisableNameSuffixHash)
t.Fatalf("expected true")
}
} }

View File

@@ -4,10 +4,10 @@
package fix package fix
import ( import (
"strings"
"testing" "testing"
"github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp"
"github.com/stretchr/testify/assert"
"sigs.k8s.io/kustomize/api/filesys" "sigs.k8s.io/kustomize/api/filesys"
testutils_test "sigs.k8s.io/kustomize/kustomize/v4/commands/internal/testutils" testutils_test "sigs.k8s.io/kustomize/kustomize/v4/commands/internal/testutils"
) )
@@ -17,20 +17,13 @@ func TestFix(t *testing.T) {
testutils_test.WriteTestKustomizationWith(fSys, []byte(`nameprefix: some-prefix-`)) testutils_test.WriteTestKustomizationWith(fSys, []byte(`nameprefix: some-prefix-`))
cmd := NewCmdFix(fSys) cmd := NewCmdFix(fSys)
err := cmd.RunE(cmd, nil) assert.NoError(t, cmd.RunE(cmd, nil))
if err != nil {
t.Errorf("unexpected cmd error: %v", err)
}
content, err := testutils_test.ReadTestKustomization(fSys) content, err := testutils_test.ReadTestKustomization(fSys)
if err != nil { assert.NoError(t, err)
t.Errorf("unexpected read error: %v", err)
} assert.Contains(t, string(content), "apiVersion: ")
if !strings.Contains(string(content), "apiVersion: ") { assert.Contains(t, string(content), "kind: Kustomization")
t.Errorf("expected apiVersion in kustomization")
}
if !strings.Contains(string(content), "kind: Kustomization") {
t.Errorf("expected kind in kustomization")
}
} }
func TestFixOutdatedPatchesFieldTitle(t *testing.T) { func TestFixOutdatedPatchesFieldTitle(t *testing.T) {
@@ -62,20 +55,12 @@ patches:
fSys := filesys.MakeFsInMemory() fSys := filesys.MakeFsInMemory()
testutils_test.WriteTestKustomizationWith(fSys, kustomizationContentWithOutdatedPatchesFieldTitle) testutils_test.WriteTestKustomizationWith(fSys, kustomizationContentWithOutdatedPatchesFieldTitle)
cmd := NewCmdFix(fSys) cmd := NewCmdFix(fSys)
err := cmd.RunE(cmd, nil) assert.NoError(t, cmd.RunE(cmd, nil))
if err != nil {
t.Errorf("unexpected cmd error: %v", err)
}
content, err := testutils_test.ReadTestKustomization(fSys) content, err := testutils_test.ReadTestKustomization(fSys)
if err != nil { assert.NoError(t, err)
t.Errorf("unexpected read error: %v", err) assert.Contains(t, string(content), "apiVersion: ")
} assert.Contains(t, string(content), "kind: Kustomization")
if !strings.Contains(string(content), "apiVersion: ") {
t.Errorf("expected apiVersion in kustomization")
}
if !strings.Contains(string(content), "kind: Kustomization") {
t.Errorf("expected kind in kustomization")
}
if diff := cmp.Diff(expected, content); diff != "" { if diff := cmp.Diff(expected, content); diff != "" {
t.Errorf("Mismatch (-expected, +actual):\n%s", diff) t.Errorf("Mismatch (-expected, +actual):\n%s", diff)
@@ -114,20 +99,12 @@ kind: Kustomization
fSys := filesys.MakeFsInMemory() fSys := filesys.MakeFsInMemory()
testutils_test.WriteTestKustomizationWith(fSys, kustomizationContentWithOutdatedPatchesFieldTitle) testutils_test.WriteTestKustomizationWith(fSys, kustomizationContentWithOutdatedPatchesFieldTitle)
cmd := NewCmdFix(fSys) cmd := NewCmdFix(fSys)
err := cmd.RunE(cmd, nil) assert.NoError(t, cmd.RunE(cmd, nil))
if err != nil {
t.Errorf("unexpected cmd error: %v", err)
}
content, err := testutils_test.ReadTestKustomization(fSys) content, err := testutils_test.ReadTestKustomization(fSys)
if err != nil { assert.NoError(t, err)
t.Errorf("unexpected read error: %v", err) assert.Contains(t, string(content), "apiVersion: ")
} assert.Contains(t, string(content), "kind: Kustomization")
if !strings.Contains(string(content), "apiVersion: ") {
t.Errorf("expected apiVersion in kustomization")
}
if !strings.Contains(string(content), "kind: Kustomization") {
t.Errorf("expected kind in kustomization")
}
if diff := cmp.Diff(expected, content); diff != "" { if diff := cmp.Diff(expected, content); diff != "" {
t.Errorf("Mismatch (-expected, +actual):\n%s", diff) t.Errorf("Mismatch (-expected, +actual):\n%s", diff)
@@ -156,20 +133,12 @@ kind: Kustomization
fSys := filesys.MakeFsInMemory() fSys := filesys.MakeFsInMemory()
testutils_test.WriteTestKustomizationWith(fSys, kustomizationContentWithOutdatedCommonLabels) testutils_test.WriteTestKustomizationWith(fSys, kustomizationContentWithOutdatedCommonLabels)
cmd := NewCmdFix(fSys) cmd := NewCmdFix(fSys)
err := cmd.RunE(cmd, nil) assert.NoError(t, cmd.RunE(cmd, nil))
if err != nil {
t.Errorf("unexpected cmd error: %v", err)
}
content, err := testutils_test.ReadTestKustomization(fSys) content, err := testutils_test.ReadTestKustomization(fSys)
if err != nil { assert.NoError(t, err)
t.Errorf("unexpected read error: %v", err) assert.Contains(t, string(content), "apiVersion: ")
} assert.Contains(t, string(content), "kind: Kustomization")
if !strings.Contains(string(content), "apiVersion: ") {
t.Errorf("expected apiVersion in kustomization")
}
if !strings.Contains(string(content), "kind: Kustomization") {
t.Errorf("expected kind in kustomization")
}
if diff := cmp.Diff(expected, content); diff != "" { if diff := cmp.Diff(expected, content); diff != "" {
t.Errorf("Mismatch (-expected, +actual):\n%s", diff) t.Errorf("Mismatch (-expected, +actual):\n%s", diff)
@@ -190,11 +159,6 @@ labels:
testutils_test.WriteTestKustomizationWith(fSys, kustomizationContentWithOutdatedCommonLabels) testutils_test.WriteTestKustomizationWith(fSys, kustomizationContentWithOutdatedCommonLabels)
cmd := NewCmdFix(fSys) cmd := NewCmdFix(fSys)
err := cmd.RunE(cmd, nil) err := cmd.RunE(cmd, nil)
if err == nil { assert.Error(t, err)
t.Fatalf("expect error") assert.Equal(t, err.Error(), "label name 'foo' exists in both commonLabels and labels")
}
expectedErr := "label name 'foo' exists in both commonLabels and labels"
if err.Error() != expectedErr {
t.Fatalf("error message '%s' doesn't match expected", err.Error())
}
} }

View File

@@ -7,6 +7,7 @@ require (
github.com/pkg/errors v0.9.1 github.com/pkg/errors v0.9.1
github.com/spf13/cobra v1.0.0 github.com/spf13/cobra v1.0.0
github.com/spf13/pflag v1.0.5 github.com/spf13/pflag v1.0.5
github.com/stretchr/testify v1.7.0
sigs.k8s.io/kustomize/api v0.8.9 sigs.k8s.io/kustomize/api v0.8.9
sigs.k8s.io/kustomize/cmd/config v0.9.11 sigs.k8s.io/kustomize/cmd/config v0.9.11
sigs.k8s.io/kustomize/kyaml v0.10.19 sigs.k8s.io/kustomize/kyaml v0.10.19

View File

@@ -166,8 +166,9 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=