Rev 3526: Found some problems in _path_key, and made sure to have proper testing of _cmp_paths_by_dirblock in http://bzr.arbash-meinel.com/branches/bzr/1.6-dev/multi_walker

John Arbash Meinel john at arbash-meinel.com
Fri Aug 1 18:24:27 BST 2008


At http://bzr.arbash-meinel.com/branches/bzr/1.6-dev/multi_walker

------------------------------------------------------------
revno: 3526
revision-id: john at arbash-meinel.com-20080801172424-rwe2i959lhuwe4jt
parent: john at arbash-meinel.com-20080801132934-yk7f0pg3ox0um0yc
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: multi_walker
timestamp: Fri 2008-08-01 12:24:24 -0500
message:
  Found some problems in _path_key, and made sure to have proper testing of _cmp_paths_by_dirblock
modified:
  bzrlib/tests/test_tree.py      test_tree.py-20060724065232-khgrr0vvmt6ih0mi-1
  bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
-------------- next part --------------
=== modified file 'bzrlib/tests/test_tree.py'
--- a/bzrlib/tests/test_tree.py	2008-06-30 23:21:57 +0000
+++ b/bzrlib/tests/test_tree.py	2008-08-01 17:24:24 +0000
@@ -386,3 +386,34 @@
         self.assertWalkerNext(u'c/d', 'b-id', True, [u'c/d', u'b'], iterator)
         self.assertWalkerNext(u'c/e', 'a-id', True, [u'a', u'a'], iterator)
         self.assertRaises(StopIteration, iterator.next)
+
+    def assertCmpByDirblock(self, cmp_val, path1, path2):
+        self.assertEqual(cmp_val,
+            _mod_tree.MultiWalker._cmp_path_by_dirblock(path1, path2))
+
+    def test__cmp_path_by_dirblock(self):
+        # We only support Unicode strings at this point
+        self.assertRaises(TypeError,
+            _mod_tree.MultiWalker._cmp_path_by_dirblock, '', 'b')
+        self.assertCmpByDirblock(0, u'', u'')
+        self.assertCmpByDirblock(0, u'a', u'a')
+        self.assertCmpByDirblock(0, u'a/b', u'a/b')
+        self.assertCmpByDirblock(0, u'a/b/c', u'a/b/c')
+        self.assertCmpByDirblock(1, u'a-a', u'a')
+        self.assertCmpByDirblock(-1, u'a-a', u'a/a')
+        self.assertCmpByDirblock(-1, u'a=a', u'a/a')
+        self.assertCmpByDirblock(1, u'a-a/a', u'a/a')
+        self.assertCmpByDirblock(1, u'a=a/a', u'a/a')
+        self.assertCmpByDirblock(1, u'a-a/a', u'a/a/a')
+        self.assertCmpByDirblock(1, u'a=a/a', u'a/a/a')
+        self.assertCmpByDirblock(1, u'a-a/a/a', u'a/a/a')
+        self.assertCmpByDirblock(1, u'a=a/a/a', u'a/a/a')
+
+    def assertPathKey(self, expected, path):
+        self.assertEqual(expected, _mod_tree.MultiWalker._path_key(path))
+
+    def test__path_key(self):
+        self.assertPathKey(([u''], u''), u'')
+        self.assertPathKey(([u''], u'a'), u'a')
+        self.assertPathKey(([u'a'], u'b'), u'a/b')
+        self.assertPathKey(([u'a', u'b'], u'c'), u'a/b/c')

=== modified file 'bzrlib/tree.py'
--- a/bzrlib/tree.py	2008-08-01 13:29:34 +0000
+++ b/bzrlib/tree.py	2008-08-01 17:24:24 +0000
@@ -980,8 +980,7 @@
         return cmp(MultiWalker._path_key(path1), MultiWalker._path_key(path2))
 
     @staticmethod
-    def _path_key(other):
-        path = other[0]
+    def _path_key(path):
         dirname, basename = osutils.split(path)
         return (dirname.split(u'/'), basename)
 



More information about the bazaar-commits mailing list