Reapply "blueprintload: enable strict checking for toml"
This reverts commit f25b5e325e.
This commit is contained in:
parent
7fbae14142
commit
a2f71ad44c
2 changed files with 19 additions and 4 deletions
|
|
@ -21,11 +21,13 @@ func decodeToml(r io.Reader, what string) (*externalBlueprint.Blueprint, error)
|
|||
dec := toml.NewDecoder(r)
|
||||
|
||||
var conf externalBlueprint.Blueprint
|
||||
_, err := dec.Decode(&conf)
|
||||
|
||||
metadata, err := dec.Decode(&conf)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("cannot decode %q: %w", what, err)
|
||||
}
|
||||
if len(metadata.Undecoded()) > 0 {
|
||||
return nil, fmt.Errorf("cannot decode %q: unknown keys found: %v", what, metadata.Undecoded())
|
||||
}
|
||||
|
||||
return &conf, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,17 @@ var testBlueprintTOML = `
|
|||
name = "alice"
|
||||
`
|
||||
|
||||
var testBlueprintJSONunknownKeys = `
|
||||
{
|
||||
"birds": {"name": "robin"}
|
||||
}
|
||||
`
|
||||
|
||||
var testBlueprintTOMLunknownKeys = `
|
||||
[[birds]]
|
||||
name = "robin"
|
||||
`
|
||||
|
||||
var expectedBlueprint = &blueprint.Blueprint{
|
||||
Customizations: &blueprint.Customizations{
|
||||
User: []blueprint.UserCustomization{
|
||||
|
|
@ -55,9 +66,11 @@ func TestBlueprintLoadJSON(t *testing.T) {
|
|||
}{
|
||||
{"bp.json", testBlueprintJSON, expectedBlueprint, ""},
|
||||
{"bp.toml", testBlueprintTOML, expectedBlueprint, ""},
|
||||
{"bp.toml", "wrong-content", nil, `cannot decode .*/bp.toml": toml: `},
|
||||
{"bp.json", "wrong-content", nil, `cannot decode .*/bp.json": invalid `},
|
||||
{"bp.toml", "wrong-content", nil, `cannot decode ".*/bp.toml": toml: `},
|
||||
{"bp.json", "wrong-content", nil, `cannot decode ".*/bp.json": invalid `},
|
||||
{"bp", "wrong-content", nil, `unsupported file extension for "/.*/bp"`},
|
||||
{"bp.toml", testBlueprintTOMLunknownKeys, nil, `cannot decode ".*/bp.toml": unknown keys found: \[birds birds.name\]`},
|
||||
{"bp.json", testBlueprintJSONunknownKeys, nil, `cannot decode ".*/bp.json": json: unknown field "birds"`},
|
||||
} {
|
||||
blueprintPath := makeTestBlueprint(t, tc.fname, tc.content)
|
||||
bp, err := blueprintload.Load(blueprintPath)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue