mirror of https://github.com/hashicorp/terraform
Previously this error message was including only the main error message and ignoring any context about what part of a potential nested data structure it arose from. Now we'll use our usual path formatting utility to introduce additional context whenever a problem arises with a nested value.pull/35473/head
parent
3ce9e517ae
commit
72de171edd
@ -0,0 +1,50 @@
|
||||
// Copyright (c) HashiCorp, Inc.
|
||||
// SPDX-License-Identifier: BUSL-1.1
|
||||
|
||||
package configs
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/hashicorp/hcl/v2"
|
||||
"github.com/hashicorp/hcl/v2/hclsyntax"
|
||||
)
|
||||
|
||||
func TestVariableInvalidDefault(t *testing.T) {
|
||||
src := `
|
||||
variable foo {
|
||||
type = map(object({
|
||||
foo = bool
|
||||
}))
|
||||
|
||||
default = {
|
||||
"thingy" = {
|
||||
foo = "string where bool is expected"
|
||||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
|
||||
hclF, diags := hclsyntax.ParseConfig([]byte(src), "test.tf", hcl.InitialPos)
|
||||
if diags.HasErrors() {
|
||||
t.Fatal(diags.Error())
|
||||
}
|
||||
|
||||
_, diags = parseConfigFile(hclF.Body, nil, false, false)
|
||||
if !diags.HasErrors() {
|
||||
t.Fatal("unexpected success; want error")
|
||||
}
|
||||
|
||||
for _, diag := range diags {
|
||||
if diag.Severity != hcl.DiagError {
|
||||
continue
|
||||
}
|
||||
if diag.Summary != "Invalid default value for variable" {
|
||||
t.Errorf("unexpected diagnostic summary: %q", diag.Summary)
|
||||
continue
|
||||
}
|
||||
if got, want := diag.Detail, `This default value is not compatible with the variable's type constraint: ["thingy"].foo: a bool is required.`; got != want {
|
||||
t.Errorf("wrong diagnostic detault\ngot: %s\nwant: %s", got, want)
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue