corrected order of helm lint coalescing of multiple values files

Signed-off-by: Matthew Luckam <Matthew.Luckam@peraton.com>
pull/9260/head
Matthew Luckam 5 years ago
parent b30f61d76d
commit f402994461

@ -70,8 +70,9 @@ func validateValuesFile(valuesPath string, overrides map[string]interface{}) err
// level values against the top-level expectations. Subchart values are not linted. // level values against the top-level expectations. Subchart values are not linted.
// We could change that. For now, though, we retain that strategy, and thus can // We could change that. For now, though, we retain that strategy, and thus can
// coalesce tables (like reuse-values does) instead of doing the full chart // coalesce tables (like reuse-values does) instead of doing the full chart
// CoalesceValues. // CoalesceValues
values = chartutil.CoalesceTables(values, overrides) coalescedValues := chartutil.CoalesceTables(make(map[string]interface{}, len(overrides)), overrides)
coalescedValues = chartutil.CoalesceTables(coalescedValues, values)
ext := filepath.Ext(valuesPath) ext := filepath.Ext(valuesPath)
schemaPath := valuesPath[:len(valuesPath)-len(ext)] + ".schema.json" schemaPath := valuesPath[:len(valuesPath)-len(ext)] + ".schema.json"
@ -82,5 +83,5 @@ func validateValuesFile(valuesPath string, overrides map[string]interface{}) err
if err != nil { if err != nil {
return err return err
} }
return chartutil.ValidateAgainstSingleSchema(values, schema) return chartutil.ValidateAgainstSingleSchema(coalescedValues, schema)
} }

@ -104,7 +104,7 @@ func TestValidateValuesFileSchemaFailure(t *testing.T) {
} }
func TestValidateValuesFileSchemaOverrides(t *testing.T) { func TestValidateValuesFileSchemaOverrides(t *testing.T) {
yaml := "username: admin" yaml := "username: admin\npassword:"
overrides := map[string]interface{}{ overrides := map[string]interface{}{
"password": "swordfish", "password": "swordfish",
} }
@ -118,6 +118,23 @@ func TestValidateValuesFileSchemaOverrides(t *testing.T) {
} }
} }
func TestValidateValuesFileSchemaOverridesFailure(t *testing.T) {
yaml := "username: admin\npassword:"
overrides := map[string]interface{}{
"username": "anotherUser",
}
tmpdir := ensure.TempFile(t, "values.yaml", []byte(yaml))
defer os.RemoveAll(tmpdir)
createTestingSchema(t, tmpdir)
valfile := filepath.Join(tmpdir, "values.yaml")
err := validateValuesFile(valfile, overrides)
if err == nil {
t.Fatalf("expected values file to fail parsing")
}
assert.Contains(t, err.Error(), "Expected: string, given: null", "Null value for password should be caught by schema")
}
func createTestingSchema(t *testing.T, dir string) string { func createTestingSchema(t *testing.T, dir string) string {
t.Helper() t.Helper()
schemafile := filepath.Join(dir, "values.schema.json") schemafile := filepath.Join(dir, "values.schema.json")

Loading…
Cancel
Save