backport of commit b366ff28ff

This commit is contained in:
Lucas Bajolet
2024-03-07 19:18:41 +00:00
parent 843d9afaad
commit 4c5a7cc014
3 changed files with 31 additions and 1 deletions
+15
View File
@@ -177,3 +177,18 @@ func Test_fmt_pipe(t *testing.T) {
})
}
}
const malformedTemplate = "test-fixtures/fmt_errs/malformed.pkr.hcl"
func TestFmtParseError(t *testing.T) {
p := helperCommand(t, "fmt", malformedTemplate)
outs, err := p.CombinedOutput()
if err == nil {
t.Errorf("Expected failure to format file, but command did not fail")
}
strLogs := string(outs)
if !strings.Contains(strLogs, "An argument or block definition is required here.") {
t.Errorf("Expected some diags about parse error, found none")
}
}
@@ -0,0 +1,14 @@
variable "region" {
type =string
}
invalid
source "amazon-ebs" "example" {
region = var.region
}
build {
sources = ["source.amazon-ebs.example"]
}
+2 -1
View File
@@ -12,6 +12,7 @@ import (
"path/filepath"
"strings"
"github.com/hashicorp/go-multierror"
"github.com/hashicorp/hcl/v2"
"github.com/hashicorp/hcl/v2/hclparse"
"github.com/hashicorp/hcl/v2/hclwrite"
@@ -135,7 +136,7 @@ func (f *HCL2Formatter) processFile(filename string) ([]byte, error) {
_, diags := f.parser.ParseHCL(inSrc, filename)
if diags.HasErrors() {
return nil, fmt.Errorf("failed to parse HCL %s", filename)
return nil, multierror.Append(nil, diags.Errs()...)
}
outSrc := hclwrite.Format(inSrc)