diff --git a/pkg/app/diff_test.go b/pkg/app/diff_test.go index 3ee292cb..372badff 100644 --- a/pkg/app/diff_test.go +++ b/pkg/app/diff_test.go @@ -1101,46 +1101,6 @@ releases: deleted: []exectest.Release{}, concurrency: 1, error: `in ./helmfile.yaml: release(s) "default//foo" depend(s) on an undefined release "default//bar". Perhaps you made a typo in "needs" or forgot defining a release named "bar" with appropriate "namespace" and "kubeContext"?`, - log: `processing file "helmfile.yaml" in directory "." -changing working directory to "/path/to" -first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= -first-pass uses: &{default map[] map[]} -first-pass rendering output of "helmfile.yaml.part.0": - 0: - 1: releases: - 2: - name: baz - 3: namespace: ns1 - 4: chart: mychart3 - 5: - name: foo - 6: chart: mychart1 - 7: needs: - 8: - bar - 9: - -first-pass produced: &{default map[] map[]} -first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} -vals: -map[] -defaultVals:[] -second-pass rendering result of "helmfile.yaml.part.0": - 0: - 1: releases: - 2: - name: baz - 3: namespace: ns1 - 4: chart: mychart3 - 5: - name: foo - 6: chart: mychart1 - 7: needs: - 8: - bar - 9: - -merged environment: &{default map[] map[]} -WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs -2 release(s) found in helmfile.yaml - -err: release(s) "default//foo" depend(s) on an undefined release "default//bar". Perhaps you made a typo in "needs" or forgot defining a release named "bar" with appropriate "namespace" and "kubeContext"? -changing working directory back to "/path/to" -`, }, } diff --git a/pkg/app/testdata/app_diff_test_1/non-existent_release_in_needs b/pkg/app/testdata/app_diff_test_1/non-existent_release_in_needs new file mode 100644 index 00000000..60dead90 --- /dev/null +++ b/pkg/app/testdata/app_diff_test_1/non-existent_release_in_needs @@ -0,0 +1,8 @@ +processing file "helmfile.yaml" in directory "." +changing working directory to "/path/to" +merged environment: &{default map[] map[]} +WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs +2 release(s) found in helmfile.yaml + +err: release(s) "default//foo" depend(s) on an undefined release "default//bar". Perhaps you made a typo in "needs" or forgot defining a release named "bar" with appropriate "namespace" and "kubeContext"? +changing working directory back to "/path/to" diff --git a/pkg/app/testdata/app_diff_test_1/unselected_release_in_needs b/pkg/app/testdata/app_diff_test_1/unselected_release_in_needs new file mode 100644 index 00000000..d82f9d50 --- /dev/null +++ b/pkg/app/testdata/app_diff_test_1/unselected_release_in_needs @@ -0,0 +1,7 @@ +processing file "helmfile.yaml" in directory "." +changing working directory to "/path/to" +merged environment: &{default map[] map[]} +1 release(s) matching name=foo found in helmfile.yaml + +err: release "default//foo" depends on "default//bar" which does not match the selectors. Please add a selector like "--selector name=bar", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies +changing working directory back to "/path/to" diff --git a/pkg/app/testdata/app_diff_test_1/upgrades_with_bad_selector b/pkg/app/testdata/app_diff_test_1/upgrades_with_bad_selector new file mode 100644 index 00000000..8e3e99cf --- /dev/null +++ b/pkg/app/testdata/app_diff_test_1/upgrades_with_bad_selector @@ -0,0 +1,33 @@ +processing file "helmfile.yaml.gotmpl" in directory "." +changing working directory to "/path/to" +rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= +rendering result of "helmfile.yaml.gotmpl.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +merged environment: &{default map[] map[]} +0 release(s) matching app=test_non_existent found in helmfile.yaml.gotmpl + +changing working directory back to "/path/to" diff --git a/pkg/app/testdata/app_diff_test_1/upgrades_with_good_selector_with_--skip-needs=false b/pkg/app/testdata/app_diff_test_1/upgrades_with_good_selector_with_--skip-needs=false new file mode 100644 index 00000000..f29aa140 --- /dev/null +++ b/pkg/app/testdata/app_diff_test_1/upgrades_with_good_selector_with_--skip-needs=false @@ -0,0 +1,34 @@ +processing file "helmfile.yaml.gotmpl" in directory "." +changing working directory to "/path/to" +rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= +rendering result of "helmfile.yaml.gotmpl.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +merged environment: &{default map[] map[]} +2 release(s) matching app=test found in helmfile.yaml.gotmpl + +err: release "default/default/external-secrets" depends on "default/kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies +changing working directory back to "/path/to" diff --git a/pkg/app/two_pass_renderer_test.go b/pkg/app/two_pass_renderer_test.go index 396c38e6..5190f9f6 100644 --- a/pkg/app/two_pass_renderer_test.go +++ b/pkg/app/two_pass_renderer_test.go @@ -67,60 +67,6 @@ releases: } } -func TestReadFromYaml_RenderTemplate(t *testing.T) { - defaultValuesYaml := ` -releaseName: "hello" -conditionalReleaseTag: "yes" -` - - yamlContent := []byte(` -environments: - staging: - values: - - default/values.yaml - production: - -releases: -- name: {{ .Environment.Values.releaseName }} - chart: mychart1 - -{{ if (eq .Environment.Values.conditionalReleaseTag "yes") }} -- name: conditionalRelease -{{ end }} - -`) - - files := map[string]string{ - "/path/to/default/values.yaml": defaultValuesYaml, - } - - r, _, _ := makeLoader(files, "staging") - // test the double rendering - yamlBuf, err := r.renderTemplatesToYaml("", "", yamlContent) - if err != nil { - t.Fatalf("unexpected error: %v", err) - } - - var state state.HelmState - err = yaml.Unmarshal(yamlBuf.Bytes(), &state) - - if err != nil { - t.Errorf("unexpected error: %v", err) - } - - if len(state.Releases) != 2 { - t.Fatal("there should be 2 releases") - } - - if state.Releases[0].Name != "hello" { - t.Errorf("release name should be hello") - } - - if state.Releases[1].Name != "conditionalRelease" { - t.Error("conditional release should have been present") - } -} - func testReadFromYaml_RenderTemplateLog(t *testing.T) { t.Helper() diff --git a/pkg/policy/checker_test.go b/pkg/policy/checker_test.go index 263e4ae7..0b64081a 100644 --- a/pkg/policy/checker_test.go +++ b/pkg/policy/checker_test.go @@ -47,13 +47,6 @@ func TestForbidEnvironmentsWithReleases(t *testing.T) { filePath: "helmfile.yaml", content: []byte("environments:\nreleases:\n"), expectedErr: true, - isStrict: false, - }, - { - name: "error when both releases and environments for plain yaml on v1", - filePath: "helmfile.yaml", - content: []byte("environments:\nreleases:\n"), - expectedErr: true, isStrict: true, }, }