Rev 3698: Fix up some of the path joining logic. in http://bzr.arbash-meinel.com/branches/bzr/1.8-dev/readdir

John Arbash Meinel john at arbash-meinel.com
Tue Sep 9 17:14:02 BST 2008


At http://bzr.arbash-meinel.com/branches/bzr/1.8-dev/readdir

------------------------------------------------------------
revno: 3698
revision-id: john at arbash-meinel.com-20080909161337-nzigrqkecj4ncgt9
parent: robertc at robertcollins.net-20080909015303-183ct6bgha6e8tg7
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: readdir
timestamp: Tue 2008-09-09 11:13:37 -0500
message:
  Fix up some of the path joining logic.
-------------- next part --------------
=== modified file 'bzrlib/_walkdirs_win32.pyx'
--- a/bzrlib/_walkdirs_win32.pyx	2008-09-09 01:53:03 +0000
+++ b/bzrlib/_walkdirs_win32.pyx	2008-09-09 16:13:37 +0000
@@ -163,7 +163,8 @@
 
     def top_prefix_to_starting_dir(self, top, prefix=""):
         """See DirReader.top_prefix_to_starting_dir."""
-        return (osutils.safe_utf8(prefix), osutils.safe_unicode(top))
+        return (osutils.safe_utf8(prefix), None, None, None,
+                osutils.safe_unicode(top))
 
     cdef object _get_kind(self, WIN32_FIND_DATAW *data):
         if data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY:
@@ -201,7 +202,7 @@
             relprefix = ''
         top_slash = top + '/'
 
-        top_star = top + '*'
+        top_star = top_slash + '*'
 
         dirblock = []
 
@@ -220,11 +221,11 @@
                     continue
                 name_unicode = _get_name(&search_data)
                 name_utf8 = PyUnicode_AsUTF8String(name_unicode)
-                PyList_Append(dirblock, 
-                    (relprefix + name_utf8, name_utf8, 
+                PyList_Append(dirblock,
+                    (relprefix + name_utf8, name_utf8,
                      self._get_kind(&search_data),
                      self._get_stat_value(&search_data),
-                     top + name_unicode))
+                     top_slash + name_unicode))
 
                 result = FindNextFileW(hFindFile, &search_data)
             # FindNextFileW sets GetLastError() == ERROR_NO_MORE_FILES when it

=== modified file 'bzrlib/tests/test__walkdirs_win32.py'
--- a/bzrlib/tests/test__walkdirs_win32.py	2008-09-09 01:53:03 +0000
+++ b/bzrlib/tests/test__walkdirs_win32.py	2008-09-09 16:13:37 +0000
@@ -18,7 +18,10 @@
 
 import errno
 
-from bzrlib import tests
+from bzrlib import (
+    osutils,
+    tests,
+    )
 
 
 class _Win32ReadDirFeature(tests.Feature):
@@ -52,11 +55,17 @@
         return [info[:3] + info[4:] for info in dirblock]
 
     def assertWalkdirs(self, expected, top, prefix=''):
-        finder = self.walkdirs_utf8(top, prefix=prefix)
-        result = []
-        for dirname, dirblock in finder:
-            result.append((dirname, self._remove_stat_from_dirblock(dirblock)))
-        self.assertEqual(expected, result)
+        old_selected_dir_reader = osutils._selected_dir_reader
+        try:
+            osutils._selected_dir_reader = self.reader
+            finder = osutils._walkdirs_utf8(top, prefix=prefix)
+            result = []
+            for dirname, dirblock in finder:
+                dirblock = self._remove_stat_from_dirblock(dirblock)
+                result.append((dirname, dirblock))
+            self.assertEqual(expected, result)
+        finally:
+            osutils._selected_dir_reader = old_selected_dir_reader
 
     def assertReadDir(self, expected, prefix, top_unicode):
         result = self._remove_stat_from_dirblock(
@@ -66,8 +75,8 @@
     def test_top_prefix_to_starting_dir(self):
         # preparing an iteration should create a unicode native path.
         self.assertEqual(('prefix', None, None, None, u'\x12'),
-            self.reader.top_prefix_to_starting_dir('prefix',
-                u'\x12'.encode('utf8')))
+            self.reader.top_prefix_to_starting_dir(u'\x12'.encode('utf8'),
+                                                   'prefix'))
 
     def test_empty_directory(self):
         self.assertReadDir([], 'prefix', u'.')



More information about the bazaar-commits mailing list