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:
		
						commit
						d8aa9f305b
					
				|  | @ -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 | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue