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): ...@@ -2081,8 +2081,11 @@ class Distribution(object):
hashcmp = property( hashcmp = property(
lambda self: ( lambda self: (
getattr(self,'parsed_version',()), self.precedence, self.key, getattr(self,'parsed_version',()),
-len(self.location or ''), self.location, self.py_version, self.precedence,
self.key,
(self.location or '').split('#md5=')[0],
self.py_version,
self.platform self.platform
) )
) )
......
...@@ -203,11 +203,11 @@ class PackageIndex(Environment): ...@@ -203,11 +203,11 @@ class PackageIndex(Environment):
charset = f.headers.get_param('charset') or 'latin-1' charset = f.headers.get_param('charset') or 'latin-1'
page = page.decode(charset, "ignore") page = page.decode(charset, "ignore")
f.close() 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): for match in HREF.finditer(page):
link = urlparse.urljoin(base, htmldecode(match.group(1))) link = urlparse.urljoin(base, htmldecode(match.group(1)))
self.process_url(link) 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): def process_filename(self, fn, nested=False):
# process filenames or directories # process filenames or directories
......
<html><body> <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> </body></html>
<html><body> <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/> <a href="../../external.html" rel="homepage">external homepage</a><br/>
</body></html> </body></html>
...@@ -103,12 +103,10 @@ class TestPackageIndex(unittest.TestCase): ...@@ -103,12 +103,10 @@ class TestPackageIndex(unittest.TestCase):
# the distribution has been found # the distribution has been found
self.assert_('foobar' in pi) self.assert_('foobar' in pi)
# we have two links # we have only one link, because links are compared without md5
self.assert_(len(pi['foobar'])==2) self.assert_(len(pi['foobar'])==1)
# the first link should be from the index # the link should be from the index
self.assert_('correct_md5' in pi['foobar'][0].location) 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