def abspath(path):
"""Return an absolute path."""
if not isabs(path):
- path = join(os.getcwd(), path)
+ if isinstance(path, unicode):
+ cwd = os.getcwdu()
+ else:
+ cwd = os.getcwd()
+ path = join(cwd, path)
return normpath(path)
# realpath is a no-op on systems without islink support
def abspath(path):
"""Return the absolute version of a path."""
if not isabs(path):
- path = join(os.getcwd(), path)
+ if isinstance(path, unicode):
+ cwd = os.getcwdu()
+ else:
+ cwd = os.getcwd()
+ path = join(cwd, path)
return normpath(path)
else: # use native Windows method on Windows
path = _getfullpathname(path)
except WindowsError:
pass # Bad path - return unchanged.
+ elif isinstance(path, unicode):
+ path = os.getcwdu()
else:
path = os.getcwd()
return normpath(path)
def abspath(path):
"""Return the absolute version of a path"""
if not isabs(path):
- path = join(os.getcwd(), path)
+ if isinstance(path, unicode):
+ cwd = os.getcwdu()
+ else:
+ cwd = os.getcwd()
+ path = join(cwd, path)
return normpath(path)
# realpath is a no-op on systems without islink support
def abspath(path):
"""Return an absolute path."""
if not isabs(path):
- path = join(os.getcwd(), path)
+ if isinstance(path, unicode):
+ cwd = os.getcwdu()
+ else:
+ cwd = os.getcwd()
+ path = join(cwd, path)
return normpath(path)
def test_abspath(self):
self.assertTrue(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_isabs(self):
isabs = macpath.isabs
self.assertTrue(isabs("xx:yy"))
# the rest of the tests for the ntpath module to be run to completion
# on any platform, since most of the module is intended to be usable
# from any platform.
+ # XXX this needs more tests
try:
import nt
except ImportError:
- pass
+ # check that the function is there even if we are not on Windows
+ ntpath.abspath
else:
tester('ntpath.abspath("C:\\")', "C:\\")
+ # 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(ntpath.abspath(path), str)
+ for upath in (u'', u'fuu', u'f\xf9\xf9', u'/fuu', u'U:\\'):
+ self.assertIsInstance(ntpath.abspath(upath), unicode)
+
+
def test_relpath(self):
currentdir = os.path.split(os.getcwd())[-1]
tester('ntpath.relpath("a")', 'a')
def test_abspath(self):
self.assertTrue("foo" in posixpath.abspath("foo"))
+ # 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)
+
self.assertRaises(TypeError, posixpath.abspath)
def test_realpath(self):
Library
-------
+- Issue #3426: ``os.path.abspath`` now returns unicode when its arg is unicode.
+
- Issue #7633: In the decimal module, Context class methods (with the
exception of canonical and is_canonical) now accept instances of int
and long wherever a Decimal instance is accepted, and implicitly
argument added to the TextTestRunner constructor allowing a different result
class to be used without having to subclass.
-- Issue 7588: ``unittest.TextTestResult.getDescription`` now includes the test
+- Issue #7588: ``unittest.TextTestResult.getDescription`` now includes the test
name in failure reports even if the test has a docstring.
Extension Modules