diff --git a/Makefile b/Makefile index a9446c9a7..a81dfd3fb 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # borrowed from https://github.com/technosophos/helm-template -HELM_VERSION := 3.16.3 +HELM_VERSION := 3.16.4 VERSION := $(shell sed -n -e 's/version:[ "]*\([^"]*\).*/\1/p' plugin.yaml) DIST := ./_dist LDFLAGS := "-X main.version=${VERSION} -extldflags '-static'" @@ -47,11 +47,11 @@ install-dbg: bootstrap build-debug plugin-dir hookInstall: bootstrap build .PHONY: unittest -unittest: ## Run unit tests +unittest: build ## Run unit tests go test ./... -v -cover .PHONY: test-coverage -test-coverage: ## Test coverage with open report in default browser +test-coverage: build ## Test coverage with open report in default browser @go test -cover -coverprofile=cover.out -v ./... @go tool cover -html=cover.out @@ -60,7 +60,7 @@ build-debug: ## Compile packages and dependencies with debug flag go build -o untt-dbg -gcflags "all=-N -l" ./cmd/helm-unittest .PHONY: build -build: unittest ## Compile packages and dependencies +build: ## Compile packages and dependencies go build -o untt -ldflags $(LDFLAGS) ./cmd/helm-unittest .PHONY: dist diff --git a/internal/common/utilities.go b/internal/common/utilities.go index 37e019d65..8506b0891 100644 --- a/internal/common/utilities.go +++ b/internal/common/utilities.go @@ -63,12 +63,6 @@ func YmlUnmarshal(in string, out interface{}) error { return err } -func YmlUnmarshalTestHelper(input string, out any, t *testing.T) { - t.Helper() - err := YmlUnmarshal(input, out) - assert.NoError(t, err) -} - func YmlMarshall(in interface{}) (string, error) { out, err := yaml.Marshal(in) if err != nil { @@ -77,6 +71,12 @@ func YmlMarshall(in interface{}) (string, error) { return string(out), nil } +func YmlUnmarshalTestHelper(input string, out any, t *testing.T) { + t.Helper() + err := YmlUnmarshal(input, out) + assert.NoError(t, err) +} + func YmlMarshallTestHelper(in interface{}, t *testing.T) string { t.Helper() out, err := yaml.Marshal(in) diff --git a/pkg/unittest/.snapshots/TestV3RunnerOkWithAbsoluteOverrideValuesPassedTests b/pkg/unittest/.snapshots/TestV3RunnerOkWithAbsoluteOverrideValuesPassedTests index 1c8cd1800..d2f39864f 100644 --- a/pkg/unittest/.snapshots/TestV3RunnerOkWithAbsoluteOverrideValuesPassedTests +++ b/pkg/unittest/.snapshots/TestV3RunnerOkWithAbsoluteOverrideValuesPassedTests @@ -19,7 +19,7 @@ Charts: 1 passed, 1 total Test Suites: 13 passed, 13 total -Tests: 40 passed, 40 total +Tests: 41 passed, 41 total Snapshot: 4 passed, 4 total Time: XX.XXXms diff --git a/pkg/unittest/.snapshots/TestV3RunnerOkWithFailedTests b/pkg/unittest/.snapshots/TestV3RunnerOkWithFailedTests index 16b1f84af..aaaa0e5c7 100644 --- a/pkg/unittest/.snapshots/TestV3RunnerOkWithFailedTests +++ b/pkg/unittest/.snapshots/TestV3RunnerOkWithFailedTests @@ -285,19 +285,6 @@ Actual: 2 - - asserts[13] `matchSnapshot` fail - Template: basic/templates/deployment.yaml - DocumentIndex: 0 - ValuesIndex: 0 - Path: spec - Expected to match snapshot 1: - --- Expected - +++ Actual - @@ -22,2 +22,4 @@ - resources: {} - + securityContext: - + runAsUser: 1000 - - asserts[14] `contains` fail Template: basic/templates/deployment.yaml DocumentIndex: 0 @@ -542,13 +529,10 @@ -Snapshot Summary: 1 snapshot failed in 1 test suite. Check changes and use `-u` to update snapshot. - - Charts: 1 failed, 0 passed, 1 total Test Suites: 9 failed, 0 passed, 9 total Tests: 17 failed, 1 errored, 0 passed, 17 total -Snapshot: 1 failed, 1 passed, 2 total +Snapshot: 2 passed, 2 total Time: XX.XXXms diff --git a/pkg/unittest/.snapshots/TestV3RunnerOkWithOverrideValuesPassedTests b/pkg/unittest/.snapshots/TestV3RunnerOkWithOverrideValuesPassedTests index 1c8cd1800..d2f39864f 100644 --- a/pkg/unittest/.snapshots/TestV3RunnerOkWithOverrideValuesPassedTests +++ b/pkg/unittest/.snapshots/TestV3RunnerOkWithOverrideValuesPassedTests @@ -19,7 +19,7 @@ Charts: 1 passed, 1 total Test Suites: 13 passed, 13 total -Tests: 40 passed, 40 total +Tests: 41 passed, 41 total Snapshot: 4 passed, 4 total Time: XX.XXXms diff --git a/pkg/unittest/.snapshots/TestV3RunnerOkWithPassedTests b/pkg/unittest/.snapshots/TestV3RunnerOkWithPassedTests index 1c8cd1800..d2f39864f 100644 --- a/pkg/unittest/.snapshots/TestV3RunnerOkWithPassedTests +++ b/pkg/unittest/.snapshots/TestV3RunnerOkWithPassedTests @@ -19,7 +19,7 @@ Charts: 1 passed, 1 total Test Suites: 13 passed, 13 total -Tests: 40 passed, 40 total +Tests: 41 passed, 41 total Snapshot: 4 passed, 4 total Time: XX.XXXms diff --git a/pkg/unittest/snapshot/cache.go b/pkg/unittest/snapshot/cache.go index a09d475eb..0dcbf5198 100644 --- a/pkg/unittest/snapshot/cache.go +++ b/pkg/unittest/snapshot/cache.go @@ -5,7 +5,7 @@ import ( "os" "github.com/helm-unittest/helm-unittest/internal/common" - yaml "gopkg.in/yaml.v3" + yaml "sigs.k8s.io/yaml" ) // CompareResult result return by Cache.Compare diff --git a/pkg/unittest/valueutils/valueutils.go b/pkg/unittest/valueutils/valueutils.go index 6df178904..ef58336e4 100644 --- a/pkg/unittest/valueutils/valueutils.go +++ b/pkg/unittest/valueutils/valueutils.go @@ -4,6 +4,7 @@ import ( "bytes" "fmt" "io" + "strconv" "github.com/helm-unittest/helm-unittest/internal/common" "github.com/vmware-labs/yaml-jsonpath/pkg/yamlpath" @@ -167,6 +168,60 @@ func traverseSetPath(in io.RuneReader, traverser parseTraverser, state int) erro return nil } +func handleExpectIndex(k []rune, last rune, traverser parseTraverser) (int, error) { + if last != ']' { + return -1, fmt.Errorf("missing index value") + } + idx, idxErr := strconv.Atoi(string(k)) + if idxErr != nil { + return -1, idxErr + } + traverser.traverseListIdx(idx) + return expectDenotation, nil +} + +func handleExpectDenotation(last rune) (int, error) { + switch last { + case '.': + return expectKey, nil + case '[': + return expectIndex, nil + default: + return -1, fmt.Errorf("invalid denotation token %s", string(last)) + } +} + +func handleExpectKey(k []rune, last rune, traverser parseTraverser) (int, error) { + switch last { + case '.': + traverser.traverseMapKey(string(k)) + return expectKey, nil + case '[': + if len(k) == 0 { + bufferedMapKey = "" + return expectEscaping, nil + } + traverser.traverseMapKey(string(k)) + return expectIndex, nil + default: + return -1, fmt.Errorf("invalid key %s", string(last)) + } +} + +func handleExpectEscaping(k []rune, last rune, traverser parseTraverser) (int, error) { + switch last { + case '.': + bufferedMapKey += string(k) + "." + return expectEscaping, nil + case ']': + bufferedMapKey += string(k) + traverser.traverseMapKey(bufferedMapKey) + return expectDenotation, nil + default: + return -1, fmt.Errorf("invalid escaping token %s", string(last)) + } +} + // copy from helm func runesUntil(in io.RuneReader, stop map[rune]bool) ([]rune, rune, error) { v := []rune{} diff --git a/pkg/unittest/valueutils/valueutils_handlers.go b/pkg/unittest/valueutils/valueutils_handlers.go deleted file mode 100644 index a18d419d8..000000000 --- a/pkg/unittest/valueutils/valueutils_handlers.go +++ /dev/null @@ -1,60 +0,0 @@ -package valueutils - -import ( - "fmt" - "strconv" -) - -func handleExpectIndex(k []rune, last rune, traverser parseTraverser) (int, error) { - if last != ']' { - return -1, fmt.Errorf("missing index value") - } - idx, idxErr := strconv.Atoi(string(k)) - if idxErr != nil { - return -1, idxErr - } - traverser.traverseListIdx(idx) - return expectDenotation, nil -} - -func handleExpectDenotation(last rune) (int, error) { - switch last { - case '.': - return expectKey, nil - case '[': - return expectIndex, nil - default: - return -1, fmt.Errorf("invalid denotation token %s", string(last)) - } -} - -func handleExpectKey(k []rune, last rune, traverser parseTraverser) (int, error) { - switch last { - case '.': - traverser.traverseMapKey(string(k)) - return expectKey, nil - case '[': - if len(k) == 0 { - bufferedMapKey = "" - return expectEscaping, nil - } - traverser.traverseMapKey(string(k)) - return expectIndex, nil - default: - return -1, fmt.Errorf("invalid key %s", string(last)) - } -} - -func handleExpectEscaping(k []rune, last rune, traverser parseTraverser) (int, error) { - switch last { - case '.': - bufferedMapKey += string(k) + "." - return expectEscaping, nil - case ']': - bufferedMapKey += string(k) - traverser.traverseMapKey(bufferedMapKey) - return expectDenotation, nil - default: - return -1, fmt.Errorf("invalid escaping token %s", string(last)) - } -} diff --git a/pkg/unittest/valueutils/valueutils_handlers_test.go b/pkg/unittest/valueutils/valueutils_handlers_test.go index a6cb05bd9..414da6344 100644 --- a/pkg/unittest/valueutils/valueutils_handlers_test.go +++ b/pkg/unittest/valueutils/valueutils_handlers_test.go @@ -1,3 +1,4 @@ +// Need to restructure to run these tests in the valueutils package package valueutils import ( diff --git a/pkg/unittest/valueutils/valueutils_test.go b/pkg/unittest/valueutils/valueutils_test.go index 4d30f7e4a..e98e7b62a 100644 --- a/pkg/unittest/valueutils/valueutils_test.go +++ b/pkg/unittest/valueutils/valueutils_test.go @@ -81,11 +81,13 @@ func TestBuildValueOfSetPath(t *testing.T) { } func TestBuildValueOfSetPath_V1(t *testing.T) { + t.Run("path is empty", func(t *testing.T) { _, err := BuildValueOfSetPath(nil, "") assert.Error(t, err) assert.EqualError(t, err, "set path is empty") }) + t.Run("value is empty", func(t *testing.T) { actual, err := BuildValueOfSetPath(nil, "some.path") assert.NoError(t, err) @@ -95,6 +97,7 @@ func TestBuildValueOfSetPath_V1(t *testing.T) { }, }, actual) }) + t.Run("some path", func(t *testing.T) { expected := map[string]interface{}{ "b": map[string]interface{}{ @@ -114,6 +117,7 @@ func TestBuildValueOfSetPath_V1(t *testing.T) { assert.NoError(t, err) assert.Equal(t, expected, result) }) + t.Run("path is not in data", func(t *testing.T) { expected := map[string]interface{}{ "some": map[string]interface{}{ @@ -131,6 +135,7 @@ func TestBuildValueOfSetPath_V1(t *testing.T) { assert.NoError(t, err) assert.Equal(t, expected, actual) }) + t.Run("path is in values", func(t *testing.T) { expected := map[string]interface{}{ "hosts": map[string]interface{}{ @@ -146,6 +151,7 @@ func TestBuildValueOfSetPath_V1(t *testing.T) { assert.NoError(t, err) assert.Equal(t, expected, actual) }) + t.Run("property testing", func(t *testing.T) { data := map[string]interface{}{"foo": "bar"} cases := []struct { @@ -189,10 +195,13 @@ func TestBuildValueSetPathError(t *testing.T) { data := map[string]interface{}{"foo": "bar"} var expectionsMapping = map[string]string{ - "": "set path is empty", - "{": "invalid token found {", - "[[": "invalid escaping token [", - "..": "unexpected end of", + "": "set path is empty", + "{": "invalid token found {", + "[[": "invalid escaping token [", + "..": "unexpected end of", + "foo[1.1]": "missing index value", + "foo[]": "strconv.Atoi: parsing \"\": invalid syntax", + "foo]": "invalid key ]", } for path, expect := range expectionsMapping { @@ -204,13 +213,13 @@ func TestBuildValueSetPathError(t *testing.T) { func TestMergeValues(t *testing.T) { a := assert.New(t) - dest := map[string]interface{}{ + src := map[string]interface{}{ "a": map[string]interface{}{ "b": []interface{}{"_", map[string]interface{}{"c": "yes"}}, "e.f": "false", }, } - src := map[string]interface{}{ + dest := map[string]interface{}{ "a": map[string]interface{}{ "b": []interface{}{"_", map[string]interface{}{"c": "no"}, "a"}, "d": "no", @@ -229,46 +238,47 @@ func TestMergeValues(t *testing.T) { } func TestMergeValues_Cases(t *testing.T) { + t.Run("SimpleMerge", func(t *testing.T) { - dest := map[string]interface{}{"a": 1, "b": 2} - src := map[string]interface{}{"c": 3, "d": 4} + src := map[string]interface{}{"a": 1, "b": 2} + dest := map[string]interface{}{"c": 3, "d": 4} expected := map[string]interface{}{"a": 1, "b": 2, "c": 3, "d": 4} result := v3util.MergeTables(dest, src) assert.Equal(t, expected, result) }) t.Run("OverwriteExistingValue", func(t *testing.T) { - dest := map[string]interface{}{"a": 1} - src := map[string]interface{}{"a": 2} + src := map[string]interface{}{"a": 1} + dest := map[string]interface{}{"a": 2} expected := map[string]interface{}{"a": 2} result := v3util.MergeTables(dest, src) assert.Equal(t, expected, result) }) t.Run("MergeNestedMaps", func(t *testing.T) { - dest := map[string]interface{}{"a": map[string]interface{}{"b": 1}} - src := map[string]interface{}{"a": map[string]interface{}{"c": 2}} + src := map[string]interface{}{"a": map[string]interface{}{"b": 1}} + dest := map[string]interface{}{"a": map[string]interface{}{"c": 2}} expected := map[string]interface{}{"a": map[string]interface{}{"b": 1, "c": 2}} result := v3util.MergeTables(dest, src) assert.Equal(t, expected, result) }) t.Run("OverwriteNestedMap", func(t *testing.T) { - dest := map[string]interface{}{"a": map[string]interface{}{"b": 1}} - src := map[string]interface{}{"a": 2} + src := map[string]interface{}{"a": map[string]interface{}{"b": 1}} + dest := map[string]interface{}{"a": 2} expected := map[string]interface{}{"a": 2} result := v3util.MergeTables(dest, src) assert.Equal(t, expected, result) }) t.Run("MergeComplexMaps", func(t *testing.T) { - dest := map[string]interface{}{ + src := map[string]interface{}{ "a": 1, "b": map[string]interface{}{ "c": 2, }, } - src := map[string]interface{}{ + dest := map[string]interface{}{ "a": 3, "b": map[string]interface{}{ "d": 4, @@ -290,12 +300,12 @@ func TestMergeValues_Cases(t *testing.T) { func TestMergeValues_YamlValues(t *testing.T) { t.Run("first", func(t *testing.T) { - yamlDst := ` + yamlSrc := ` a: b: foo: bar ` - yamlSrc := ` + yamlDst := ` a: hosts[0]: abrakadabra ` @@ -305,24 +315,25 @@ a: foo: bar hosts[0]: abrakadabra ` - var dataDst map[string]interface{} - common.YmlUnmarshalTestHelper(yamlDst, &dataDst, t) var dataSrc map[string]interface{} common.YmlUnmarshalTestHelper(yamlSrc, &dataSrc, t) + var dataDst map[string]interface{} + common.YmlUnmarshalTestHelper(yamlDst, &dataDst, t) output := v3util.MergeTables(dataDst, dataSrc) out, _ := common.YmlMarshall(&output) assert.YAMLEq(t, expected, out) }) + t.Run("second", func(t *testing.T) { - yamlDst := ` + yamlSrc := ` a: b: hosts: - foo - bar ` - yamlSrc := ` + yamlDst := ` a: b: hosts[0]: abrakadabra @@ -335,10 +346,10 @@ a: - bar hosts[0]: abrakadabra ` - var dataDst map[string]interface{} - common.YmlUnmarshalTestHelper(yamlDst, &dataDst, t) var dataSrc map[string]interface{} common.YmlUnmarshalTestHelper(yamlSrc, &dataSrc, t) + var dataDst map[string]interface{} + common.YmlUnmarshalTestHelper(yamlDst, &dataDst, t) output := v3util.MergeTables(dataDst, dataSrc) out := common.YmlMarshallTestHelper(&output, t) @@ -360,6 +371,7 @@ metadata: assert.NoError(t, err) assert.Empty(t, actual) }) + t.Run("valid-path", func(t *testing.T) { yml := ` kind: Deployment @@ -419,61 +431,61 @@ func TestBuildValueOfSetPath_NestedPath(t *testing.T) { // merge values func TestMergeValues_EmptySource(t *testing.T) { - dest := map[string]interface{}{"a": 1} - src := map[string]interface{}{} + src := map[string]interface{}{"a": 1} + dest := map[string]interface{}{} expected := map[string]interface{}{"a": 1} actual := v3util.MergeTables(dest, src) assert.Equal(t, expected, actual) } func TestMergeValues_EmptyDestination(t *testing.T) { - dest := map[string]interface{}{} - src := map[string]interface{}{"a": 1} + src := map[string]interface{}{} + dest := map[string]interface{}{"a": 1} expected := map[string]interface{}{"a": 1} actual := v3util.MergeTables(dest, src) assert.Equal(t, expected, actual) } -func TestMergeValues_NilSource(t *testing.T) { - dest := map[string]interface{}{"a": 1} - var src map[string]interface{} +func TestMergeValues_NilDestination(t *testing.T) { + src := map[string]interface{}{"a": 1} + dest := map[string]interface{}{} expected := map[string]interface{}{"a": 1} actual := v3util.MergeTables(dest, src) assert.Equal(t, expected, actual) } -func TestMergeValues_NilDestination(t *testing.T) { - dest := map[string]interface{}{} - src := map[string]interface{}{"a": 1} +func TestMergeValues_NilSource(t *testing.T) { + src := map[string]interface{}{} + dest := map[string]interface{}{"a": 1} expected := map[string]interface{}{"a": 1} actual := v3util.MergeTables(dest, src) assert.Equal(t, expected, actual) } func TestMergeValues_OverwriteWithNonMap(t *testing.T) { - dest := map[string]interface{}{"a": map[string]interface{}{"b": 1}} - src := map[string]interface{}{"a": 2} + src := map[string]interface{}{"a": map[string]interface{}{"b": 1}} + dest := map[string]interface{}{"a": 2} expected := map[string]interface{}{"a": 2} actual := v3util.MergeTables(dest, src) assert.Equal(t, expected, actual) } func TestMergeValues_DeepMerge(t *testing.T) { - dest := map[string]interface{}{"a": map[string]interface{}{"b": 1}} - src := map[string]interface{}{"a": map[string]interface{}{"c": 2}} + src := map[string]interface{}{"a": map[string]interface{}{"b": 1}} + dest := map[string]interface{}{"a": map[string]interface{}{"c": 2}} expected := map[string]interface{}{"a": map[string]interface{}{"b": 1, "c": 2}} actual := v3util.MergeTables(dest, src) assert.Equal(t, expected, actual) } func TestMergeValues_ComplexMerge(t *testing.T) { - dest := map[string]interface{}{ + src := map[string]interface{}{ "a": 1, "b": map[string]interface{}{ "c": 2, }, } - src := map[string]interface{}{ + dest := map[string]interface{}{ "a": 3, "b": map[string]interface{}{ "d": 4, @@ -494,10 +506,10 @@ func TestMergeValues_ComplexMerge(t *testing.T) { // new func TestMergeValues_KeyExistsButNotMap(t *testing.T) { - dest := map[string]interface{}{ + src := map[string]interface{}{ "a": 1, } - src := map[string]interface{}{ + dest := map[string]interface{}{ "a": map[string]interface{}{"b": 2}, } expected := map[string]interface{}{ @@ -508,10 +520,10 @@ func TestMergeValues_KeyExistsButNotMap(t *testing.T) { } func TestMergeValues_KeyExistsAndIsMap(t *testing.T) { - dest := map[string]interface{}{ + src := map[string]interface{}{ "a": map[string]interface{}{"b": 1}, } - src := map[string]interface{}{ + dest := map[string]interface{}{ "a": map[string]interface{}{"c": 2}, } expected := map[string]interface{}{ @@ -522,57 +534,58 @@ func TestMergeValues_KeyExistsAndIsMap(t *testing.T) { } func TestMergeValues_EmptySourceAndDestination(t *testing.T) { - dest := map[string]interface{}{} src := map[string]interface{}{} + dest := map[string]interface{}{} expected := map[string]interface{}{} actual := v3util.MergeTables(dest, src) assert.Equal(t, expected, actual) } -func TestMergeValues_SourceWithNilValue(t *testing.T) { - dest := map[string]interface{}{"a": 1} - src := map[string]interface{}{"b": nil} +func TestMergeValues_DestinationWithNilValue(t *testing.T) { + src := map[string]interface{}{"a": 1} + dest := map[string]interface{}{"b": nil} expected := map[string]interface{}{"a": 1, "b": nil} actual := v3util.MergeTables(dest, src) assert.Equal(t, expected, actual) } -func TestMergeValues_DestinationWithNilValue(t *testing.T) { - dest := map[string]interface{}{"a": nil} - src := map[string]interface{}{"b": 2} +func TestMergeValues_SourceWithNilValue(t *testing.T) { + src := map[string]interface{}{"a": nil} + dest := map[string]interface{}{"b": 2} expected := map[string]interface{}{"a": nil, "b": 2} actual := v3util.MergeTables(dest, src) assert.Equal(t, expected, actual) } func TestMergeValues_NestedMapWithEmptyMap(t *testing.T) { - dest := map[string]interface{}{"a": map[string]interface{}{"b": 1}} - src := map[string]interface{}{"a": map[string]interface{}{}} + src := map[string]interface{}{"a": map[string]interface{}{"b": 1}} + dest := map[string]interface{}{"a": map[string]interface{}{}} expected := map[string]interface{}{"a": map[string]interface{}{"b": 1}} actual := v3util.MergeTables(dest, src) assert.Equal(t, expected, actual) } func TestMergeValues_EmptyNestedMap(t *testing.T) { - dest := map[string]interface{}{"a": map[string]interface{}{}} - src := map[string]interface{}{"a": map[string]interface{}{"b": 1}} + src := map[string]interface{}{"a": map[string]interface{}{}} + dest := map[string]interface{}{"a": map[string]interface{}{"b": 1}} expected := map[string]interface{}{"a": map[string]interface{}{"b": 1}} actual := v3util.MergeTables(dest, src) assert.Equal(t, expected, actual) } func TestMergeValues_OverwriteWithEmptyMap(t *testing.T) { - dest := map[string]interface{}{"a": map[string]interface{}{"b": 1}} - src := map[string]interface{}{"a": map[string]interface{}{}} + src := map[string]interface{}{"a": map[string]interface{}{"b": 1}} + dest := map[string]interface{}{"a": map[string]interface{}{"b": nil}} + expected := map[string]interface{}{"a": map[string]interface{}{"b": nil}} // expected := map[string]interface{}{"a": map[string]interface{}{}} - expected := map[string]interface{}{"a": map[string]interface{}{"b": 1}} + // this is the expected result when v3util.CoalesceTables is used actual := v3util.MergeTables(dest, src) assert.Equal(t, expected, actual) } func TestMergeValues_OverwriteWithNil(t *testing.T) { - dest := map[string]interface{}{"a": map[string]interface{}{"b": 1}} - src := map[string]interface{}{"a": nil} + src := map[string]interface{}{"a": map[string]interface{}{"b": 1}} + dest := map[string]interface{}{"a": nil} expected := map[string]interface{}{"a": nil} actual := v3util.MergeTables(dest, src) assert.Equal(t, expected, actual) diff --git a/sonar-project.properties b/sonar-project.properties index 70851fccf..a30b89878 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -3,7 +3,7 @@ sonar.organization=helm-unittest # This is the name and version displayed in the SonarCloud UI. sonar.projectName=helm-unittest -sonar.projectVersion=0.7.0 +sonar.projectVersion=0.7.1 # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. # Define all sources and exclude test-, and vendor files. diff --git a/test/data/v3/basic/tests_failed/__snapshot__/deployment_test.yaml.snap b/test/data/v3/basic/tests_failed/__snapshot__/deployment_test.yaml.snap index 4aa028907..6ede39455 100644 --- a/test/data/v3/basic/tests_failed/__snapshot__/deployment_test.yaml.snap +++ b/test/data/v3/basic/tests_failed/__snapshot__/deployment_test.yaml.snap @@ -22,6 +22,8 @@ should fail all kinds of assertion: path: / port: 8080 resources: {} + securityContext: + runAsUser: 1000 2: | replicas: 1 template: