From bad2372f3e7b6468a8ec6e3826d0a3dcfa88fe7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Arnqvist?= Date: Mon, 7 Apr 2025 09:33:09 +0200 Subject: [PATCH] fix: Add tests checking needs with same name in different namespaces MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Arnqvist --- pkg/app/app_test.go | 29 +++++++++++++ pkg/app/diff_test.go | 28 ++++++++++++ .../testdata/app_diff_test_1/bar_is_disabled | 18 ++++++++ .../bar_and_ns2/bar_is_disabled/log | 43 +++++++++++++++++++ 4 files changed, 118 insertions(+) create mode 100644 pkg/app/testdata/app_diff_test_1/bar_is_disabled create mode 100644 pkg/app/testdata/testapply/upgrade_when_ns1/foo_needs_ns1/bar_and_ns2/bar_is_disabled/log diff --git a/pkg/app/app_test.go b/pkg/app/app_test.go index 6ac78a78..67e6f8a2 100644 --- a/pkg/app/app_test.go +++ b/pkg/app/app_test.go @@ -3219,6 +3219,35 @@ releases: {Name: "bar", Flags: []string{"--kube-context", "default", "--namespace", "ns2"}}, }, }, + { + name: "upgrade when ns1/foo needs ns1/bar and ns2/bar is disabled", + loc: location(), + files: map[string]string{ + "/path/to/helmfile.yaml": ` +releases: +- name: bar + chart: stable/mychart2 + namespace: ns1 +- name: bar + chart: stable/mychart2 + namespace: ns2 + installed: false +- name: foo + chart: stable/mychart1 + namespace: ns1 + needs: + - ns1/bar +`, + }, + diffs: map[exectest.DiffKey]error{ + {Name: "bar", Chart: "stable/mychart2", Flags: "--kube-context default --namespace ns1 --detailed-exitcode --reset-values"}: helmexec.ExitError{Code: 2}, + {Name: "foo", Chart: "stable/mychart1", Flags: "--kube-context default --namespace ns1 --detailed-exitcode --reset-values"}: helmexec.ExitError{Code: 2}, + }, + upgraded: []exectest.Release{ + {Name: "bar", Flags: []string{"--kube-context", "default", "--namespace", "ns1"}}, + {Name: "foo", Flags: []string{"--kube-context", "default", "--namespace", "ns1"}}, + }, + }, // // deletes: deleting all releases in the correct order // diff --git a/pkg/app/diff_test.go b/pkg/app/diff_test.go index 372badff..4dd63f94 100644 --- a/pkg/app/diff_test.go +++ b/pkg/app/diff_test.go @@ -533,6 +533,34 @@ releases: }, upgraded: []exectest.Release{}, }, + { + name: "upgrade when ns1/foo needs ns1/bar and ns2/bar is disabled", + loc: location(), + files: map[string]string{ + "/path/to/helmfile.yaml": ` +releases: +- name: bar + chart: mychart2 + namespace: ns1 +- name: bar + chart: mychart2 + namespace: ns2 + installed: false +- name: foo + chart: mychart1 + namespace: ns1 + needs: + - ns1/bar +`, + }, + detailedExitcode: true, + error: "Identified at least one change", + diffs: map[exectest.DiffKey]error{ + {Name: "bar", Chart: "mychart2", Flags: "--kube-context default --namespace ns1 --detailed-exitcode --reset-values"}: helmexec.ExitError{Code: 2}, + {Name: "foo", Chart: "mychart1", Flags: "--kube-context default --namespace ns1 --detailed-exitcode --reset-values"}: helmexec.ExitError{Code: 2}, + }, + upgraded: []exectest.Release{}, + }, { name: "upgrade when tns1 ns1 foo needs tns2 ns2 bar", loc: location(), diff --git a/pkg/app/testdata/app_diff_test_1/bar_is_disabled b/pkg/app/testdata/app_diff_test_1/bar_is_disabled new file mode 100644 index 00000000..219f70e2 --- /dev/null +++ b/pkg/app/testdata/app_diff_test_1/bar_is_disabled @@ -0,0 +1,18 @@ +processing file "helmfile.yaml" in directory "." +changing working directory to "/path/to" +merged environment: &{default map[] map[]} +3 release(s) found in helmfile.yaml + +processing 2 groups of releases in this order: +GROUP RELEASES +1 default/ns1/bar +2 default/ns1/foo + +processing releases in group 1/2: default/ns1/bar +processing releases in group 2/2: default/ns1/foo +Affected releases are: + bar (mychart2) DELETED + bar (mychart2) UPDATED + foo (mychart1) UPDATED + +changing working directory back to "/path/to" diff --git a/pkg/app/testdata/testapply/upgrade_when_ns1/foo_needs_ns1/bar_and_ns2/bar_is_disabled/log b/pkg/app/testdata/testapply/upgrade_when_ns1/foo_needs_ns1/bar_and_ns2/bar_is_disabled/log new file mode 100644 index 00000000..36eb250f --- /dev/null +++ b/pkg/app/testdata/testapply/upgrade_when_ns1/foo_needs_ns1/bar_and_ns2/bar_is_disabled/log @@ -0,0 +1,43 @@ +processing file "helmfile.yaml" in directory "." +changing working directory to "/path/to" +merged environment: &{default map[] map[]} +3 release(s) found in helmfile.yaml + +Affected releases are: + bar (stable/mychart2) DELETED + bar (stable/mychart2) UPDATED + foo (stable/mychart1) UPDATED + +invoking preapply hooks for 2 groups of releases in this order: +GROUP RELEASES +1 default/ns1/foo +2 default/ns1/bar, default/ns2/bar + +invoking preapply hooks for releases in group 1/2: default/ns1/foo +invoking preapply hooks for releases in group 2/2: default/ns1/bar, default/ns2/bar +processing 1 groups of releases in this order: +GROUP RELEASES +1 default/ns2/bar + +processing releases in group 1/1: default/ns2/bar +processing 2 groups of releases in this order: +GROUP RELEASES +1 default/ns1/bar +2 default/ns1/foo + +processing releases in group 1/2: default/ns1/bar +getting deployed release version failed: Failed to get the version for: mychart2 +processing releases in group 2/2: default/ns1/foo +getting deployed release version failed: Failed to get the version for: mychart1 + +UPDATED RELEASES: +NAME NAMESPACE CHART VERSION DURATION +bar ns1 stable/mychart2 0s +foo ns1 stable/mychart1 0s + + +DELETED RELEASES: +NAME NAMESPACE DURATION +bar ns2 0s + +changing working directory back to "/path/to"