Merge pull request #218 from mumoshu/should-fail-on-duplicate-release-name

fix: helmfile should fail on duplicate release name
This commit is contained in:
KUOKA Yusuke 2018-08-23 09:32:03 +09:00 committed by GitHub
commit d8aa9f305b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 0 deletions

View File

@ -109,6 +109,16 @@ func readFromYaml(content []byte, file string, logger *zap.SugaredLogger) (*Helm
state.DeprecatedReleases = []ReleaseSpec{}
}
releaseNameCounts := map[string]int{}
for _, r := range state.Releases {
releaseNameCounts[r.Name] += 1
}
for name, c := range releaseNameCounts {
if c > 1 {
return nil, fmt.Errorf("invalid helmfile: duplicate release name found: there were %d releases named \"%s\"", c, name)
}
}
state.logger = logger
return &state, nil

View File

@ -164,6 +164,29 @@ func TestReadFromYaml_FilterNegatives(t *testing.T) {
}
}
// See https://github.com/roboll/helmfile/issues/193
func TestReadFromYaml_DuplicateReleaseName(t *testing.T) {
yamlFile := "example/path/to/yaml/file"
yamlContent := []byte(`releases:
- name: myrelease1
chart: mychart1
labels:
stage: pre
foo: bar
- name: myrelease1
chart: mychart2
labels:
stage: post
`)
_, err := readFromYaml(yamlContent, yamlFile, logger)
if err == nil {
t.Error("error expected but not happened")
}
if err.Error() != "invalid helmfile: duplicate release name found: there were 2 releases named \"myrelease1\"" {
t.Errorf("unexpected error happened: %v", err)
}
}
func TestLabelParsing(t *testing.T) {
cases := []struct {
labelString string