Use require for Error and NoError

Assert keeps going after failure, but require immediately fails
the tests, making it easier to find the output related to the test
failure, rather than having to comb through a bunch of subsequent
assertion failures. For equality tests, we may or may not want to
continue, but for error checks we almost always want to immediately
fail the test. Exceptions can be changed as-needed.
This commit is contained in:
Karl Isenberg
2024-03-20 13:19:18 -07:00
parent a6ea3e2bb6
commit 43868688d5
53 changed files with 751 additions and 721 deletions

View File

@@ -11,6 +11,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"sigs.k8s.io/kustomize/api/filters/labels"
"sigs.k8s.io/kustomize/api/provider"
. "sigs.k8s.io/kustomize/api/resmap"
@@ -891,21 +892,21 @@ func TestAbsorbAll(t *testing.T) {
}
expected := rmF.FromResource(r)
w := makeMap1(t)
assert.NoError(t, w.AbsorbAll(makeMap2(t, types.BehaviorMerge)))
require.NoError(t, w.AbsorbAll(makeMap2(t, types.BehaviorMerge)))
expected.RemoveBuildAnnotations()
w.RemoveBuildAnnotations()
assert.NoError(t, expected.ErrorIfNotEqualLists(w))
require.NoError(t, expected.ErrorIfNotEqualLists(w))
w = makeMap1(t)
assert.NoError(t, w.AbsorbAll(nil))
assert.NoError(t, w.ErrorIfNotEqualLists(makeMap1(t)))
require.NoError(t, w.AbsorbAll(nil))
require.NoError(t, w.ErrorIfNotEqualLists(makeMap1(t)))
w = makeMap1(t)
w2 := makeMap2(t, types.BehaviorReplace)
assert.NoError(t, w.AbsorbAll(w2))
require.NoError(t, w.AbsorbAll(w2))
w2.RemoveBuildAnnotations()
assert.NoError(t, w2.ErrorIfNotEqualLists(w))
require.NoError(t, w2.ErrorIfNotEqualLists(w))
err = makeMap1(t).AbsorbAll(makeMap2(t, types.BehaviorUnspecified))
assert.Error(t, err)
require.Error(t, err)
assert.True(
t, strings.Contains(err.Error(), "behavior must be merge or replace"))
}
@@ -957,10 +958,10 @@ data:
feeling: *color-used
`
rm, err := rmF.NewResMapFromBytes([]byte(input))
assert.NoError(t, err)
assert.NoError(t, rm.DeAnchor())
require.NoError(t, err)
require.NoError(t, rm.DeAnchor())
yaml, err := rm.AsYaml()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, strings.TrimSpace(`
apiVersion: v1
data:
@@ -991,10 +992,10 @@ spec:
<<: *probe
`
rm, err := rmF.NewResMapFromBytes([]byte(input))
assert.NoError(t, err)
assert.NoError(t, rm.DeAnchor())
require.NoError(t, err)
require.NoError(t, rm.DeAnchor())
yaml, err := rm.AsYaml()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, strings.TrimSpace(`apiVersion: apps/v1
kind: Deployment
metadata:
@@ -1038,7 +1039,7 @@ data:
feeling: *color-used
`
_, err := rmF.NewResMapFromBytes([]byte(input))
assert.Error(t, err)
require.Error(t, err)
assert.Contains(t, err.Error(), "unknown anchor 'color-used' referenced")
}
@@ -1065,10 +1066,10 @@ items:
feeling: *color-used
`
rm, err := rmF.NewResMapFromBytes([]byte(input))
assert.NoError(t, err)
assert.NoError(t, rm.DeAnchor())
require.NoError(t, err)
require.NoError(t, rm.DeAnchor())
yaml, err := rm.AsYaml()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, strings.TrimSpace(`
apiVersion: v1
data:
@@ -1301,11 +1302,11 @@ spec:
tc := tests[n]
t.Run(n, func(t *testing.T) {
m, err := rmF.NewResMapFromBytes([]byte(strings.Join(tc.base, "\n---\n")))
assert.NoError(t, err)
require.NoError(t, err)
foundError := false
for _, patch := range tc.patches {
rp, err := rf.FromBytes([]byte(patch))
assert.NoError(t, err)
require.NoError(t, err)
idSet := resource.MakeIdSet([]*resource.Resource{rp})
if err = m.ApplySmPatch(idSet, rp); err != nil {
foundError = true
@@ -1320,7 +1321,7 @@ spec:
assert.False(t, tc.errorExpected)
m.RemoveBuildAnnotations()
yml, err := m.AsYaml()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, strings.Join(tc.expected, "---\n"), string(yml))
})
}
@@ -1509,8 +1510,8 @@ metadata:
tc := tests[name]
t.Run(name, func(t *testing.T) {
m, err := rmF.NewResMapFromBytes([]byte(tc.input))
assert.NoError(t, err)
assert.NoError(t, m.ApplyFilter(tc.f))
require.NoError(t, err)
require.NoError(t, m.ApplyFilter(tc.f))
kusttest_test.AssertActualEqualsExpectedWithTweak(
t, m, nil, tc.expected)
})
@@ -1604,16 +1605,16 @@ $patch: delete
tc := tests[name]
t.Run(name, func(t *testing.T) {
m, err := rmF.NewResMapFromBytes([]byte(target))
assert.NoError(t, err, name)
require.NoError(t, err, name)
idSet := resource.MakeIdSet(m.Resources())
assert.Equal(t, 1, idSet.Size(), name)
p, err := rf.FromBytes([]byte(tc.patch))
assert.NoError(t, err, name)
assert.NoError(t, m.ApplySmPatch(idSet, p), name)
require.NoError(t, err, name)
require.NoError(t, m.ApplySmPatch(idSet, p), name)
assert.Equal(t, tc.finalMapSize, m.Size(), name)
m.RemoveBuildAnnotations()
yml, err := m.AsYaml()
assert.NoError(t, err, name)
require.NoError(t, err, name)
assert.Equal(t, tc.expected, string(yml), name)
})
}
@@ -1622,28 +1623,28 @@ $patch: delete
func TestOriginAnnotations(t *testing.T) {
w := New()
for i := 0; i < 3; i++ {
assert.NoError(t, w.Append(makeCm(i)))
require.NoError(t, w.Append(makeCm(i)))
}
// this should add an origin annotation to every resource
assert.NoError(t, w.AddOriginAnnotation(origin1))
require.NoError(t, w.AddOriginAnnotation(origin1))
resources := w.Resources()
for _, res := range resources {
or, err := res.GetOrigin()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, origin1, or)
}
// this should not overwrite the existing origin annotations
assert.NoError(t, w.AddOriginAnnotation(origin2))
require.NoError(t, w.AddOriginAnnotation(origin2))
for _, res := range resources {
or, err := res.GetOrigin()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, origin1, or)
}
// this should remove origin annotations from all resources
assert.NoError(t, w.RemoveOriginAnnotations())
require.NoError(t, w.RemoveOriginAnnotations())
for _, res := range resources {
or, err := res.GetOrigin()
assert.NoError(t, err)
require.NoError(t, err)
assert.Nil(t, or)
}
}
@@ -1651,31 +1652,31 @@ func TestOriginAnnotations(t *testing.T) {
func TestTransformerAnnotations(t *testing.T) {
w := New()
for i := 0; i < 3; i++ {
assert.NoError(t, w.Append(makeCm(i)))
require.NoError(t, w.Append(makeCm(i)))
}
// this should add an origin annotation to every resource
assert.NoError(t, w.AddTransformerAnnotation(origin1))
require.NoError(t, w.AddTransformerAnnotation(origin1))
resources := w.Resources()
for _, res := range resources {
or, err := res.GetOrigin()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, origin1, or)
}
// this should add a transformer annotation to every resource
assert.NoError(t, w.AddTransformerAnnotation(origin2))
require.NoError(t, w.AddTransformerAnnotation(origin2))
for _, res := range resources {
or, err := res.GetOrigin()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, origin1, or)
tr, err := res.GetTransformations()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, resource.Transformations{origin2}, tr)
}
// remove transformer annotations from all resources
assert.NoError(t, w.RemoveTransformerAnnotations())
require.NoError(t, w.RemoveTransformerAnnotations())
for _, res := range resources {
tr, err := res.GetTransformations()
assert.NoError(t, err)
require.NoError(t, err)
assert.Nil(t, tr)
}
}