From: Berker Peksag Date: Wed, 15 Apr 2015 23:31:14 +0000 (+0300) Subject: Issue #23703: Fix a regression in urljoin() introduced in 901e4e52b20a. X-Git-Tag: v3.5.0a4~27 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=20416f7994d1efbca1158e549ec8ece5ac4dbb67;p=thirdparty%2FPython%2Fcpython.git Issue #23703: Fix a regression in urljoin() introduced in 901e4e52b20a. Patch by Demian Brecht. --- diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py index 5a3aa3372d64..156ccf58cae5 100644 --- a/Lib/test/test_urlparse.py +++ b/Lib/test/test_urlparse.py @@ -391,6 +391,9 @@ class UrlParseTestCase(unittest.TestCase): self.checkJoin('http://a/b/c/d/e/', '../../f/g', 'http://a/b/c/f/g') self.checkJoin('http://a/b/', '../../f/g/', 'http://a/f/g/') + # issue 23703: don't duplicate filename + self.checkJoin('a', 'b', 'b') + def test_RFC2732(self): str_cases = [ ('http://Test.python.org:5432/foo/', 'test.python.org', 5432), diff --git a/Lib/urllib/parse.py b/Lib/urllib/parse.py index 6012d3502ab8..e3133714bfe5 100644 --- a/Lib/urllib/parse.py +++ b/Lib/urllib/parse.py @@ -447,8 +447,7 @@ def urljoin(base, url, allow_fragments=True): segments = base_parts + path.split('/') # filter out elements that would cause redundant slashes on re-joining # the resolved_path - segments = segments[0:1] + [ - s for s in segments[1:-1] if len(s) > 0] + segments[-1:] + segments[1:-1] = filter(None, segments[1:-1]) resolved_path = [] diff --git a/Misc/NEWS b/Misc/NEWS index cd1d81e45d21..ca7de81ad9ce 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -36,6 +36,9 @@ Core and Builtins Library ------- +- Issue #23703: Fix a regression in urljoin() introduced in 901e4e52b20a. + Patch by Demian Brecht. + - Issue #4254: Adds _curses.update_lines_cols() Patch by Arnon Yaari - Issue 19933: Provide default argument for ndigits in round. Patch by