Add more testcases for hooks
Signed-off-by: Yusuke Kuoka <ykuoka@gmail.com>
This commit is contained in:
parent
793050cc18
commit
dc40ccde2e
|
|
@ -261,4 +261,225 @@ releases:
|
|||
logLevel: "info",
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("hooks for no-diff release", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
releases:
|
||||
- name: foo
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
hooks:
|
||||
# only prepare and cleanup are run
|
||||
- events: ["prepare", "preapply", "presync", "cleanup"]
|
||||
command: echo
|
||||
showlogs: true
|
||||
args: ["foo"]
|
||||
`,
|
||||
},
|
||||
selectors: []string{"app=test"},
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "foo", Chart: "incubator/raw", Flags: "--kube-contextdefault--namespacedefault--detailed-exitcode"}: nil,
|
||||
},
|
||||
error: "",
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
logLevel: "info",
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("hooks are run on enabled release", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
values:
|
||||
- bar:
|
||||
enabled: true
|
||||
|
||||
releases:
|
||||
- name: foo
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
hooks:
|
||||
- events: ["prepare", "preapply", "presync"]
|
||||
command: echo
|
||||
showlogs: true
|
||||
args: ["foo"]
|
||||
- name: bar
|
||||
condition: bar.enabled
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
hooks:
|
||||
- events: ["prepare", "preapply", "presync"]
|
||||
command: echo
|
||||
showlogs: true
|
||||
args: ["bar"]
|
||||
`,
|
||||
},
|
||||
selectors: []string{"app=test"},
|
||||
upgraded: []exectest.Release{
|
||||
{Name: "foo"},
|
||||
{Name: "bar"},
|
||||
},
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "foo", Chart: "incubator/raw", Flags: "--kube-contextdefault--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
{Name: "bar", Chart: "incubator/raw", Flags: "--kube-contextdefault--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
error: "",
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
logLevel: "info",
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("hooks are not run on disabled release", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
values:
|
||||
- bar:
|
||||
enabled: false
|
||||
|
||||
releases:
|
||||
- name: foo
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
hooks:
|
||||
- events: ["prepare", "preapply", "presync"]
|
||||
command: echo
|
||||
showlogs: true
|
||||
args: ["foo"]
|
||||
- name: bar
|
||||
condition: bar.enabled
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
hooks:
|
||||
- events: ["prepare", "preapply", "presync"]
|
||||
command: echo
|
||||
showlogs: true
|
||||
args: ["bar"]
|
||||
`,
|
||||
},
|
||||
selectors: []string{"app=test"},
|
||||
upgraded: []exectest.Release{
|
||||
{Name: "foo"},
|
||||
},
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "foo", Chart: "incubator/raw", Flags: "--kube-contextdefault--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
error: "",
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
logLevel: "info",
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("hooks are run on to-be-uninstalled release", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
releases:
|
||||
- name: foo
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
hooks:
|
||||
- events: ["prepare", "preapply", "presync"]
|
||||
command: echo
|
||||
showlogs: true
|
||||
args: ["foo"]
|
||||
- name: bar
|
||||
installed: false
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
hooks:
|
||||
- events: ["prepare", "preapply", "presync"]
|
||||
command: echo
|
||||
showlogs: true
|
||||
args: ["bar"]
|
||||
`,
|
||||
},
|
||||
selectors: []string{"app=test"},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^foo$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
foo 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^bar$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
bar 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
},
|
||||
upgraded: []exectest.Release{
|
||||
{Name: "foo"},
|
||||
},
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "foo", Chart: "incubator/raw", Flags: "--kube-contextdefault--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
error: "",
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
logLevel: "info",
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("hooks are not run on alreadyd uninstalled release", func(t *testing.T) {
|
||||
check(t, testcase{
|
||||
files: map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
releases:
|
||||
- name: foo
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
hooks:
|
||||
- events: ["prepare", "preapply", "presync"]
|
||||
command: echo
|
||||
showlogs: true
|
||||
args: ["foo"]
|
||||
- name: bar
|
||||
installed: false
|
||||
chart: incubator/raw
|
||||
namespace: default
|
||||
labels:
|
||||
app: test
|
||||
hooks:
|
||||
- events: ["prepare", "preapply", "presync"]
|
||||
command: echo
|
||||
showlogs: true
|
||||
args: ["bar"]
|
||||
`,
|
||||
},
|
||||
selectors: []string{"app=test"},
|
||||
lists: map[exectest.ListKey]string{
|
||||
{Filter: "^foo$", Flags: helmV2ListFlags}: `NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
||||
foo 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 default
|
||||
`,
|
||||
{Filter: "^bar$", Flags: helmV2ListFlags}: ``,
|
||||
},
|
||||
upgraded: []exectest.Release{
|
||||
{Name: "foo"},
|
||||
},
|
||||
diffs: map[exectest.DiffKey]error{
|
||||
{Name: "foo", Chart: "incubator/raw", Flags: "--kube-contextdefault--namespacedefault--detailed-exitcode"}: helmexec.ExitError{Code: 2},
|
||||
},
|
||||
error: "",
|
||||
// as we check for log output, set concurrency to 1 to avoid non-deterministic test result
|
||||
concurrency: 1,
|
||||
logLevel: "info",
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
|
|||
14
pkg/app/testdata/testapply_hooks/hooks_are_not_run_on_alreadyd_uninstalled_release/log
vendored
Normal file
14
pkg/app/testdata/testapply_hooks/hooks_are_not_run_on_alreadyd_uninstalled_release/log
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
|
||||
hook[prepare] logs | foo
|
||||
hook[prepare] logs |
|
||||
|
||||
hook[preapply] logs | foo
|
||||
hook[preapply] logs |
|
||||
|
||||
hook[presync] logs | foo
|
||||
hook[presync] logs |
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo incubator/raw 3.1.0
|
||||
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
|
||||
hook[prepare] logs | foo
|
||||
hook[prepare] logs |
|
||||
|
||||
hook[preapply] logs | foo
|
||||
hook[preapply] logs |
|
||||
|
||||
hook[presync] logs | foo
|
||||
hook[presync] logs |
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo incubator/raw
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
|
||||
hook[prepare] logs | foo
|
||||
hook[prepare] logs |
|
||||
|
||||
hook[prepare] logs | bar
|
||||
hook[prepare] logs |
|
||||
|
||||
hook[preapply] logs | foo
|
||||
hook[preapply] logs |
|
||||
|
||||
hook[preapply] logs | bar
|
||||
hook[preapply] logs |
|
||||
|
||||
hook[presync] logs | foo
|
||||
hook[presync] logs |
|
||||
|
||||
hook[presync] logs | bar
|
||||
hook[presync] logs |
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo incubator/raw
|
||||
bar incubator/raw
|
||||
|
||||
24
pkg/app/testdata/testapply_hooks/hooks_are_run_on_to-be-uninstalled_release/log
vendored
Normal file
24
pkg/app/testdata/testapply_hooks/hooks_are_run_on_to-be-uninstalled_release/log
vendored
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
|
||||
hook[prepare] logs | foo
|
||||
hook[prepare] logs |
|
||||
|
||||
hook[preapply] logs | bar
|
||||
hook[preapply] logs |
|
||||
|
||||
hook[presync] logs | bar
|
||||
hook[presync] logs |
|
||||
|
||||
hook[preapply] logs | foo
|
||||
hook[preapply] logs |
|
||||
|
||||
hook[presync] logs | foo
|
||||
hook[presync] logs |
|
||||
|
||||
UPDATED RELEASES:
|
||||
NAME CHART VERSION
|
||||
foo incubator/raw 3.1.0
|
||||
|
||||
|
||||
DELETED RELEASES:
|
||||
NAME
|
||||
bar
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
|
||||
hook[prepare] logs | foo
|
||||
hook[prepare] logs |
|
||||
|
||||
hook[cleanup] logs | foo
|
||||
hook[cleanup] logs |
|
||||
|
|
@ -161,7 +161,7 @@ func (helm *Helm) List(context helmexec.HelmContext, filter string, flags ...str
|
|||
for k := range helm.Lists {
|
||||
keys = append(keys, k.String())
|
||||
}
|
||||
return "", fmt.Errorf("unexpected list key: %v in %v", key, strings.Join(keys, ", "))
|
||||
return "", fmt.Errorf("unexpected list key: %v not found in %v", key, strings.Join(keys, ", "))
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue