Commit f3411291 authored by Christophe Combelles's avatar Christophe Combelles

fixed issue 163 : don't include md5 when comparing two distributions, and scan

index links before external page links.

--HG--
branch : distribute
extra : rebase_source : d190057280e7cb27317eb4aa40e75f1c851ed6e5
parent 29ffeae7
......@@ -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
)
)
......
......@@ -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
......
<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>
<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>
......@@ -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)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment