forked from golangci/golangci-lint
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathissues_test.go
132 lines (122 loc) · 2.89 KB
/
issues_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package config
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestGetExcludePatterns(t *testing.T) {
patterns := GetExcludePatterns(nil)
assert.Equal(t, patterns, DefaultExcludePatterns)
}
func TestGetExcludePatterns_includes(t *testing.T) {
include := []string{DefaultExcludePatterns[0].ID, DefaultExcludePatterns[1].ID}
exclude := GetExcludePatterns(include)
assert.Len(t, exclude, len(DefaultExcludePatterns)-len(include))
for _, p := range exclude {
assert.NotContains(t, include, p.ID)
assert.Contains(t, DefaultExcludePatterns, p)
}
}
func TestExcludeRule_Validate(t *testing.T) {
testCases := []struct {
desc string
rule *ExcludeRule
expected string
}{
{
desc: "empty rule",
rule: &ExcludeRule{},
expected: "at least 2 of (text, source, path[-except], linters) should be set",
},
{
desc: "only path rule",
rule: &ExcludeRule{
BaseRule{
Path: "test",
},
},
expected: "at least 2 of (text, source, path[-except], linters) should be set",
},
{
desc: "only path-except rule",
rule: &ExcludeRule{
BaseRule{
PathExcept: "test",
},
},
expected: "at least 2 of (text, source, path[-except], linters) should be set",
},
{
desc: "only text rule",
rule: &ExcludeRule{
BaseRule{
Text: "test",
},
},
expected: "at least 2 of (text, source, path[-except], linters) should be set",
},
{
desc: "only source rule",
rule: &ExcludeRule{
BaseRule{
Source: "test",
},
},
expected: "at least 2 of (text, source, path[-except], linters) should be set",
},
{
desc: "invalid path rule",
rule: &ExcludeRule{
BaseRule{
Path: "**test",
},
},
expected: "invalid path regex: error parsing regexp: missing argument to repetition operator: `*`",
},
{
desc: "invalid path-except rule",
rule: &ExcludeRule{
BaseRule{
PathExcept: "**test",
},
},
expected: "invalid path-except regex: error parsing regexp: missing argument to repetition operator: `*`",
},
{
desc: "invalid text rule",
rule: &ExcludeRule{
BaseRule{
Text: "**test",
},
},
expected: "invalid text regex: error parsing regexp: missing argument to repetition operator: `*`",
},
{
desc: "invalid source rule",
rule: &ExcludeRule{
BaseRule{
Source: "**test",
},
},
expected: "invalid source regex: error parsing regexp: missing argument to repetition operator: `*`",
},
{
desc: "path and path-expect",
rule: &ExcludeRule{
BaseRule{
Path: "test",
PathExcept: "test",
},
},
expected: "path and path-except should be set at the same time",
},
}
for _, test := range testCases {
test := test
t.Run(test.desc, func(t *testing.T) {
t.Parallel()
err := test.rule.Validate()
require.EqualError(t, err, test.expected)
})
}
}