~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_globbing.py

  • Committer: Robert Collins
  • Date: 2009-07-07 04:32:13 UTC
  • mto: This revision was merged to the branch mainline in revision 4524.
  • Revision ID: robertc@robertcollins.net-20090707043213-4hjjhgr40iq7gk2d
More informative assertions in xml serialisation.

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