50
50
[u' ', u'\t', u'\n', u'\xa0', u'\u2000', u'\u2002'],
51
51
[u'a', u'-', u'\u8336', u'.']),
53
[u'a', u'-', u'\u8336'],
54
[u' ', u'\t', u'\n', u'\xa0', u'\u2000', u'\u2002', u'.']),
53
[u'a', u'-', u'\u8336', u'.'],
54
[u' ', u'\t', u'\n', u'\xa0', u'\u2000', u'\u2002']),
56
56
[u'a', u'Z', u'\u017e', u'\u8336'],
57
57
[u':', u'-', u'\u25cf', u'.']),
59
[u':', u'-', u'\u25cf'],
59
[u':', u'-', u'\u25cf', u'.'],
63
[u'\xcc', u'\u8336', u'.']),
62
[u'a', u'Q', u'^', u'.'],
63
[u'\xcc', u'\u8336']),
65
65
[u'\xcc', u'\u8336'],
66
66
[u'a', u'Q', u'^', u'.']),
111
111
def test_question_mark(self):
112
112
self.assertMatch([
114
[u'xfoo', u'bar/xfoo', u'bar/\u8336foo'],
115
[u'.foo', u'bar/.foo', u'bar/foo', u'foo']),
114
[u'xfoo', u'bar/xfoo', u'bar/\u8336foo', u'.foo', u'bar/.foo'],
115
[u'bar/foo', u'foo']),
117
117
[u'fooxbar', u'foo.bar', u'foo\u8336bar', u'qyzzy/foo.bar'],
120
[u'foo/xbar', u'foo/\u8336bar'],
121
[u'foo/.bar', u'foo/bar', u'bar/foo/xbar']),
120
[u'foo/xbar', u'foo/\u8336bar', u'foo/.bar'],
121
[u'foo/bar', u'bar/foo/xbar']),
124
124
def test_asterisk(self):
127
127
[u'xx', u'x.x', u'x\u8336..x', u'\u8336/x.x', u'x.y.x'],
128
128
[u'x/x', u'bar/x/bar/x', u'bax/abaxab']),
130
[u'foo/x', u'foo/bax', u'foo/a.x'],
131
[u'foo/.x', u'foo/.q.x', u'foo/bar/bax']),
130
[u'foo/x', u'foo/bax', u'foo/a.x', u'foo/.x', u'foo/.q.x'],
133
[u'\u8336/x', u'foo/x', u'foo/bax', u'x/a.x'],
134
[u'.foo/x', u'\u8336/.x', u'foo/.q.x', u'foo/bar/bax']),
133
[u'\u8336/x', u'foo/x', u'foo/bax', u'x/a.x', u'.foo/x',
134
u'\u8336/.x', u'foo/.q.x'],
136
137
[u'foo', u'foo.bar'],
137
138
[u'.foo', u'foo/bar', u'foo/.bar']),
139
140
[u'bar', u'foobar', ur'foo\nbar', u'foo.bar', u'foo/bar',
140
u'foo/foobar', u'foo/f.bar'],
141
[u'.bar', u'foo/.bar']),
144
def test_leading_dotslash(self):
141
u'foo/foobar', u'foo/f.bar', u'.bar', u'foo/.bar'],
145
def test_double_asterisk(self):
147
# expected uses of double asterisk
149
[u'foo/x', u'foo/bar/x'],
150
[u'foox', u'foo/bax', u'foo/.x', u'foo/bar/bax']),
152
[u'bar', u'foo/bar'],
153
[u'foobar', u'foo.bar', u'foo/foobar', u'foo/f.bar',
154
u'.bar', u'foo/.bar']),
155
# check that we ignore extra *s, so *** is treated like ** not *.
157
[u'foo/x', u'foo/bar/x'],
158
[u'foox', u'foo/bax', u'foo/.x', u'foo/bar/bax']),
160
[u'bar', u'foo/bar'],
161
[u'foobar', u'foo.bar', u'foo/foobar', u'foo/f.bar',
162
u'.bar', u'foo/.bar']),
163
# the remaining tests check that ** is interpreted as *
164
# unless it is a whole path component
166
[u'x\u8336/x', u'x/x'],
167
[u'xx', u'x.x', u'bar/x/bar/x', u'x.y.x', u'x/y/x']),
169
[u'xx', u'x.x', u'x\u8336..x', u'foo/x.x', u'x.y.x'],
170
[u'bar/x/bar/x', u'xfoo/bar/x', u'x/x', u'bax/abaxab']),
172
[u'foo/x', u'foo/bax', u'foo/a.x', u'foo/.x', u'foo/.q.x'],
175
[u'foo', u'foo.bar'],
176
[u'.foo', u'foo/bar', u'foo/.bar']),
178
[u'bar', u'foobar', ur'foo\nbar', u'foo.bar', u'foo/bar',
179
u'foo/foobar', u'foo/f.bar', u'.bar', u'foo/.bar'],
183
def test_leading_dot_slash(self):
145
184
self.assertMatch([
151
190
[u'foo/bar', u'foo/.bar', u'x/foo/y']),
154
def test_leading_stardot(self):
193
def test_leading_asterisk_dot(self):
155
194
self.assertMatch([
157
[u'foo/bar/baz.x', u'\u8336/Q.x', u'foo.y.x'],
158
[ u'.foo.x', u'bar/.foo.x', u'.x']),
196
[u'foo/bar/baz.x', u'\u8336/Q.x', u'foo.y.x', u'.foo.x',
197
u'bar/.foo.x', u'.x',],
160
[u'foo/b.bar', u'foo/a.b.bar'],
161
[u'foo/.bar', u'foo/bar']),
200
[u'foo/b.bar', u'foo/a.b.bar', u'foo/.bar'],
203
[u'foo.py.~1~', u'.foo.py.~1~'],
167
207
def test_end_anchor(self):