/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_globbing.py

  • Committer: Andrew Bennetts
  • Date: 2010-01-12 03:53:21 UTC
  • mfrom: (4948 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4964.
  • Revision ID: andrew.bennetts@canonical.com-20100112035321-hofpz5p10224ryj3
Merge lp:bzr, resolving conflicts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
#
14
14
# You should have received a copy of the GNU General Public License
15
15
# along with this program; if not, write to the Free Software
16
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
18
from bzrlib.globbing import (
19
19
    Globster,
20
20
    _OrderedGlobster,
 
21
    normalize_pattern
21
22
    )
22
23
from bzrlib.tests import (
23
 
    TestCase, 
 
24
    TestCase,
24
25
    TestCaseInTempDir,
25
26
    )
26
27
 
171
172
             [u'foo/x', u'foo/bax', u'foo/a.x', u'foo/.x', u'foo/.q.x'],
172
173
             [u'foo/bar/bax']),
173
174
            (u'*/*x',
174
 
             [u'\u8336/x', u'foo/x', u'foo/bax', u'x/a.x', u'.foo/x', 
 
175
             [u'\u8336/x', u'foo/x', u'foo/bax', u'x/a.x', u'.foo/x',
175
176
              u'\u8336/.x', u'foo/.q.x'],
176
177
             [u'foo/bar/bax']),
177
178
            (u'f*',
178
179
             [u'foo', u'foo.bar'],
179
180
             [u'.foo', u'foo/bar', u'foo/.bar']),
180
181
            (u'*bar',
181
 
             [u'bar', u'foobar', ur'foo\nbar', u'foo.bar', u'foo/bar', 
 
182
             [u'bar', u'foobar', ur'foo\nbar', u'foo.bar', u'foo/bar',
182
183
              u'foo/foobar', u'foo/f.bar', u'.bar', u'foo/.bar'],
183
184
             []),
184
185
            ])
191
192
             [u'foox', u'foo/bax', u'foo/.x', u'foo/bar/bax']),
192
193
            (u'**/bar',
193
194
             [u'bar', u'foo/bar'],
194
 
             [u'foobar', u'foo.bar', u'foo/foobar', u'foo/f.bar', 
 
195
             [u'foobar', u'foo.bar', u'foo/foobar', u'foo/f.bar',
195
196
              u'.bar', u'foo/.bar']),
196
197
            # check that we ignore extra *s, so *** is treated like ** not *.
197
198
            (u'foo/***/x',
199
200
             [u'foox', u'foo/bax', u'foo/.x', u'foo/bar/bax']),
200
201
            (u'***/bar',
201
202
             [u'bar', u'foo/bar'],
202
 
             [u'foobar', u'foo.bar', u'foo/foobar', u'foo/f.bar', 
 
203
             [u'foobar', u'foo.bar', u'foo/foobar', u'foo/f.bar',
203
204
              u'.bar', u'foo/.bar']),
204
205
            # the remaining tests check that ** is interpreted as *
205
206
            # unless it is a whole path component
216
217
             [u'foo', u'foo.bar'],
217
218
             [u'.foo', u'foo/bar', u'foo/.bar']),
218
219
            (u'**bar',
219
 
             [u'bar', u'foobar', ur'foo\nbar', u'foo.bar', u'foo/bar', 
 
220
             [u'bar', u'foobar', ur'foo\nbar', u'foo.bar', u'foo/bar',
220
221
              u'foo/foobar', u'foo/f.bar', u'.bar', u'foo/.bar'],
221
222
             []),
222
223
            ])
257
258
    def test_leading_asterisk_dot(self):
258
259
        self.assertMatch([
259
260
            (u'*.x',
260
 
             [u'foo/bar/baz.x', u'\u8336/Q.x', u'foo.y.x', u'.foo.x', 
 
261
             [u'foo/bar/baz.x', u'\u8336/Q.x', u'foo.y.x', u'.foo.x',
261
262
              u'bar/.foo.x', u'.x',],
262
263
             [u'foo.x.y']),
263
264
            (u'foo/*.bar',
293
294
    def test_large_globset(self):
294
295
        """tests that the globster can handle a large set of patterns.
295
296
 
296
 
        Large is defined as more than supported by python regex groups, 
 
297
        Large is defined as more than supported by python regex groups,
297
298
        i.e. 99.
298
299
        This test assumes the globs are broken into regexs containing 99
299
300
        groups.
318
319
        globster = _OrderedGlobster(reversed(patterns))
319
320
        self.assertEqual(u'bar.*', globster.match('bar.foo'))
320
321
        self.assertEqual(None, globster.match('foo.bar'))
 
322
 
 
323
 
 
324
class TestNormalizePattern(TestCase):
 
325
 
 
326
    def test_backslashes(self):
 
327
        """tests that backslashes are converted to forward slashes, multiple
 
328
        backslashes are collapsed to single forward slashes and trailing
 
329
        backslashes are removed"""
 
330
        self.assertEqual(u'/', normalize_pattern(u'\\'))
 
331
        self.assertEqual(u'/', normalize_pattern(u'\\\\'))
 
332
        self.assertEqual(u'/foo/bar', normalize_pattern(u'\\foo\\bar'))
 
333
        self.assertEqual(u'foo/bar', normalize_pattern(u'foo\\bar\\'))
 
334
        self.assertEqual(u'/foo/bar', normalize_pattern(u'\\\\foo\\\\bar\\\\'))
 
335
 
 
336
    def test_forward_slashes(self):
 
337
        """tests that multiple foward slashes are collapsed to single forward
 
338
        slashes and trailing forward slashes are removed"""
 
339
        self.assertEqual(u'/', normalize_pattern(u'/'))
 
340
        self.assertEqual(u'/', normalize_pattern(u'//'))
 
341
        self.assertEqual(u'/foo/bar', normalize_pattern(u'/foo/bar'))
 
342
        self.assertEqual(u'foo/bar', normalize_pattern(u'foo/bar/'))
 
343
        self.assertEqual(u'/foo/bar', normalize_pattern(u'//foo//bar//'))
 
344
 
 
345
    def test_mixed_slashes(self):
 
346
        """tests that multiple mixed slashes are collapsed to single forward
 
347
        slashes and trailing mixed slashes are removed"""
 
348
        self.assertEqual(u'/foo/bar', normalize_pattern(u'\\/\\foo//\\///bar/\\\\/'))