diff --git a/api/internal/plugins/utils/utils_test.go b/api/internal/plugins/utils/utils_test.go index 2beb792c9..3e9b1264f 100644 --- a/api/internal/plugins/utils/utils_test.go +++ b/api/internal/plugins/utils/utils_test.go @@ -9,6 +9,7 @@ import ( "strings" "testing" + "github.com/stretchr/testify/assert" "sigs.k8s.io/kustomize/api/filesys" "sigs.k8s.io/kustomize/api/konfig" "sigs.k8s.io/kustomize/api/provider" @@ -87,24 +88,8 @@ func TestUpdateResourceOptions(t *testing.T) { expected.Append(makeConfigMapOptions(rf, name, c.behavior, !c.needsHash)) } actual, err := UpdateResourceOptions(in) - if err != nil { - t.Fatalf("unexpected error: %v", err.Error()) - } - for i, a := range expected.Resources() { - b := actual.GetByIndex(i) - if b == nil { - t.Fatalf("resource %d missing from processed map", i) - } - if !a.Equals(b) { - t.Errorf("expected %v got %v", a, b) - } - if a.NeedHashSuffix() != b.NeedHashSuffix() { - t.Errorf("") - } - if a.Behavior() != b.Behavior() { - t.Errorf("expected %v got %v", a.Behavior(), b.Behavior()) - } - } + assert.NoError(t, err) + assert.NoError(t, expected.ErrorIfNotEqualLists(actual)) } func TestUpdateResourceOptionsWithInvalidHashAnnotationValues(t *testing.T) { diff --git a/api/internal/target/kusttarget_test.go b/api/internal/target/kusttarget_test.go index 42ab95a9a..1e011437f 100644 --- a/api/internal/target/kusttarget_test.go +++ b/api/internal/target/kusttarget_test.go @@ -8,6 +8,7 @@ import ( "reflect" "testing" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "sigs.k8s.io/kustomize/api/ifc" "sigs.k8s.io/kustomize/api/provider" @@ -243,18 +244,14 @@ metadata: t.Fatalf("unexpected error %v", err) } } + expYaml, err := expected.AsYaml() + assert.NoError(t, err) kt := makeKustTargetWithRf(t, th.GetFSys(), "/whatever", pvd) - err := kt.Load() - if err != nil { - t.Fatalf("unexpected Resources error %v", err) - } + assert.NoError(t, kt.Load()) actual, err := kt.MakeCustomizedResMap() - if err != nil { - t.Fatalf("unexpected Resources error %v", err) - } - - if err = expected.ErrorIfNotEqualLists(actual); err != nil { - t.Fatalf("unexpected inequality: %v", err) - } + assert.NoError(t, err) + actYaml, err := actual.AsYaml() + assert.NoError(t, err) + assert.Equal(t, expYaml, actYaml) } diff --git a/api/resmap/factory_test.go b/api/resmap/factory_test.go index 5050f9975..bd765036a 100644 --- a/api/resmap/factory_test.go +++ b/api/resmap/factory_test.go @@ -5,9 +5,9 @@ package resmap_test import ( "encoding/base64" - "reflect" "testing" + "github.com/stretchr/testify/assert" "sigs.k8s.io/kustomize/api/filesys" "sigs.k8s.io/kustomize/api/ifc" "sigs.k8s.io/kustomize/api/kv" @@ -60,29 +60,21 @@ metadata: "name": "dply2", "namespace": "test", }}).ResMap() + expYaml, err := expected.AsYaml() + assert.NoError(t, err) fSys := filesys.MakeFsInMemory() - err := fSys.WriteFile("deployment.yaml", []byte(resourceStr)) - if err != nil { - t.Fatal(err) - } + assert.NoError(t, fSys.WriteFile("deployment.yaml", []byte(resourceStr))) ldr, err := loader.NewLoader( loader.RestrictionRootOnly, filesys.Separator, fSys) - if err != nil { - t.Fatal(err) - } + assert.NoError(t, err) m, err := rmF.FromFile(ldr, "deployment.yaml") - if err != nil { - t.Fatal(err) - } - if m.Size() != 3 { - t.Fatalf("result should contain 3, but got %d", m.Size()) - } - if err := expected.ErrorIfNotEqualLists(m); err != nil { - t.Fatalf("actual doesn't match expected: %v", err) - } + assert.NoError(t, err) + mYaml, err := m.AsYaml() + assert.NoError(t, err) + assert.Equal(t, expYaml, mYaml) } func TestFromBytes(t *testing.T) { @@ -109,13 +101,13 @@ metadata: "metadata": map[string]interface{}{ "name": "cm2", }}).ResMap() + expYaml, err := expected.AsYaml() + assert.NoError(t, err) m, err := rmF.NewResMapFromBytes(encoded) - if err != nil { - t.Fatalf("unexpected error: %v", err) - } - if !reflect.DeepEqual(m, expected) { - t.Fatalf("%#v doesn't match expected %#v", m, expected) - } + assert.NoError(t, err) + mYaml, err := m.AsYaml() + assert.NoError(t, err) + assert.Equal(t, expYaml, mYaml) } var cmap = resid.Gvk{Version: "v1", Kind: "ConfigMap"} @@ -229,12 +221,12 @@ BAR=baz } } r, err := rmF.NewResMapFromConfigMapArgs(kvLdr, tc.input) - if err != nil { - t.Fatalf("unexpected error: %v", err) - } - if err = tc.expected.ErrorIfNotEqualLists(r); err != nil { - t.Fatalf("testcase: %q, err: %v", tc.description, err) - } + assert.NoError(t, err, tc.description) + rYaml, err := r.AsYaml() + assert.NoError(t, err, tc.description) + expYaml, err := tc.expected.AsYaml() + assert.NoError(t, err, tc.description) + assert.Equal(t, expYaml, rYaml) } } @@ -263,6 +255,8 @@ func TestNewResMapFromSecretArgs(t *testing.T) { if err != nil { t.Fatalf("unexpected error: %v", err) } + actYaml, err := actual.AsYaml() + assert.NoError(t, err) expected := resmaptest_test.NewRmBuilder(t, rf).Add( map[string]interface{}{ @@ -277,9 +271,10 @@ func TestNewResMapFromSecretArgs(t *testing.T) { "DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")), }, }).ResMap() - if err = expected.ErrorIfNotEqualLists(actual); err != nil { - t.Fatalf("error: %s", err) - } + expYaml, err := expected.AsYaml() + assert.NoError(t, err) + + assert.Equal(t, string(expYaml), string(actYaml)) } func TestFromRNodeSlice(t *testing.T) { diff --git a/api/resmap/reswrangler.go b/api/resmap/reswrangler.go index ef00d1914..f2eaf9783 100644 --- a/api/resmap/reswrangler.go +++ b/api/resmap/reswrangler.go @@ -339,10 +339,8 @@ func (m *resWrangler) ErrorIfNotEqualLists(other ResMap) error { } for i, r1 := range m.rList { r2 := m2.rList[i] - if !r1.Equals(r2) { - return fmt.Errorf( - "Item i=%d differs:\n n1 = %s\n n2 = %s\n o1 = %s\n o2 = %s\n", - i, r1.OrgId(), r2.OrgId(), r1, r2) + if err := r1.ErrIfNotEquals(r2); err != nil { + return err } } return nil diff --git a/api/resmap/reswrangler_test.go b/api/resmap/reswrangler_test.go index 3e2c7c7aa..91d82d4f9 100644 --- a/api/resmap/reswrangler_test.go +++ b/api/resmap/reswrangler_test.go @@ -10,6 +10,7 @@ import ( "strings" "testing" + "github.com/stretchr/testify/assert" "sigs.k8s.io/kustomize/api/provider" "sigs.k8s.io/kustomize/api/resid" . "sigs.k8s.io/kustomize/api/resmap" @@ -704,27 +705,16 @@ func TestAbsorbAll(t *testing.T) { Behavior: "create", })) w := makeMap1() - if err := w.AbsorbAll(makeMap2(types.BehaviorMerge)); err != nil { - t.Fatalf("unexpected error: %v", err) - } - if err := expected.ErrorIfNotEqualLists(w); err != nil { - t.Fatal(err) - } + assert.NoError(t, w.AbsorbAll(makeMap2(types.BehaviorMerge))) + assert.NoError(t, expected.ErrorIfNotEqualLists(w)) w = makeMap1() - if err := w.AbsorbAll(nil); err != nil { - t.Fatalf("unexpected error: %v", err) - } - if err := w.ErrorIfNotEqualLists(makeMap1()); err != nil { - t.Fatal(err) - } + assert.NoError(t, w.AbsorbAll(nil)) + assert.NoError(t, w.ErrorIfNotEqualLists(makeMap1())) + w = makeMap1() w2 := makeMap2(types.BehaviorReplace) - if err := w.AbsorbAll(w2); err != nil { - t.Fatalf("unexpected error: %v", err) - } - if err := w2.ErrorIfNotEqualLists(w); err != nil { - t.Fatal(err) - } + assert.NoError(t, w.AbsorbAll(w2)) + assert.NoError(t, w2.ErrorIfNotEqualLists(w)) w = makeMap1() w2 = makeMap2(types.BehaviorUnspecified) err := w.AbsorbAll(w2) diff --git a/api/resource/factory_test.go b/api/resource/factory_test.go index b53e522d8..699323d16 100644 --- a/api/resource/factory_test.go +++ b/api/resource/factory_test.go @@ -4,9 +4,10 @@ package resource_test import ( - "reflect" + "fmt" "testing" + "github.com/stretchr/testify/assert" "sigs.k8s.io/kustomize/api/filesys" "sigs.k8s.io/kustomize/api/loader" . "sigs.k8s.io/kustomize/api/resource" @@ -357,21 +358,22 @@ kind: List } for _, test := range tests { rs, err := factory.SliceFromPatches(ldr, test.input) - if test.expectedErr && err == nil { - t.Fatalf("%v: should return error", test.name) - } - if !test.expectedErr && err != nil { - t.Fatalf("%v: unexpected error: %s", test.name, err) + if err != nil { + assert.True(t, test.expectedErr, + fmt.Sprintf("in test %s, got unexpected error: %v", test.name, err)) + continue } + assert.False(t, test.expectedErr, "expected no error") if len(rs) != len(test.expectedOut) { t.Fatalf("%s: length mismatch %d != %d", test.name, len(rs), len(test.expectedOut)) } for i := range rs { - if !reflect.DeepEqual(test.expectedOut[i], rs[i]) { - t.Fatalf("%s: Got: %v\nexpected:%v", - test.name, test.expectedOut[i], rs[i]) - } + expYaml, err := test.expectedOut[i].AsYAML() + assert.NoError(t, err) + actYaml, err := rs[i].AsYAML() + assert.NoError(t, err) + assert.Equal(t, expYaml, actYaml) } } } diff --git a/api/resource/resource.go b/api/resource/resource.go index 81d24268d..a317c744a 100644 --- a/api/resource/resource.go +++ b/api/resource/resource.go @@ -5,6 +5,7 @@ package resource import ( + "fmt" "reflect" "strings" @@ -156,9 +157,25 @@ func (r *Resource) copyOtherFields(other *Resource) { r.nameSuffixes = copyStringSlice(other.nameSuffixes) } -func (r *Resource) Equals(o *Resource) bool { - return r.ReferencesEqual(o) && - reflect.DeepEqual(r.kunStr, o.kunStr) +func (r *Resource) ErrIfNotEquals(o *Resource) error { + meYaml, err := r.AsYAML() + if err != nil { + return err + } + otherYaml, err := o.AsYAML() + if err != nil { + return err + } + if !r.ReferencesEqual(o) { + return fmt.Errorf("references unequal") + } + if string(meYaml) != string(otherYaml) { + return fmt.Errorf("--- self:\n"+ + "%s\n"+ + "--- other:\n"+ + "%s\n", meYaml, otherYaml) + } + return nil } func (r *Resource) ReferencesEqual(o *Resource) bool {