summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2001-07-26 21:54:37 (GMT)
committerTim Peters <tim.peters@gmail.com>2001-07-26 21:54:37 (GMT)
commit4223f89eddc55c68f7b05aa33bc595e7791c362c (patch)
tree3cb349695bfbd91f567951ad97b74894c8ba68e2
parent76f373d081a38ed49d56540298123bd1e0bcd0cd (diff)
downloadcpython-4223f89eddc55c68f7b05aa33bc595e7791c362c.zip
cpython-4223f89eddc55c68f7b05aa33bc595e7791c362c.tar.gz
cpython-4223f89eddc55c68f7b05aa33bc595e7791c362c.tar.bz2
Change ntpath.join() so that join("d:/", "/whatever") returns
d:/whatever instead of /whatever. While I'm afraid changing isabs() to be *consistent* with this would break lots of code, it makes best sense for join() to do it this way. Thanks to Alex Martelli for pushing back on this one!
-rw-r--r--Lib/ntpath.py11
-rw-r--r--Lib/test/test_ntpath.py1
2 files changed, 7 insertions, 5 deletions
diff --git a/Lib/ntpath.py b/Lib/ntpath.py
index d81e8fb..cf7c353 100644
--- a/Lib/ntpath.py
+++ b/Lib/ntpath.py
@@ -42,11 +42,12 @@ def join(a, *p):
"""Join two or more pathname components, inserting "\\" as needed"""
path = a
for b in p:
- # If path is a raw drive letter (e.g. "C:"), and b doesn't start
- # with a drive letter, path+b is correct, and regardless of whether
- # b is absolute on its own.
- if len(path) == 2 and path[-1] == ":" and splitdrive(b)[0] == "":
- pass
+ # If path starts with a raw drive letter (e.g. "C:"), and b doesn't
+ # start with a drive letter, path+b is correct, and regardless of\
+ # whether b is absolute on its own.
+ if len(path) >= 2 and path[1] == ":" and splitdrive(b)[0] == "":
+ if path[-1] in "/\\" and b[:1] in "/\\":
+ b = b[1:]
# In any other case, if b is absolute it wipes out the path so far.
elif isabs(b) or path == "":
diff --git a/Lib/test/test_ntpath.py b/Lib/test/test_ntpath.py
index d1b7a00..7386900 100644
--- a/Lib/test/test_ntpath.py
+++ b/Lib/test/test_ntpath.py
@@ -65,6 +65,7 @@ tester('ntpath.join("a", "b", "c")', 'a\\b\\c')
tester('ntpath.join("a\\", "b", "c")', 'a\\b\\c')
tester('ntpath.join("a", "b\\", "c")', 'a\\b\\c')
tester('ntpath.join("a", "b", "\\c")', '\\c')
+tester('ntpath.join("d:\\", "\\pleep")', 'd:\\pleep')
if errors:
raise TestFailed(str(errors) + " errors.")