From 4a0c63aa5639ff0bc8253ac480e1240916433f17 Mon Sep 17 00:00:00 2001 From: Bastian Kleineidam Date: Tue, 8 Feb 2011 21:25:55 +0100 Subject: [PATCH] Fix joining of URLs when parent URL has CGI parameter. --- doc/changelog.txt | 6 ++++++ linkcheck/checker/urlbase.py | 2 +- tests/test_urlbuild.py | 10 ++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/doc/changelog.txt b/doc/changelog.txt index ddeceace..88beac50 100644 --- a/doc/changelog.txt +++ b/doc/changelog.txt @@ -1,3 +1,9 @@ +6.4 "" (released xx.xx.2011) + +Fixes: +- checking: Do not remove CGI parameters when joining URLs. + + 6.3 "Due Date" (released 6.2.2011) Fixes: diff --git a/linkcheck/checker/urlbase.py b/linkcheck/checker/urlbase.py index f8b0fdd6..10d5cd0b 100644 --- a/linkcheck/checker/urlbase.py +++ b/linkcheck/checker/urlbase.py @@ -388,7 +388,7 @@ class UrlBase (object): elif self.parent_url: # strip the parent url query and anchor urlparts = list(urlparse.urlsplit(self.parent_url)) - urlparts[3] = urlparts[4] = "" + urlparts[4] = "" parent_url = urlparse.urlunsplit(urlparts) self.url = urljoin(parent_url, base_url, self.scheme) else: diff --git a/tests/test_urlbuild.py b/tests/test_urlbuild.py index 72a405c3..13577db2 100644 --- a/tests/test_urlbuild.py +++ b/tests/test_urlbuild.py @@ -55,3 +55,13 @@ class TestUrlBuild (unittest.TestCase): scheme = 'http' res = linkcheck.checker.urlbase.urljoin(parent_url, base_url, scheme) self.assertEqual(res, 'http://localhost:8001/;param=value') + + def test_http_build2 (self): + parent_url = u'http://www.ngdc.noaa.gov/nndc/struts/results?nd=suppress&eq_0=8&t=101365&s=4&d=3&d=5&d=6' + base_url = u'#nesdis' + recursion_level = 0 + aggregate = get_test_aggregate() + o = linkcheck.checker.httpurl.HttpUrl(base_url, recursion_level, + aggregate, parent_url=parent_url) + o.build_url() + self.assertEqual(o.url, parent_url+base_url)