[Python-checkins] r78272 - in python/trunk/Lib/test: test_genericpath.py test_macpath.py test_posixpath.py test_support.py

ezio.melotti python-checkins at python.org
Sat Feb 20 23:34:21 CET 2010


Author: ezio.melotti
Date: Sat Feb 20 23:34:21 2010
New Revision: 78272

Log:
skip tests with a non-ascii cwd when the file system encoding is ascii

Modified:
   python/trunk/Lib/test/test_genericpath.py
   python/trunk/Lib/test/test_macpath.py
   python/trunk/Lib/test/test_posixpath.py
   python/trunk/Lib/test/test_support.py

Modified: python/trunk/Lib/test/test_genericpath.py
==============================================================================
--- python/trunk/Lib/test/test_genericpath.py	(original)
+++ python/trunk/Lib/test/test_genericpath.py	Sat Feb 20 23:34:21 2010
@@ -174,6 +174,19 @@
 
             self.assertRaises(TypeError, genericpath.samefile)
 
+
+# XXX at some point this should probably go in some class that contains common
+# tests for all test_*path modules.
+def _issue3426(self, cwd, abspath):
+    # Issue 3426: check that abspath retuns unicode when the arg is unicode
+    # and str when it's str, with both ASCII and non-ASCII cwds
+    with test_support.temp_cwd(cwd):
+        for path in ('', 'foo', 'f\xf2\xf2', '/foo', 'C:\\'):
+            self.assertIsInstance(abspath(path), str)
+        for upath in (u'', u'fuu', u'f\xf9\xf9', u'/fuu', u'U:\\'):
+            self.assertIsInstance(abspath(upath), unicode)
+
+
 def test_main():
     test_support.run_unittest(AllCommonTest)
 

Modified: python/trunk/Lib/test/test_macpath.py
==============================================================================
--- python/trunk/Lib/test/test_macpath.py	(original)
+++ python/trunk/Lib/test/test_macpath.py	Sat Feb 20 23:34:21 2010
@@ -1,6 +1,7 @@
 import macpath
 from test import test_support
 import unittest
+import test_genericpath
 
 
 class MacPathTestCase(unittest.TestCase):
@@ -8,15 +9,11 @@
     def test_abspath(self):
         self.assertEqual(macpath.abspath("xx:yy"), "xx:yy")
 
-        # Issue 3426: check that abspath retuns unicode when the arg is unicode
-        # and str when it's str, with both ASCII and non-ASCII cwds
-        for cwd in (u'cwd', u'\xe7w\xf0'):
-            with test_support.temp_cwd(cwd):
-                for path in ('', 'foo', 'f\xf2\xf2', '/foo', 'C:\\'):
-                    self.assertIsInstance(macpath.abspath(path), str)
-                for upath in (u'', u'fuu', u'f\xf9\xf9', u'/fuu', u'U:\\'):
-                    self.assertIsInstance(macpath.abspath(upath), unicode)
+    def test_abspath_with_ascii_cwd(self):
+        test_genericpath._issue3426(self, u'cwd', macpath.abspath)
 
+    def test_abspath_with_nonascii_cwd(self):
+        test_genericpath._issue3426(self, u'\xe7w\xf0', macpath.abspath)
 
     def test_isabs(self):
         isabs = macpath.isabs

Modified: python/trunk/Lib/test/test_posixpath.py
==============================================================================
--- python/trunk/Lib/test/test_posixpath.py	(original)
+++ python/trunk/Lib/test/test_posixpath.py	Sat Feb 20 23:34:21 2010
@@ -1,6 +1,8 @@
 import unittest
 from test import test_support
 
+import test_genericpath
+
 import posixpath, os
 from posixpath import realpath, abspath, dirname, basename
 
@@ -382,17 +384,13 @@
 
     def test_abspath(self):
         self.assertIn("foo", posixpath.abspath("foo"))
+        self.assertRaises(TypeError, posixpath.abspath)
 
-        # Issue 3426: check that abspath retuns unicode when the arg is unicode
-        # and str when it's str, with both ASCII and non-ASCII cwds
-        for cwd in (u'cwd', u'\xe7w\xf0'):
-            with test_support.temp_cwd(cwd):
-                for path in ('', 'foo', 'f\xf2\xf2', '/foo', 'C:\\'):
-                    self.assertIsInstance(posixpath.abspath(path), str)
-                for upath in (u'', u'fuu', u'f\xf9\xf9', u'/fuu', u'U:\\'):
-                    self.assertIsInstance(posixpath.abspath(upath), unicode)
+    def test_abspath_with_ascii_cwd(self):
+        test_genericpath._issue3426(self, u'cwd', posixpath.abspath)
 
-        self.assertRaises(TypeError, posixpath.abspath)
+    def test_abspath_with_nonascii_cwd(self):
+        test_genericpath._issue3426(self, u'\xe7w\xf0', posixpath.abspath)
 
     def test_realpath(self):
         self.assertIn("foo", realpath("foo"))

Modified: python/trunk/Lib/test/test_support.py
==============================================================================
--- python/trunk/Lib/test/test_support.py	(original)
+++ python/trunk/Lib/test/test_support.py	Sat Feb 20 23:34:21 2010
@@ -397,6 +397,13 @@
     the CWD, an error is raised.  If it's True, only a warning is raised
     and the original CWD is used.
     """
+    if isinstance(name, unicode):
+        try:
+            name = name.encode(sys.getfilesystemencoding() or 'ascii')
+        except UnicodeEncodeError:
+            if not quiet:
+                raise unittest.SkipTest('unable to encode the cwd name with '
+                                        'the filesystem encoding.')
     saved_dir = os.getcwd()
     is_temporary = False
     try:


More information about the Python-checkins mailing list