diff --git a/codegen/config.go b/codegen/config.go index 01eb87cad0..275e3d4dfb 100644 --- a/codegen/config.go +++ b/codegen/config.go @@ -46,7 +46,7 @@ func LoadConfig(filename string) (*Config, error) { return nil, errors.Wrap(err, "unable to read config") } - if err := yaml.Unmarshal(b, &config); err != nil { + if err := yaml.UnmarshalStrict(b, &config); err != nil { return nil, errors.Wrap(err, "unable to parse config") } diff --git a/codegen/config_test.go b/codegen/config_test.go index 34aebeb168..e4161d9c31 100644 --- a/codegen/config_test.go +++ b/codegen/config_test.go @@ -20,6 +20,11 @@ func TestLoadConfig(t *testing.T) { _, err := LoadConfig("testdata/cfg/malformedconfig.yml") require.EqualError(t, err, "unable to parse config: yaml: unmarshal errors:\n line 1: cannot unmarshal !!str `asdf` into codegen.Config") }) + + t.Run("unknown keys", func(t *testing.T) { + _, err := LoadConfig("testdata/cfg/unknownkeys.yml") + require.EqualError(t, err, "unable to parse config: yaml: unmarshal errors:\n line 2: field unknown not found in type codegen.Config") + }) } func TestLoadDefaultConfig(t *testing.T) { diff --git a/codegen/testdata/cfg/unknownkeys.yml b/codegen/testdata/cfg/unknownkeys.yml new file mode 100644 index 0000000000..dbf095fd01 --- /dev/null +++ b/codegen/testdata/cfg/unknownkeys.yml @@ -0,0 +1,2 @@ +schema: outer +unknown: foo