Rev 3561: Cleanup the tests a bit, and add a test that we downgrade if os.name isn't 'nt' in http://bzr.arbash-meinel.com/branches/bzr/1.6-dev/win32_find_files

John Arbash Meinel john at arbash-meinel.com
Thu Jul 17 16:21:42 BST 2008


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

------------------------------------------------------------
revno: 3561
revision-id: john at arbash-meinel.com-20080717152134-8xz1wvbu47mhc1oe
parent: john at arbash-meinel.com-20080717151458-1qou6e4hkyr309f7
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: win32_find_files
timestamp: Thu 2008-07-17 10:21:34 -0500
message:
  Cleanup the tests a bit, and add a test that we downgrade if os.name isn't 'nt'
-------------- next part --------------
=== modified file 'bzrlib/osutils.py'
--- a/bzrlib/osutils.py	2008-07-17 15:14:58 +0000
+++ b/bzrlib/osutils.py	2008-07-17 15:21:34 +0000
@@ -1198,7 +1198,12 @@
     global _real_walkdirs_utf8
     if _real_walkdirs_utf8 is None:
         fs_encoding = _fs_enc.upper()
-        if sys.platform == 'win32':
+        if sys.platform == 'win32' and os.name == 'nt':
+            # Win98 doesn't have unicode apis like FindFirstFileW
+            # TODO: We possibly could support Win98 by falling back to the
+            #       original FindFirstFile, and using TCHAR instead of WCHAR,
+            #       but that gets a bit tricky, and requires custom compiling
+            #       for win98 anyway.
             try:
                 from bzrlib._walkdirs_win32 import _walkdirs_utf8_win32_find_file
             except ImportError:

=== modified file 'bzrlib/tests/test_osutils.py'
--- a/bzrlib/tests/test_osutils.py	2008-07-17 15:14:58 +0000
+++ b/bzrlib/tests/test_osutils.py	2008-07-17 15:21:34 +0000
@@ -843,50 +843,62 @@
 
     def _save_platform_info(self):
         cur_platform = sys.platform
+        cur_os_name = os.name
         cur_fs_enc = osutils._fs_enc
         cur_real_walkdirs_utf8 = osutils._real_walkdirs_utf8
         def restore():
             sys.platform = cur_platform
+            os.name = cur_os_name
             osutils._fs_enc = cur_fs_enc
             osutils._real_walkdirs_utf8 = cur_real_walkdirs_utf8
         self.addCleanup(restore)
 
-    def test__force_walkdirs_utf8_fs_utf8(self):
+    def assertWalkdirsUtf8Is(self, expected):
+        """Assert the right implementation for _walkdirs_utf8 is chosen."""
+        # Force it to redetect
+        osutils._real_walkdirs_utf8 = None
+        # Nothing to list, but should still trigger the selection logic
+        list(osutils._walkdirs_utf8('.'))
+        self.assertIs(expected, osutils._real_walkdirs_utf8)
+
+    def test_force_walkdirs_utf8_fs_utf8(self):
         self._save_platform_info()
         sys.platform = 'not-win32' # Avoid the win32 detection code
         osutils._fs_enc = 'UTF-8'
-        osutils._real_walkdirs_utf8 = None # Force a redetect
-        # Nothing to list, but should still trigger the selection logic
-        list(osutils._walkdirs_utf8('.'))
-        self.assertIs(osutils._walkdirs_fs_utf8, osutils._real_walkdirs_utf8)
+        self.assertWalkdirsUtf8Is(osutils._walkdirs_fs_utf8)
 
-    def test__force_walkdirs_utf8_fs_ascii(self):
+    def test_force_walkdirs_utf8_fs_ascii(self):
         self._save_platform_info()
         sys.platform = 'not-win32' # Avoid the win32 detection code
         osutils._fs_enc = 'US-ASCII'
-        osutils._real_walkdirs_utf8 = None # Force a redetect
-        # Nothing to list, but should still trigger the selection logic
-        list(osutils._walkdirs_utf8('.'))
-        self.assertIs(osutils._walkdirs_fs_utf8, osutils._real_walkdirs_utf8)
+        self.assertWalkdirsUtf8Is(osutils._walkdirs_fs_utf8)
 
-    def test__force_walkdirs_utf8_fs_ANSI(self):
+    def test_force_walkdirs_utf8_fs_ANSI(self):
         self._save_platform_info()
         sys.platform = 'not-win32' # Avoid the win32 detection code
         osutils._fs_enc = 'ANSI_X3.4-1968'
-        osutils._real_walkdirs_utf8 = None # Force a redetect
-        # Nothing to list, but should still trigger the selection logic
-        list(osutils._walkdirs_utf8('.'))
-        self.assertIs(osutils._walkdirs_fs_utf8, osutils._real_walkdirs_utf8)
+        self.assertWalkdirsUtf8Is(osutils._walkdirs_fs_utf8)
 
-    def test__force_walkdirs_utf8_fs_latin1(self):
+    def test_force_walkdirs_utf8_fs_latin1(self):
         self._save_platform_info()
         sys.platform = 'not-win32' # Avoid the win32 detection code
         osutils._fs_enc = 'latin1'
-        osutils._real_walkdirs_utf8 = None # Force a redetect
-        # Nothing to list, but should still trigger the selection logic
-        list(osutils._walkdirs_utf8('.'))
-        self.assertIs(osutils._walkdirs_unicode_to_utf8,
-                      osutils._real_walkdirs_utf8)
+        self.assertWalkdirsUtf8Is(osutils._walkdirs_unicode_to_utf8)
+
+    def test_force_walkdirs_utf8_nt(self):
+        self.requireFeature(WalkdirsWin32Feature)
+        self._save_platform_info()
+        sys.platform = 'win32'
+        os.name = 'nt'
+        from bzrlib._walkdirs_win32 import _walkdirs_utf8_win32_find_file
+        self.assertWalkdirsUtf8Is(_walkdirs_utf8_win32_find_file)
+
+    def test_force_walkdirs_utf8_nt(self):
+        self.requireFeature(WalkdirsWin32Feature)
+        self._save_platform_info()
+        sys.platform = 'win32'
+        os.name = 'NOT-nt'
+        self.assertWalkdirsUtf8Is(osutils._walkdirs_unicode_to_utf8)
 
     def test_unicode_walkdirs(self):
         """Walkdirs should always return unicode paths."""



More information about the bazaar-commits mailing list