-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathignore_test.go
117 lines (84 loc) · 3 KB
/
ignore_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
package ignore
import (
"io/ioutil"
"testing"
"github.com/stretchr/testify/assert"
)
func TestIgnoreParseLine(t *testing.T) {
result, _ := ParseIgnoreLines([]string{".idea"})
assert.Equal(t, len(result), 1)
assert.Equal(t, result[0].Kind, "Path")
assert.Equal(t, result[0].Original, ".idea")
assert.Equal(t, result[0].Value, ".idea")
}
func TestIgnoreParseNegation(t *testing.T) {
result, _ := ParseIgnoreLines([]string{"!.idea"})
assert.Equal(t, len(result), 1)
assert.Equal(t, result[0].Kind, "NegatedPath")
assert.Equal(t, result[0].Original, "!.idea")
assert.Equal(t, result[0].Value, ".idea")
}
func TestIgnoreParseComment(t *testing.T) {
result, _ := ParseIgnoreLines([]string{"# Amazing"})
assert.Equal(t, len(result), 1)
assert.Equal(t, result[0].Kind, "Comment")
assert.Equal(t, result[0].Original, "# Amazing")
assert.Equal(t, result[0].Value, "Amazing")
}
func TestIgnoreParseEmpty(t *testing.T) {
result, _ := ParseIgnoreLines([]string{""})
assert.Equal(t, len(result), 1)
assert.Equal(t, result[0].Kind, "Empty")
assert.Equal(t, result[0].Original, "")
assert.Equal(t, result[0].Value, "")
}
func TestIgnoreParseWhitespace(t *testing.T) {
result, _ := ParseIgnoreLines([]string{" "})
assert.Equal(t, len(result), 1)
assert.Equal(t, result[0].Kind, "Empty")
assert.Equal(t, result[0].Original, " ")
assert.Equal(t, result[0].Value, " ")
}
func TestIgnoreParseWhitespaceBeforePath(t *testing.T) {
result, _ := ParseIgnoreLines([]string{" .idea"})
assert.Equal(t, len(result), 1)
assert.Equal(t, result[0].Kind, "Path")
assert.Equal(t, result[0].Original, " .idea")
assert.Equal(t, result[0].Value, " .idea")
}
func TestIgnoreParseMultiLine(t *testing.T) {
result, _ := ParseIgnoreLines([]string{"# This is a .gitignore file", ".idea", "!foo"})
assert.Equal(t, len(result), 3)
assert.Equal(t, result[0].Kind, "Comment")
assert.Equal(t, result[0].Original, "# This is a .gitignore file")
assert.Equal(t, result[0].Value, "This is a .gitignore file")
assert.Equal(t, result[1].Kind, "Path")
assert.Equal(t, result[1].Original, ".idea")
assert.Equal(t, result[1].Value, ".idea")
assert.Equal(t, result[2].Kind, "NegatedPath")
assert.Equal(t, result[2].Original, "!foo")
assert.Equal(t, result[2].Value, "foo")
}
func TestIgnoreParseBytes(t *testing.T) {
bytes, _ := ioutil.ReadFile("test_fixtures/gitignore")
result, _ := ParseIgnoreBytes(bytes)
assert.Equal(t, len(result), 2)
}
func TestRightSpaceNoWhiteSpace(t *testing.T) {
assert.Equal(t, "foo", TrimRightSpace("foo"))
}
func TestRightSpaceTrailingWhiteSpace(t *testing.T) {
assert.Equal(t, "bar", TrimRightSpace("bar "))
}
func TestRightSpaceTrailingEscapedWhiteSpace(t *testing.T) {
assert.Equal(t, "baz\\ ", TrimRightSpace("baz\\ "))
}
func TestUnescapeNoEscapedChars(t *testing.T) {
assert.Equal(t, "foo", Unescape("foo"))
}
func TestUnescapeNoEscapedHash(t *testing.T) {
assert.Equal(t, "#foo", Unescape("\\#foo"))
}
func TestUnescapeEscapedSlashes(t *testing.T) {
assert.Equal(t, "bar\\", Unescape("bar\\\\"))
}