-
Notifications
You must be signed in to change notification settings - Fork 41
/
test_pathspec.py
129 lines (119 loc) · 2.88 KB
/
test_pathspec.py
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
# encoding: utf-8
"""
This script tests ``PathSpec``.
"""
import unittest
import pathspec
class PathSpecTest(unittest.TestCase):
"""
The ``PathSpecTest`` class tests the ``PathSpec`` class.
"""
def test_01_current_dir_paths(self):
"""
Tests that paths referencing the current directory will be properly
normalized and matched.
"""
spec = pathspec.PathSpec.from_lines('gitwildmatch', [
'*.txt',
'!test1/',
])
results = set(spec.match_files([
'./src/test1/a.txt',
'./src/test1/b.txt',
'./src/test1/c/c.txt',
'./src/test2/a.txt',
'./src/test2/b.txt',
'./src/test2/c/c.txt',
]))
self.assertEqual(results, {
'./src/test2/a.txt',
'./src/test2/b.txt',
'./src/test2/c/c.txt',
})
def test_01_match_files(self):
"""
Tests that matching files one at a time yields the same results as
matching multiples files at once.
"""
spec = pathspec.PathSpec.from_lines('gitwildmatch', [
'*.txt',
'!test1/',
])
test_files = [
'src/test1/a.txt',
'src/test1/b.txt',
'src/test1/c/c.txt',
'src/test2/a.txt',
'src/test2/b.txt',
'src/test2/c/c.txt',
]
single_results = set(filter(spec.match_file, test_files))
multi_results = set(spec.match_files(test_files))
self.assertEqual(single_results, multi_results)
def test_01_windows_current_dir_paths(self):
"""
Tests that paths referencing the current directory will be properly
normalized and matched.
"""
spec = pathspec.PathSpec.from_lines('gitwildmatch', [
'*.txt',
'!test1/',
])
results = set(spec.match_files([
'.\\src\\test1\\a.txt',
'.\\src\\test1\\b.txt',
'.\\src\\test1\\c\\c.txt',
'.\\src\\test2\\a.txt',
'.\\src\\test2\\b.txt',
'.\\src\\test2\\c\\c.txt',
], separators=('\\',)))
self.assertEqual(results, {
'.\\src\\test2\\a.txt',
'.\\src\\test2\\b.txt',
'.\\src\\test2\\c\\c.txt',
})
def test_01_windows_paths(self):
"""
Tests that Windows paths will be properly normalized and matched.
"""
spec = pathspec.PathSpec.from_lines('gitwildmatch', [
'*.txt',
'!test1/',
])
results = set(spec.match_files([
'src\\test1\\a.txt',
'src\\test1\\b.txt',
'src\\test1\\c\\c.txt',
'src\\test2\\a.txt',
'src\\test2\\b.txt',
'src\\test2\\c\\c.txt',
], separators=('\\',)))
self.assertEqual(results, {
'src\\test2\\a.txt',
'src\\test2\\b.txt',
'src\\test2\\c\\c.txt',
})
def test_02_eq(self):
"""
Tests equality.
"""
first_spec = pathspec.PathSpec.from_lines('gitwildmatch', [
'*.txt',
'!test1/',
])
second_spec = pathspec.PathSpec.from_lines('gitwildmatch', [
'*.txt',
'!test1/',
])
self.assertEqual(first_spec, second_spec)
def test_02_ne(self):
"""
Tests equality.
"""
first_spec = pathspec.PathSpec.from_lines('gitwildmatch', [
'*.txt',
])
second_spec = pathspec.PathSpec.from_lines('gitwildmatch', [
'!*.txt',
])
self.assertNotEqual(first_spec, second_spec)