Merge pull request #28640 from hashicorp/jbardin/configload-diags

Don't try to build the config if there were errors loading
This commit is contained in:
James Bardin 2021-05-07 12:32:45 -04:00 committed by GitHub
commit 3252df4b91
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 22 additions and 81 deletions

View File

@ -1,7 +1,7 @@
{
"format_version": "0.1",
"valid": false,
"error_count": 6,
"error_count": 4,
"warning_count": 0,
"diagnostics": [
{
@ -107,58 +107,6 @@
"highlight_end_offset": 25,
"values": []
}
},
{
"severity": "error",
"summary": "Module not installed",
"detail": "This module is not yet installed. Run \"terraform init\" to install all modules required by this configuration.",
"range": {
"filename": "testdata/validate-invalid/incorrectmodulename/main.tf",
"start": {
"line": 4,
"column": 1,
"byte": 27
},
"end": {
"line": 4,
"column": 15,
"byte": 41
}
},
"snippet": {
"context": null,
"code": "module \"super\" {",
"start_line": 4,
"highlight_start_offset": 0,
"highlight_end_offset": 14,
"values": []
}
},
{
"severity": "error",
"summary": "Module not installed",
"detail": "This module is not yet installed. Run \"terraform init\" to install all modules required by this configuration.",
"range": {
"filename": "testdata/validate-invalid/incorrectmodulename/main.tf",
"start": {
"line": 1,
"column": 1,
"byte": 0
},
"end": {
"line": 1,
"column": 22,
"byte": 21
}
},
"snippet": {
"context": null,
"code": "module \"super#module\" {",
"start_line": 1,
"highlight_start_offset": 0,
"highlight_end_offset": 21,
"values": []
}
}
]
}

View File

@ -1,7 +1,7 @@
{
"format_version": "0.1",
"valid": false,
"error_count": 2,
"error_count": 1,
"warning_count": 0,
"diagnostics": [
{
@ -29,32 +29,6 @@
"highlight_end_offset": 21,
"values": []
}
},
{
"severity": "error",
"summary": "Module not installed",
"detail": "This module is not yet installed. Run \"terraform init\" to install all modules required by this configuration.",
"range": {
"filename": "testdata/validate-invalid/multiple_modules/main.tf",
"start": {
"line": 5,
"column": 1,
"byte": 46
},
"end": {
"line": 5,
"column": 22,
"byte": 67
}
},
"snippet": {
"context": null,
"code": "module \"multi_module\" {",
"start_line": 5,
"highlight_start_offset": 0,
"highlight_end_offset": 21,
"values": []
}
}
]
}

View File

@ -20,7 +20,7 @@ import (
// required to process the individual modules
func (l *Loader) LoadConfig(rootDir string) (*configs.Config, hcl.Diagnostics) {
rootMod, diags := l.parser.LoadConfigDir(rootDir)
if rootMod == nil {
if rootMod == nil || diags.HasErrors() {
return nil, diags
}

View File

@ -80,3 +80,19 @@ func TestLoaderLoadConfig_addVersion(t *testing.T) {
t.Fatalf("wrong error\ngot:\n%s\n\nwant: containing %q", got, want)
}
}
func TestLoaderLoadConfig_loadDiags(t *testing.T) {
// building a config which didn't load correctly may cause configs to panic
fixtureDir := filepath.Clean("testdata/invalid-names")
loader, err := NewLoader(&Config{
ModulesDir: filepath.Join(fixtureDir, ".terraform/modules"),
})
if err != nil {
t.Fatalf("unexpected error from NewLoader: %s", err)
}
_, diags := loader.LoadConfig(fixtureDir)
if !diags.HasErrors() {
t.Fatalf("success; want error")
}
}

View File

@ -0,0 +1,3 @@
provider "42_bad!" {
invalid_provider_name = "yes"
}