Kaydet (Commit) 9e9af21d authored tarafından Ezio Melotti's avatar Ezio Melotti

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

üst 18d5a696
...@@ -174,6 +174,19 @@ class AllCommonTest(unittest.TestCase): ...@@ -174,6 +174,19 @@ class AllCommonTest(unittest.TestCase):
self.assertRaises(TypeError, genericpath.samefile) 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(): def test_main():
test_support.run_unittest(AllCommonTest) test_support.run_unittest(AllCommonTest)
......
import macpath import macpath
from test import test_support from test import test_support
import unittest import unittest
import test_genericpath
class MacPathTestCase(unittest.TestCase): class MacPathTestCase(unittest.TestCase):
...@@ -8,15 +9,11 @@ class MacPathTestCase(unittest.TestCase): ...@@ -8,15 +9,11 @@ class MacPathTestCase(unittest.TestCase):
def test_abspath(self): def test_abspath(self):
self.assertEqual(macpath.abspath("xx:yy"), "xx:yy") self.assertEqual(macpath.abspath("xx:yy"), "xx:yy")
# Issue 3426: check that abspath retuns unicode when the arg is unicode def test_abspath_with_ascii_cwd(self):
# and str when it's str, with both ASCII and non-ASCII cwds test_genericpath._issue3426(self, u'cwd', macpath.abspath)
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_nonascii_cwd(self):
test_genericpath._issue3426(self, u'\xe7w\xf0', macpath.abspath)
def test_isabs(self): def test_isabs(self):
isabs = macpath.isabs isabs = macpath.isabs
......
import unittest import unittest
from test import test_support from test import test_support
import test_genericpath
import posixpath, os import posixpath, os
from posixpath import realpath, abspath, dirname, basename from posixpath import realpath, abspath, dirname, basename
...@@ -382,17 +384,13 @@ class PosixPathTest(unittest.TestCase): ...@@ -382,17 +384,13 @@ class PosixPathTest(unittest.TestCase):
def test_abspath(self): def test_abspath(self):
self.assertIn("foo", posixpath.abspath("foo")) self.assertIn("foo", posixpath.abspath("foo"))
self.assertRaises(TypeError, posixpath.abspath)
# Issue 3426: check that abspath retuns unicode when the arg is unicode def test_abspath_with_ascii_cwd(self):
# and str when it's str, with both ASCII and non-ASCII cwds test_genericpath._issue3426(self, u'cwd', posixpath.abspath)
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)
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): def test_realpath(self):
self.assertIn("foo", realpath("foo")) self.assertIn("foo", realpath("foo"))
......
...@@ -397,6 +397,13 @@ def temp_cwd(name='tempcwd', quiet=False): ...@@ -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 the CWD, an error is raised. If it's True, only a warning is raised
and the original CWD is used. 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() saved_dir = os.getcwd()
is_temporary = False is_temporary = False
try: try:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment