mirror of
https://github.com/helmfile/helmfile.git
synced 2026-10-21 12:15:12 +02:00
fix: unexpected no releases found for any helmfiles on helmfiles: config (#318)
Fixes #315 Fixes #316
This commit is contained in:
+108
@@ -0,0 +1,108 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/roboll/helmfile/helmexec"
|
||||
"github.com/roboll/helmfile/state"
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// See https://github.com/roboll/helmfile/issues/193
|
||||
func TestFindAndIterateOverDesiredStates(t *testing.T) {
|
||||
absPaths := map[string]string{
|
||||
".": "/path/to",
|
||||
"/path/to/helmfile.d": "/path/to/helmfile.d",
|
||||
}
|
||||
dirs := map[string]bool{
|
||||
"helmfile.d": true,
|
||||
}
|
||||
files := map[string]string{
|
||||
"helmfile.yaml": `
|
||||
helmfiles:
|
||||
- helmfile.d/a*.yaml
|
||||
- helmfile.d/b*.yaml
|
||||
`,
|
||||
"/path/to/helmfile.d/a1.yaml": `
|
||||
releases:
|
||||
- name: zipkin
|
||||
chart: stable/zipkin
|
||||
`,
|
||||
"/path/to/helmfile.d/a2.yaml": `
|
||||
releases:
|
||||
- name: prometheus
|
||||
chart: stable/prometheus
|
||||
`,
|
||||
"/path/to/helmfile.d/b.yaml": `
|
||||
releases:
|
||||
- name: grafana
|
||||
chart: stable/grafana
|
||||
`,
|
||||
}
|
||||
globMatches := map[string][]string{
|
||||
"/path/to/helmfile.d/a*.yaml": []string{"/path/to/helmfile.d/a1.yaml", "/path/to/helmfile.d/a2.yaml"},
|
||||
"/path/to/helmfile.d/b*.yaml": []string{"/path/to/helmfile.d/b.yaml"},
|
||||
}
|
||||
fileExistsAt := func(path string) bool {
|
||||
_, ok := files[path]
|
||||
return ok
|
||||
}
|
||||
directoryExistsAt := func(path string) bool {
|
||||
_, ok := dirs[path]
|
||||
return ok
|
||||
}
|
||||
readFile := func(filename string) ([]byte, error) {
|
||||
str, ok := files[filename]
|
||||
if !ok {
|
||||
return []byte(nil), fmt.Errorf("no file found: %s", filename)
|
||||
}
|
||||
return []byte(str), nil
|
||||
}
|
||||
glob := func(pattern string) ([]string, error) {
|
||||
matches, ok := globMatches[pattern]
|
||||
if !ok {
|
||||
return []string(nil), fmt.Errorf("no file matched: %s", pattern)
|
||||
}
|
||||
return matches, nil
|
||||
}
|
||||
abs := func(path string) (string, error) {
|
||||
a, ok := absPaths[path]
|
||||
if !ok {
|
||||
return "", fmt.Errorf("abs: unexpected path: %s", path)
|
||||
}
|
||||
return a, nil
|
||||
}
|
||||
app := &app{
|
||||
readFile: readFile,
|
||||
glob: glob,
|
||||
abs: abs,
|
||||
fileExistsAt: fileExistsAt,
|
||||
directoryExistsAt: directoryExistsAt,
|
||||
kubeContext: "default",
|
||||
logger: helmexec.NewLogger(os.Stderr, "debug"),
|
||||
}
|
||||
noop := func(st *state.HelmState, helm helmexec.Interface) []error {
|
||||
return []error{}
|
||||
}
|
||||
|
||||
testcases := []struct {
|
||||
name string
|
||||
expectErr bool
|
||||
}{
|
||||
{name: "prometheus", expectErr: false},
|
||||
{name: "zipkin", expectErr: false},
|
||||
{name: "grafana", expectErr: false},
|
||||
{name: "elasticsearch", expectErr: true},
|
||||
}
|
||||
|
||||
for _, testcase := range testcases {
|
||||
err := app.FindAndIterateOverDesiredStates(
|
||||
"helmfile.yaml", noop, "", []string{fmt.Sprintf("name=%s", testcase.name)}, "default",
|
||||
)
|
||||
if testcase.expectErr && err == nil {
|
||||
t.Errorf("error expected but not happened for name=%s", testcase.name)
|
||||
} else if !testcase.expectErr && err != nil {
|
||||
t.Errorf("unexpected error for name=%s: %v", testcase.name, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user