Skip to content

Commit 5624739

Browse files
authored
provider_missing_default_tags: correctly handle unknown values (#851)
1 parent 20dacdc commit 5624739

File tree

2 files changed

+48
-13
lines changed

2 files changed

+48
-13
lines changed

rules/aws_provider_missing_default_tags.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ func (r *AwsProviderMissingDefaultTagsRule) Check(runner tflint.Runner) error {
9999
return nil
100100
}, nil)
101101
if err != nil {
102-
return nil
102+
return err
103103
}
104104
}
105105
logger.Debug("Walk `%s` provider", providerAlias)
@@ -131,8 +131,7 @@ func (r *AwsProviderMissingDefaultTagsRule) Check(runner tflint.Runner) error {
131131
keys, known := getKeysForValue(val)
132132

133133
if !known {
134-
logger.Warn("The missing aws tags rule can only evaluate provided variables, skipping %s.", provider.Labels[0]+"."+providerAlias+"."+providerDefaultTagsBlockName+"."+providerTagsAttributeName)
135-
return nil
134+
return tflint.ErrUnknownValue
136135
}
137136

138137
logger.Debug("Walk `%s` provider with tags `%v`", providerAlias, keys)
@@ -141,7 +140,8 @@ func (r *AwsProviderMissingDefaultTagsRule) Check(runner tflint.Runner) error {
141140
}, nil)
142141

143142
if err != nil {
144-
return nil
143+
logger.Warn("Could not evaluate tags, skipping %s.%s.%s.%s: %s", provider.Labels[0], providerAlias, providerDefaultTagsBlockName, providerTagsAttributeName, err)
144+
continue
145145
}
146146

147147
// Check tags

rules/aws_provider_missing_default_tags_test.go

+44-9
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"testing"
55

66
hcl "github.com/hashicorp/hcl/v2"
7-
"github.com/stretchr/testify/assert"
87
"github.com/terraform-linters/tflint-plugin-sdk/helper"
98
)
109

@@ -14,7 +13,6 @@ func Test_AwsProviderMissingDefaultTags(t *testing.T) {
1413
Content string
1514
Config string
1615
Expected helper.Issues
17-
RaiseErr error
1816
}{
1917
{
2018
Name: "Default tags for provider",
@@ -66,7 +64,7 @@ rule "aws_provider_missing_default_tags" {
6664
Content: `
6765
provider "aws" {
6866
default_tags {
69-
tags = []
67+
tags = {}
7068
}
7169
}`,
7270
Config: `
@@ -131,6 +129,47 @@ rule "aws_provider_missing_default_tags" {
131129
},
132130
},
133131
},
132+
{
133+
Name: "default tags wholly unknown",
134+
Content: `
135+
provider "aws" {
136+
default_tags {
137+
tags = var.tags
138+
}
139+
}
140+
141+
variable "tags" {
142+
type = map(string)
143+
}`,
144+
Config: `
145+
rule "aws_provider_missing_default_tags" {
146+
enabled = true
147+
tags = ["Bazz", "Fooz"]
148+
}`,
149+
Expected: helper.Issues{},
150+
},
151+
{
152+
Name: "null key",
153+
Content: `
154+
provider "aws" {
155+
default_tags {
156+
tags = {
157+
(var.tag): "bar"
158+
}
159+
}
160+
}
161+
162+
variable "tag" {
163+
type = string
164+
}
165+
`,
166+
Config: `
167+
rule "aws_provider_missing_default_tags" {
168+
enabled = true
169+
tags = ["Bazz", "Fooz"]
170+
}`,
171+
Expected: helper.Issues{},
172+
},
134173
}
135174

136175
rule := NewAwsProviderMissingDefaultTagsRule()
@@ -139,14 +178,10 @@ rule "aws_provider_missing_default_tags" {
139178
t.Run(tc.Name, func(t *testing.T) {
140179
runner := helper.TestRunner(t, map[string]string{"module.tf": tc.Content, ".tflint.hcl": tc.Config})
141180

142-
err := rule.Check(runner)
143-
144-
if tc.RaiseErr == nil && err != nil {
145-
t.Fatalf("Unexpected error occurred in test \"%s\": %s", tc.Name, err)
181+
if err := rule.Check(runner); err != nil {
182+
t.Fatalf("unexpected error: %s", err)
146183
}
147184

148-
assert.Equal(t, tc.RaiseErr, err)
149-
150185
helper.AssertIssues(t, tc.Expected, runner.Issues)
151186
})
152187
}

0 commit comments

Comments
 (0)