Skip to content

Commit 68d10cd

Browse files
committed
Add range to terraform_required_version errors
1 parent 417b2c2 commit 68d10cd

File tree

2 files changed

+55
-7
lines changed

2 files changed

+55
-7
lines changed

rules/terraform_required_version.go

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,32 @@ func (r *TerraformRequiredVersionRule) Check(runner tflint.Runner) error {
7878
exists = exists || ok
7979
}
8080

81-
if !exists {
82-
return runner.EmitIssue(
83-
r,
84-
`terraform "required_version" attribute is required`,
85-
hcl.Range{},
86-
)
81+
if exists {
82+
return nil
83+
}
84+
85+
var missingRange hcl.Range
86+
87+
if len(body.Blocks) > 0 {
88+
missingRange = body.Blocks[0].DefRange
89+
} else {
90+
// If there are no "terraform" blocks, create a hcl.Range for a file
91+
92+
// Grab a single filename from keys of files map
93+
var filename string
94+
for k := range files {
95+
filename = k
96+
break
97+
}
98+
99+
missingRange = hcl.Range{
100+
Filename: filename,
101+
}
87102
}
88103

89-
return nil
104+
return runner.EmitIssue(
105+
r,
106+
`terraform "required_version" attribute is required`,
107+
missingRange,
108+
)
90109
}

rules/terraform_required_version_test.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package rules
33
import (
44
"testing"
55

6+
"github.com/hashicorp/hcl/v2"
67
"github.com/terraform-linters/tflint-plugin-sdk/helper"
78
)
89

@@ -25,6 +26,17 @@ terraform {}
2526
{
2627
Rule: NewTerraformRequiredVersionRule(),
2728
Message: "terraform \"required_version\" attribute is required",
29+
Range: hcl.Range{
30+
Filename: "module.tf",
31+
Start: hcl.Pos{
32+
Line: 2,
33+
Column: 1,
34+
},
35+
End: hcl.Pos{
36+
Line: 2,
37+
Column: 10,
38+
},
39+
},
2840
},
2941
},
3042
},
@@ -53,6 +65,23 @@ terraform {
5365
`,
5466
Expected: helper.Issues{},
5567
},
68+
{
69+
Name: "no terraform block",
70+
Content: `
71+
locals {
72+
foo = "bar"
73+
}
74+
`,
75+
Expected: helper.Issues{
76+
{
77+
Rule: NewTerraformRequiredVersionRule(),
78+
Message: "terraform \"required_version\" attribute is required",
79+
Range: hcl.Range{
80+
Filename: "module.tf",
81+
},
82+
},
83+
},
84+
},
5685
}
5786

5887
rule := NewTerraformRequiredVersionRule()

0 commit comments

Comments
 (0)