~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_globbing.py

  • Committer: Aaron Bentley
  • Date: 2007-02-06 14:52:16 UTC
  • mfrom: (2266 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2268.
  • Revision ID: abentley@panoramicfeedback.com-20070206145216-fcpi8o3ufvuzwbp9
Merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
from bzrlib.globbing import (
19
19
    Globster,
20
 
    _OrderedGlobster,
21
20
    )
22
21
from bzrlib.tests import (
23
22
    TestCase, 
115
114
            (u'[a-z]',
116
115
             [u'a', u'q', u'f'],
117
116
             [u'A', u'Q', u'F']),
118
 
            (u'[^a-z]',
 
117
            (ur'[^a-z]',
119
118
             [u'A', u'Q', u'F'],
120
119
             [u'a', u'q', u'f']),
121
120
            (u'[!a-z]foo',
122
121
             [u'Afoo', u'.foo'],
123
122
             [u'afoo', u'ABfoo']),
124
 
            (u'foo[!a-z]bar',
 
123
            (ur'foo[!a-z]bar',
125
124
             [u'fooAbar', u'foo.bar'],
126
125
             [u'foojbar']),
127
 
            (u'[\x20-\x30\u8336]',
 
126
            (ur'[\x20-\x30\u8336]',
128
127
             [u'\040', u'\044', u'\u8336'],
129
128
             [u'\x1f']),
130
 
            (u'[^\x20-\x30\u8336]',
 
129
            (ur'[^\x20-\x30\u8336]',
131
130
             [u'\x1f'],
132
131
             [u'\040', u'\044', u'\u8336']),
133
132
            ])
134
133
 
135
134
    def test_regex(self):
136
135
        self.assertMatch([
137
 
            (u'RE:(a|b|c+)',
138
 
             [u'a', u'b', u'ccc'],
139
 
             [u'd', u'aa', u'c+', u'-a']),
140
 
            (u'RE:(?:a|b|c+)',
141
 
             [u'a', u'b', u'ccc'],
142
 
             [u'd', u'aa', u'c+', u'-a']),
143
 
            (u'RE:(?P<a>.)(?P=a)',
 
136
            (ur'RE:(a|b|c+)',
 
137
             [u'a', u'b', u'ccc'],
 
138
             [u'd', u'aa', u'c+', u'-a']),
 
139
            (ur'RE:(?:a|b|c+)',
 
140
             [u'a', u'b', u'ccc'],
 
141
             [u'd', u'aa', u'c+', u'-a']),
 
142
            (ur'RE:(?P<a>.)(?P=a)',
144
143
             [u'a'],
145
144
             [u'ab', u'aa', u'aaa']),
146
 
            # test we can handle odd numbers of trailing backslashes
147
 
            (u'RE:a\\\\\\',
148
 
             [u'a\\'],
149
 
             [u'a', u'ab', u'aa', u'aaa']),
150
145
            ])
151
146
 
152
147
    def test_question_mark(self):
231
226
             [u'foo/bar', u'foo/.bar', u'x/foo/y']),
232
227
            ])
233
228
 
234
 
    def test_backslash(self):
235
 
        self.assertMatch([
236
 
            (u'.\\foo',
237
 
             [u'foo'],
238
 
             [u'\u8336/foo', u'barfoo', u'x/y/foo']),
239
 
            (u'.\\f*',
240
 
             [u'foo'],
241
 
             [u'foo/bar', u'foo/.bar', u'x/foo/y']),
242
 
            (u'foo\\**\\x',
243
 
             [u'foo/x', u'foo/bar/x'],
244
 
             [u'foox', u'foo/bax', u'foo/.x', u'foo/bar/bax']),
245
 
            ])
246
 
 
247
 
    def test_trailing_slash(self):
248
 
        self.assertMatch([
249
 
            (u'./foo/',
250
 
             [u'foo'],
251
 
             [u'\u8336/foo', u'barfoo', u'x/y/foo']),
252
 
            (u'.\\foo\\',
253
 
             [u'foo'],
254
 
             [u'foo/', u'\u8336/foo', u'barfoo', u'x/y/foo']),
255
 
            ])
256
 
 
257
229
    def test_leading_asterisk_dot(self):
258
230
        self.assertMatch([
259
231
            (u'*.x',
306
278
            self.assertEqual(patterns[x],globster.match(filename))
307
279
        self.assertEqual(None,globster.match('foobar.300'))
308
280
 
309
 
 
310
 
class TestOrderedGlobster(TestCase):
311
 
 
312
 
    def test_ordered_globs(self):
313
 
        """test that the first match in a list is the one found"""
314
 
        patterns = [ u'*.foo', u'bar.*']
315
 
        globster = _OrderedGlobster(patterns)
316
 
        self.assertEqual(u'*.foo', globster.match('bar.foo'))
317
 
        self.assertEqual(None, globster.match('foo.bar'))
318
 
        globster = _OrderedGlobster(reversed(patterns))
319
 
        self.assertEqual(u'bar.*', globster.match('bar.foo'))
320
 
        self.assertEqual(None, globster.match('foo.bar'))