Skip to content

Commit 03dfc35

Browse files
authored
Merge pull request #83 from wata727/refactoring_default_printer
Refactoring for default printer
2 parents 4ccac53 + 5c800ee commit 03dfc35

File tree

3 files changed

+79
-18
lines changed

3 files changed

+79
-18
lines changed

printer/checkstyle_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package printer
22

33
import (
4-
"testing"
5-
64
"bytes"
5+
"testing"
76

87
"github.com/wata727/tflint/issue"
98
)

printer/default.go

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,16 @@ func (p *Printer) DefaultPrint(issues []*issue.Issue) {
2222
}
2323

2424
sort.Sort(issue.ByFile{Issues: issue.Issues(issues)})
25-
bIssue := issues[0]
26-
sIssues := []*issue.Issue{
27-
issues[0],
28-
}
25+
issuesByFile := []*issue.Issue{}
2926

30-
for _, is := range issues[1:] {
31-
if bIssue.File != is.File {
32-
p.printByLine(sIssues)
33-
sIssues = nil
27+
for _, i := range issues {
28+
if len(issuesByFile) != 0 && issuesByFile[len(issuesByFile)-1].File != i.File {
29+
p.printByLine(issuesByFile)
30+
issuesByFile = nil
3431
}
35-
36-
sIssues = append(sIssues, is)
37-
bIssue = is
32+
issuesByFile = append(issuesByFile, i)
3833
}
39-
if sIssues != nil {
40-
p.printByLine(sIssues)
41-
}
42-
34+
p.printByLine(issuesByFile)
4335
p.printSummary(issues)
4436
}
4537

printer/default_test.go

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,73 @@
11
package printer
22

3-
// Nothing to do
3+
import (
4+
"bytes"
5+
"fmt"
6+
"testing"
7+
8+
"github.com/wata727/tflint/issue"
9+
)
10+
11+
func TestDefaultPrint(t *testing.T) {
12+
cases := []struct {
13+
Name string
14+
Input []*issue.Issue
15+
Result string
16+
}{
17+
{
18+
Name: "no issues",
19+
Input: []*issue.Issue{},
20+
Result: successColor("Awesome! Your code is following the best practices :)") + "\n",
21+
},
22+
{
23+
Name: "multi files",
24+
Input: []*issue.Issue{
25+
{
26+
File: "template.tf",
27+
Line: 1,
28+
Type: "ERROR",
29+
Message: "example error message",
30+
},
31+
{
32+
File: "application.tf",
33+
Line: 10,
34+
Type: "NOTICE",
35+
Message: "example notice message",
36+
},
37+
{
38+
File: "template.tf",
39+
Line: 5,
40+
Type: "WARNING",
41+
Message: "example warning message",
42+
},
43+
{
44+
File: "template.tf",
45+
Line: 3,
46+
Type: "WARNING",
47+
Message: "example warning message",
48+
},
49+
},
50+
Result: fmt.Sprintf(`%s
51+
%s example notice message
52+
%s
53+
%s example error message
54+
%s example warning message
55+
%s example warning message
56+
57+
Result: %s (%s , %s , %s)
58+
`, fileColor("application.tf"), noticeColor("NOTICE:10"), fileColor("template.tf"), errorColor("ERROR:1"), warningColor("WARNING:3"), warningColor("WARNING:5"), fileColor("4 issues"), errorColor("1 errors"), warningColor("2 warnings"), noticeColor("1 notices")),
59+
},
60+
}
61+
62+
for _, tc := range cases {
63+
stdout := &bytes.Buffer{}
64+
stderr := &bytes.Buffer{}
65+
p := NewPrinter(stdout, stderr)
66+
p.DefaultPrint(tc.Input)
67+
result := stdout.String()
68+
69+
if result != tc.Result {
70+
t.Fatalf("\nBad: %s\nExpected: %s\n\ntestcase: %s", result, tc.Result, tc.Name)
71+
}
72+
}
73+
}

0 commit comments

Comments
 (0)