diff options
-rw-r--r-- | pkg_resources.py | 7 | ||||
-rwxr-xr-x | setuptools/package_index.py | 4 | ||||
-rw-r--r-- | setuptools/tests/indexes/test_links_priority/external.html | 2 | ||||
-rw-r--r-- | setuptools/tests/indexes/test_links_priority/simple/foobar/index.html | 2 | ||||
-rw-r--r-- | setuptools/tests/test_packageindex.py | 8 |
5 files changed, 12 insertions, 11 deletions
diff --git a/pkg_resources.py b/pkg_resources.py index 6ec51fa0..bd318522 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -2081,8 +2081,11 @@ class Distribution(object): hashcmp = property( lambda self: ( - getattr(self,'parsed_version',()), self.precedence, self.key, - -len(self.location or ''), self.location, self.py_version, + getattr(self,'parsed_version',()), + self.precedence, + self.key, + (self.location or '').split('#md5=')[0], + self.py_version, self.platform ) ) diff --git a/setuptools/package_index.py b/setuptools/package_index.py index 1c50d86f..ba43cfbf 100755 --- a/setuptools/package_index.py +++ b/setuptools/package_index.py @@ -203,11 +203,11 @@ class PackageIndex(Environment): charset = f.headers.get_param('charset') or 'latin-1' page = page.decode(charset, "ignore") f.close() - if url.startswith(self.index_url) and getattr(f,'code',None)!=404: - page = self.process_index(url, page) for match in HREF.finditer(page): link = urlparse.urljoin(base, htmldecode(match.group(1))) self.process_url(link) + if url.startswith(self.index_url) and getattr(f,'code',None)!=404: + page = self.process_index(url, page) def process_filename(self, fn, nested=False): # process filenames or directories diff --git a/setuptools/tests/indexes/test_links_priority/external.html b/setuptools/tests/indexes/test_links_priority/external.html index 883e9790..92e4702f 100644 --- a/setuptools/tests/indexes/test_links_priority/external.html +++ b/setuptools/tests/indexes/test_links_priority/external.html @@ -1,3 +1,3 @@ <html><body> -<a href="foobar-0.1.tar.gz#md5=bad_md5">bad old link</a> +<a href="/foobar-0.1.tar.gz#md5=1__bad_md5___">bad old link</a> </body></html> diff --git a/setuptools/tests/indexes/test_links_priority/simple/foobar/index.html b/setuptools/tests/indexes/test_links_priority/simple/foobar/index.html index dc6273d1..fefb028b 100644 --- a/setuptools/tests/indexes/test_links_priority/simple/foobar/index.html +++ b/setuptools/tests/indexes/test_links_priority/simple/foobar/index.html @@ -1,4 +1,4 @@ <html><body> -<a href="foobar-0.1.tar.gz#md5=correct_md5">foobar-0.1.tar.gz</a><br/> +<a href="/foobar-0.1.tar.gz#md5=0_correct_md5">foobar-0.1.tar.gz</a><br/> <a href="../../external.html" rel="homepage">external homepage</a><br/> </body></html> diff --git a/setuptools/tests/test_packageindex.py b/setuptools/tests/test_packageindex.py index 5c1c6970..42cb8c1e 100644 --- a/setuptools/tests/test_packageindex.py +++ b/setuptools/tests/test_packageindex.py @@ -103,12 +103,10 @@ class TestPackageIndex(unittest.TestCase): # the distribution has been found self.assert_('foobar' in pi) - # we have two links - self.assert_(len(pi['foobar'])==2) - # the first link should be from the index + # we have only one link, because links are compared without md5 + self.assert_(len(pi['foobar'])==1) + # the link should be from the index self.assert_('correct_md5' in pi['foobar'][0].location) - # the second link should be the external one - self.assert_('bad_md5' in pi['foobar'][1].location) |