~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_globbing.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2007-08-09 15:19:06 UTC
  • mfrom: (2681.1.7 send-bundle)
  • Revision ID: pqm@pqm.ubuntu.com-20070809151906-hdn9oyslf2qib2op
Allow omitting -o for bundle, add --format

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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
16
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
17
 
18
18
from bzrlib.globbing import (
19
19
    Globster,
20
 
    _OrderedGlobster,
21
20
    )
22
21
from bzrlib.tests import (
23
 
    TestCase,
 
22
    TestCase, 
24
23
    TestCaseInTempDir,
25
24
    )
26
25
 
171
170
             [u'foo/x', u'foo/bax', u'foo/a.x', u'foo/.x', u'foo/.q.x'],
172
171
             [u'foo/bar/bax']),
173
172
            (u'*/*x',
174
 
             [u'\u8336/x', u'foo/x', u'foo/bax', u'x/a.x', u'.foo/x',
 
173
             [u'\u8336/x', u'foo/x', u'foo/bax', u'x/a.x', u'.foo/x', 
175
174
              u'\u8336/.x', u'foo/.q.x'],
176
175
             [u'foo/bar/bax']),
177
176
            (u'f*',
178
177
             [u'foo', u'foo.bar'],
179
178
             [u'.foo', u'foo/bar', u'foo/.bar']),
180
179
            (u'*bar',
181
 
             [u'bar', u'foobar', ur'foo\nbar', u'foo.bar', u'foo/bar',
 
180
             [u'bar', u'foobar', ur'foo\nbar', u'foo.bar', u'foo/bar', 
182
181
              u'foo/foobar', u'foo/f.bar', u'.bar', u'foo/.bar'],
183
182
             []),
184
183
            ])
191
190
             [u'foox', u'foo/bax', u'foo/.x', u'foo/bar/bax']),
192
191
            (u'**/bar',
193
192
             [u'bar', u'foo/bar'],
194
 
             [u'foobar', u'foo.bar', u'foo/foobar', u'foo/f.bar',
 
193
             [u'foobar', u'foo.bar', u'foo/foobar', u'foo/f.bar', 
195
194
              u'.bar', u'foo/.bar']),
196
195
            # check that we ignore extra *s, so *** is treated like ** not *.
197
196
            (u'foo/***/x',
199
198
             [u'foox', u'foo/bax', u'foo/.x', u'foo/bar/bax']),
200
199
            (u'***/bar',
201
200
             [u'bar', u'foo/bar'],
202
 
             [u'foobar', u'foo.bar', u'foo/foobar', u'foo/f.bar',
 
201
             [u'foobar', u'foo.bar', u'foo/foobar', u'foo/f.bar', 
203
202
              u'.bar', u'foo/.bar']),
204
203
            # the remaining tests check that ** is interpreted as *
205
204
            # unless it is a whole path component
216
215
             [u'foo', u'foo.bar'],
217
216
             [u'.foo', u'foo/bar', u'foo/.bar']),
218
217
            (u'**bar',
219
 
             [u'bar', u'foobar', ur'foo\nbar', u'foo.bar', u'foo/bar',
 
218
             [u'bar', u'foobar', ur'foo\nbar', u'foo.bar', u'foo/bar', 
220
219
              u'foo/foobar', u'foo/f.bar', u'.bar', u'foo/.bar'],
221
220
             []),
222
221
            ])
257
256
    def test_leading_asterisk_dot(self):
258
257
        self.assertMatch([
259
258
            (u'*.x',
260
 
             [u'foo/bar/baz.x', u'\u8336/Q.x', u'foo.y.x', u'.foo.x',
 
259
             [u'foo/bar/baz.x', u'\u8336/Q.x', u'foo.y.x', u'.foo.x', 
261
260
              u'bar/.foo.x', u'.x',],
262
261
             [u'foo.x.y']),
263
262
            (u'foo/*.bar',
293
292
    def test_large_globset(self):
294
293
        """tests that the globster can handle a large set of patterns.
295
294
 
296
 
        Large is defined as more than supported by python regex groups,
 
295
        Large is defined as more than supported by python regex groups, 
297
296
        i.e. 99.
298
297
        This test assumes the globs are broken into regexs containing 99
299
298
        groups.
306
305
            self.assertEqual(patterns[x],globster.match(filename))
307
306
        self.assertEqual(None,globster.match('foobar.300'))
308
307
 
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'))