Rev 4790: Add the glob tests, since I know those break otherwise. in http://bazaar.launchpad.net/~jameinel/bzr/2.1.0b4-win32-test-suite
John Arbash Meinel
john at arbash-meinel.com
Sun Nov 8 00:42:04 GMT 2009
At http://bazaar.launchpad.net/~jameinel/bzr/2.1.0b4-win32-test-suite
------------------------------------------------------------
revno: 4790 [merge]
revision-id: john at arbash-meinel.com-20091108004156-n4dj0yv119dwsuzm
parent: pqm at pqm.ubuntu.com-20091106084512-t5ll6xywcd1bycfe
parent: john at arbash-meinel.com-20091108002718-owomi0efq10hg8r7
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: 2.1.0b4-win32-test-suite
timestamp: Sat 2009-11-07 18:41:56 -0600
message:
Add the glob tests, since I know those break otherwise.
modified:
bzrlib/tests/blackbox/test_add.py test_add.py-20060518072250-857e4f86f54a30b2
bzrlib/tests/test_win32utils.py test_win32utils.py-20070713181630-8xsrjymd3e8mgw23-108
-------------- next part --------------
=== modified file 'bzrlib/tests/blackbox/test_add.py'
--- a/bzrlib/tests/blackbox/test_add.py 2009-08-10 08:25:05 +0000
+++ b/bzrlib/tests/blackbox/test_add.py 2009-11-08 00:05:26 +0000
@@ -27,7 +27,6 @@
SymlinkFeature
)
from bzrlib.tests.blackbox import ExternalBase
-from bzrlib.tests.test_win32utils import NeedsGlobExpansionFeature
def load_tests(standard_tests, module, loader):
@@ -211,20 +210,6 @@
err = self.run_bzr('add .bzr/crescent', retcode=3)[1]
self.assertContainsRe(err, r'ERROR:.*\.bzr.*control file')
- def test_add_with_wildcards(self):
- self.requireFeature(NeedsGlobExpansionFeature)
- self.make_branch_and_tree('.')
- self.build_tree(['a1', 'a2', 'b', 'c33'])
- self.run_bzr(['add', 'a?', 'c*'])
- self.assertEquals(self.run_bzr('unknowns')[0], 'b\n')
-
- def test_add_with_wildcards_unicode(self):
- self.requireFeature(NeedsGlobExpansionFeature)
- self.make_branch_and_tree('.')
- self.build_tree([u'\u1234A', u'\u1235A', u'\u1235AA', 'cc'])
- self.run_bzr(['add', u'\u1234?', u'\u1235*'])
- self.assertEquals(self.run_bzr('unknowns')[0], 'cc\n')
-
def test_add_via_symlink(self):
self.requireFeature(SymlinkFeature)
self.make_branch_and_tree('source')
=== modified file 'bzrlib/tests/test_win32utils.py'
--- a/bzrlib/tests/test_win32utils.py 2009-11-04 22:12:46 +0000
+++ b/bzrlib/tests/test_win32utils.py 2009-11-08 00:27:18 +0000
@@ -32,18 +32,20 @@
from bzrlib.win32utils import glob_expand, get_app_path
-# Features
-# --------
-
-class _NeedsGlobExpansionFeature(Feature):
+class _BackslashDirSeparatorFeature(tests.Feature):
def _probe(self):
- return sys.platform == 'win32'
+ try:
+ os.lstat(os.getcwd() + '\\')
+ except OSError:
+ return False
+ else:
+ return True
def feature_name(self):
- return 'Internally performed glob expansion'
+ return "Filesystem treats '\\' as a directory separator."
-NeedsGlobExpansionFeature = _NeedsGlobExpansionFeature()
+BackslashDirSeparatorFeature = _BackslashDirSeparatorFeature()
class _RequiredModuleFeature(Feature):
@@ -70,19 +72,9 @@
# Tests
# -----
-class TestNeedsGlobExpansionFeature(TestCase):
-
- def test_available(self):
- self.assertEqual(sys.platform == 'win32',
- NeedsGlobExpansionFeature.available())
-
- def test_str(self):
- self.assertTrue("performed" in str(NeedsGlobExpansionFeature))
-
-
class TestWin32UtilsGlobExpand(TestCaseInTempDir):
- _test_needs_features = [NeedsGlobExpansionFeature]
+ _test_needs_features = []
def test_empty_tree(self):
self.build_tree([])
@@ -92,22 +84,28 @@
[['*'], ['*']],
[['a', 'a'], ['a', 'a']]])
- def test_tree_ascii(self):
- """Checks the glob expansion and path separation char
- normalization"""
+ def build_ascii_tree(self):
self.build_tree(['a', 'a1', 'a2', 'a11', 'a.1',
'b', 'b1', 'b2', 'b3',
'c/', 'c/c1', 'c/c2',
'd/', 'd/d1', 'd/d2', 'd/e/', 'd/e/e1'])
+
+ def build_unicode_tree(self):
+ self.requireFeature(UnicodeFilenameFeature)
+ self.build_tree([u'\u1234', u'\u1234\u1234', u'\u1235/',
+ u'\u1235/\u1235'])
+
+ def test_tree_ascii(self):
+ """Checks the glob expansion and path separation char
+ normalization"""
+ self.build_ascii_tree()
self._run_testset([
# no wildcards
[[u'a'], [u'a']],
[[u'a', u'a' ], [u'a', u'a']],
- [[u'A'], [u'A']],
[[u'd'], [u'd']],
[[u'd/'], [u'd/']],
- [[u'd\\'], [u'd/']],
# wildcards
[[u'a*'], [u'a', u'a1', u'a2', u'a11', u'a.1']],
@@ -115,18 +113,35 @@
[[u'a?'], [u'a1', u'a2']],
[[u'a??'], [u'a11', u'a.1']],
[[u'b[1-2]'], [u'b1', u'b2']],
- [[u'A?'], [u'a1', u'a2']],
[[u'd/*'], [u'd/d1', u'd/d2', u'd/e']],
+ [[u'?/*'], [u'c/c1', u'c/c2', u'd/d1', u'd/d2', u'd/e']],
+ [[u'*/*'], [u'c/c1', u'c/c2', u'd/d1', u'd/d2', u'd/e']],
+ [[u'*/'], [u'c/', u'd/']],
+ ])
+
+ def test_backslash_globbing(self):
+ self.requireFeature(BackslashDirSeparatorFeature)
+ self.build_ascii_tree()
+ self._run_testset([
+ [[u'd\\'], [u'd/']],
[[u'd\\*'], [u'd/d1', u'd/d2', u'd/e']],
[[u'?\\*'], [u'c/c1', u'c/c2', u'd/d1', u'd/d2', u'd/e']],
[[u'*\\*'], [u'c/c1', u'c/c2', u'd/d1', u'd/d2', u'd/e']],
- [[u'*/'], [u'c/', u'd/']],
- [[u'*\\'], [u'c/', u'd/']]])
+ [[u'*\\'], [u'c/', u'd/']],
+ ])
+
+ def test_case_insensitive_globbing(self):
+ self.requireFeature(tests.CaseInsCasePresFilenameFeature)
+ self.build_ascii_tree()
+ self._run_testset([
+ [[u'A'], [u'A']],
+ [[u'A?'], [u'a1', u'a2']],
+ ])
def test_tree_unicode(self):
"""Checks behaviour with non-ascii filenames"""
- self.build_tree([u'\u1234', u'\u1234\u1234', u'\u1235/', u'\u1235/\u1235'])
+ self.build_unicode_tree()
self._run_testset([
# no wildcards
[[u'\u1234'], [u'\u1234']],
@@ -142,16 +157,26 @@
[[u'\u1235/?'], [u'\u1235/\u1235']],
[[u'\u1235/*'], [u'\u1235/\u1235']],
+ [[u'?/'], [u'\u1235/']],
+ [[u'*/'], [u'\u1235/']],
+ [[u'?/?'], [u'\u1235/\u1235']],
+ [[u'*/*'], [u'\u1235/\u1235']],
+ ])
+
+ def test_unicode_backslashes(self):
+ self.requireFeature(BackslashDirSeparatorFeature)
+ self.build_unicode_tree()
+ self._run_testset([
+ # no wildcards
+ [[u'\u1235\\'], [u'\u1235/']],
+ [[u'\u1235\\\u1235'], [u'\u1235/\u1235']],
[[u'\u1235\\?'], [u'\u1235/\u1235']],
[[u'\u1235\\*'], [u'\u1235/\u1235']],
- [[u'?/'], [u'\u1235/']],
- [[u'*/'], [u'\u1235/']],
[[u'?\\'], [u'\u1235/']],
[[u'*\\'], [u'\u1235/']],
- [[u'?/?'], [u'\u1235/\u1235']],
- [[u'*/*'], [u'\u1235/\u1235']],
[[u'?\\?'], [u'\u1235/\u1235']],
- [[u'*\\*'], [u'\u1235/\u1235']]])
+ [[u'*\\*'], [u'\u1235/\u1235']],
+ ])
def _run_testset(self, testset):
for pattern, expected in testset:
@@ -351,3 +376,13 @@
# Expands the glob, but nothing matches
self.assertCommandLine([u'a/*.c'], 'a\\*.c')
self.assertCommandLine([u'a/foo.c'], 'a\\foo.c')
+
+ def test_case_insensitive_globs(self):
+ self.requireFeature(tests.CaseInsCasePresFilenameFeature)
+ self.build_tree(['a/', 'a/b.c', 'a/c.c', 'a/c.h'])
+ self.assertCommandLine([u'A/b.c'], 'A/B*')
+
+ def test_backslashes(self):
+ self.requireFeature(BackslashDirSeparatorFeature)
+ self.build_tree(['a/', 'a/b.c', 'a/c.c', 'a/c.h'])
+ self.assertCommandLine([u'a/b.c'], 'a\\b*')
More information about the bazaar-commits
mailing list