summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-05-19 08:00:07 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2015-05-19 08:00:07 (GMT)
commit5bfc03f430ab13ed84c2c30f2c87e9800b5670a4 (patch)
tree65bd9f3891193717f61424862ad75b423281d066 /Lib
parent6baa0a53b05d580d21d260c5d7d6ee2d3ff005ee (diff)
downloadcpython-5bfc03f430ab13ed84c2c30f2c87e9800b5670a4.zip
cpython-5bfc03f430ab13ed84c2c30f2c87e9800b5670a4.tar.gz
cpython-5bfc03f430ab13ed84c2c30f2c87e9800b5670a4.tar.bz2
Issue #23780: Improved error message in os.path.join() with single argument.
Idea by R. David Murray.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/macpath.py2
-rw-r--r--Lib/ntpath.py2
-rw-r--r--Lib/posixpath.py2
-rw-r--r--Lib/test/test_genericpath.py4
4 files changed, 10 insertions, 0 deletions
diff --git a/Lib/macpath.py b/Lib/macpath.py
index dbcf368..a90d105 100644
--- a/Lib/macpath.py
+++ b/Lib/macpath.py
@@ -53,6 +53,8 @@ def join(s, *p):
try:
colon = _get_colon(s)
path = s
+ if not p:
+ path[:0] + colon #23780: Ensure compatible data type even if p is null.
for t in p:
if (not path) or isabs(t):
path = t
diff --git a/Lib/ntpath.py b/Lib/ntpath.py
index cfb4606..9cc5ca7 100644
--- a/Lib/ntpath.py
+++ b/Lib/ntpath.py
@@ -81,6 +81,8 @@ def join(path, *paths):
seps = '\\/'
colon = ':'
try:
+ if not paths:
+ path[:0] + sep #23780: Ensure compatible data type even if p is null.
result_drive, result_path = splitdrive(path)
for p in paths:
p_drive, p_path = splitdrive(p)
diff --git a/Lib/posixpath.py b/Lib/posixpath.py
index ea51e11..09b8897 100644
--- a/Lib/posixpath.py
+++ b/Lib/posixpath.py
@@ -76,6 +76,8 @@ def join(a, *p):
sep = _get_sep(a)
path = a
try:
+ if not p:
+ path[:0] + sep #23780: Ensure compatible data type even if p is null.
for b in p:
if b.startswith(sep):
path = b
diff --git a/Lib/test/test_genericpath.py b/Lib/test/test_genericpath.py
index f2722bc..6ba55df 100644
--- a/Lib/test/test_genericpath.py
+++ b/Lib/test/test_genericpath.py
@@ -448,6 +448,10 @@ class CommonTest(GenericTest):
self.pathmodule.join(42, 'str')
with self.assertRaisesRegex(TypeError, errmsg % 'int'):
self.pathmodule.join('str', 42)
+ with self.assertRaisesRegex(TypeError, errmsg % 'int'):
+ self.pathmodule.join(42)
+ with self.assertRaisesRegex(TypeError, errmsg % 'list'):
+ self.pathmodule.join([])
with self.assertRaisesRegex(TypeError, errmsg % 'bytearray'):
self.pathmodule.join(bytearray(b'foo'), bytearray(b'bar'))