summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_genericpath.py13
-rw-r--r--Lib/test/test_macpath.py13
-rw-r--r--Lib/test/test_posixpath.py16
-rw-r--r--Lib/test/test_support.py7
4 files changed, 32 insertions, 17 deletions
diff --git a/Lib/test/test_genericpath.py b/Lib/test/test_genericpath.py
index bfd38d92e0..15f12e44c3 100644
--- a/Lib/test/test_genericpath.py
+++ b/Lib/test/test_genericpath.py
@@ -174,6 +174,19 @@ class AllCommonTest(unittest.TestCase):
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)
diff --git a/Lib/test/test_macpath.py b/Lib/test/test_macpath.py
index c93177fe36..f477ddb42b 100644
--- a/Lib/test/test_macpath.py
+++ b/Lib/test/test_macpath.py
@@ -1,6 +1,7 @@
import macpath
from test import test_support
import unittest
+import test_genericpath
class MacPathTestCase(unittest.TestCase):
@@ -8,15 +9,11 @@ class MacPathTestCase(unittest.TestCase):
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
diff --git a/Lib/test/test_posixpath.py b/Lib/test/test_posixpath.py
index da5d174581..23a88e3a7f 100644
--- a/Lib/test/test_posixpath.py
+++ b/Lib/test/test_posixpath.py
@@ -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 @@ class PosixPathTest(unittest.TestCase):
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"))
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 0732ccee92..db575332dd 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -397,6 +397,13 @@ def temp_cwd(name='tempcwd', quiet=False):
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: