Skip to content

Commit 672a511

Browse files
authored
Remove hard-coded versions from integration tests (#835)
1 parent fa14d9e commit 672a511

File tree

4 files changed

+37
-17
lines changed

4 files changed

+37
-17
lines changed

integration/cty-based-eval/result.json renamed to integration/cty-based-eval/result.json.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"rule": {
55
"name": "aws_resource_missing_tags",
66
"severity": "info",
7-
"link": "https://github.com/terraform-linters/tflint-ruleset-aws/blob/v0.37.0/docs/rules/aws_resource_missing_tags.md"
7+
"link": "https://github.com/terraform-linters/tflint-ruleset-aws/blob/v{{.Version}}/docs/rules/aws_resource_missing_tags.md"
88
},
99
"message": "The resource is missing the following tags: \"Environment\", \"Name\", \"Type\".",
1010
"range": {

integration/integration_test.go

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,23 @@ package integration
33
import (
44
"bytes"
55
"encoding/json"
6+
"fmt"
67
"os"
78
"os/exec"
89
"path/filepath"
910
"runtime"
11+
"strings"
1012
"testing"
13+
"text/template"
1114

1215
"github.com/google/go-cmp/cmp"
16+
"github.com/terraform-linters/tflint-ruleset-aws/project"
1317
)
1418

19+
type meta struct {
20+
Version string
21+
}
22+
1523
func TestIntegration(t *testing.T) {
1624
cases := []struct {
1725
Name string
@@ -96,19 +104,13 @@ func TestIntegration(t *testing.T) {
96104
t.Fatalf("%s, stdout=%s stderr=%s", err, stdout.String(), stderr.String())
97105
}
98106

99-
var b []byte
100-
var err error
101-
if runtime.GOOS == "windows" && IsWindowsResultExist() {
102-
b, err = os.ReadFile(filepath.Join(testDir, "result_windows.json"))
103-
} else {
104-
b, err = os.ReadFile(filepath.Join(testDir, "result.json"))
105-
}
107+
rawWant, err := readResultFile(testDir)
106108
if err != nil {
107109
t.Fatal(err)
108110
}
109111

110-
var expected interface{}
111-
if err := json.Unmarshal(b, &expected); err != nil {
112+
var want interface{}
113+
if err := json.Unmarshal(rawWant, &want); err != nil {
112114
t.Fatal(err)
113115
}
114116

@@ -117,14 +119,32 @@ func TestIntegration(t *testing.T) {
117119
t.Fatal(err)
118120
}
119121

120-
if diff := cmp.Diff(got, expected); diff != "" {
122+
if diff := cmp.Diff(got, want); diff != "" {
121123
t.Fatal(diff)
122124
}
123125
})
124126
}
125127
}
126128

127-
func IsWindowsResultExist() bool {
128-
_, err := os.Stat("result_windows.json")
129-
return !os.IsNotExist(err)
129+
func readResultFile(dir string) ([]byte, error) {
130+
resultFile := "result.json"
131+
if runtime.GOOS == "windows" {
132+
if _, err := os.Stat(filepath.Join(dir, "result_windows.json")); !os.IsNotExist(err) {
133+
resultFile = "result_windows.json"
134+
}
135+
}
136+
if _, err := os.Stat(fmt.Sprintf("%s.tmpl", resultFile)); !os.IsNotExist(err) {
137+
resultFile = fmt.Sprintf("%s.tmpl", resultFile)
138+
}
139+
140+
if !strings.HasSuffix(resultFile, ".tmpl") {
141+
return os.ReadFile(filepath.Join(dir, resultFile))
142+
}
143+
144+
want := new(bytes.Buffer)
145+
tmpl := template.Must(template.ParseFiles(filepath.Join(dir, resultFile)))
146+
if err := tmpl.Execute(want, meta{Version: project.Version}); err != nil {
147+
return nil, err
148+
}
149+
return want.Bytes(), nil
130150
}

integration/map-attribute/result.json renamed to integration/map-attribute/result.json.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"rule": {
55
"name": "aws_resource_missing_tags",
66
"severity": "info",
7-
"link": "https://github.com/terraform-linters/tflint-ruleset-aws/blob/v0.37.0/docs/rules/aws_resource_missing_tags.md"
7+
"link": "https://github.com/terraform-linters/tflint-ruleset-aws/blob/v{{.Version}}/docs/rules/aws_resource_missing_tags.md"
88
},
99
"message": "The resource is missing the following tags: \"Environment\", \"Name\", \"Type\".",
1010
"range": {

integration/rule-config/result.json renamed to integration/rule-config/result.json.tmpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"rule": {
55
"name": "aws_s3_bucket_name",
66
"severity": "error",
7-
"link": "https://github.com/terraform-linters/tflint-ruleset-aws/blob/v0.37.0/docs/rules/aws_s3_bucket_name.md"
7+
"link": "https://github.com/terraform-linters/tflint-ruleset-aws/blob/v{{.Version}}/docs/rules/aws_s3_bucket_name.md"
88
},
99
"message": "Bucket name \"foo_bar\" does not match regex \"^[a-z\\-]+$\"",
1010
"range": {
@@ -24,7 +24,7 @@
2424
"rule": {
2525
"name": "aws_s3_bucket_name",
2626
"severity": "error",
27-
"link": "https://github.com/terraform-linters/tflint-ruleset-aws/blob/v0.37.0/docs/rules/aws_s3_bucket_name.md"
27+
"link": "https://github.com/terraform-linters/tflint-ruleset-aws/blob/v{{.Version}}/docs/rules/aws_s3_bucket_name.md"
2828
},
2929
"message": "Bucket names can consist only of lowercase letters, numbers, dots (.), and hyphens (-). (name: \"foo_bar\", regex: \"[^a-z0-9\\\\.\\\\-]\")",
3030
"range": {

0 commit comments

Comments
 (0)