diff options
Diffstat (limited to 'setuptools')
-rw-r--r-- | setuptools/compat.py | 4 | ||||
-rwxr-xr-x | setuptools/package_index.py | 6 | ||||
-rw-r--r-- | setuptools/tests/test_packageindex.py | 18 |
3 files changed, 22 insertions, 6 deletions
diff --git a/setuptools/compat.py b/setuptools/compat.py index 8af8aa74..7b824ba2 100644 --- a/setuptools/compat.py +++ b/setuptools/compat.py @@ -26,7 +26,7 @@ if sys.version_info[0] < 3: unichr = unichr unicode = unicode bytes = str - from urllib import url2pathname, splittag + from urllib import url2pathname, splittag, pathname2url import urllib2 from urllib2 import urlopen, HTTPError, URLError, unquote, splituser from urlparse import urlparse, urlunparse, urljoin, urlsplit, urlunsplit @@ -58,7 +58,7 @@ else: bytes = bytes from urllib.error import HTTPError, URLError import urllib.request as urllib2 - from urllib.request import urlopen, url2pathname + from urllib.request import urlopen, url2pathname, pathname2url from urllib.parse import ( urlparse, urlunparse, unquote, splituser, urljoin, urlsplit, urlunsplit, splittag, diff --git a/setuptools/package_index.py b/setuptools/package_index.py index 12a062b5..0e51b72c 100755 --- a/setuptools/package_index.py +++ b/setuptools/package_index.py @@ -1039,7 +1039,7 @@ def local_open(url): files = [] for f in os.listdir(filename): if f=='index.html': - fp = open(os.path.join(filename,f),'rb') + fp = open(os.path.join(filename,f),'r') body = fp.read() fp.close() break @@ -1053,5 +1053,5 @@ def local_open(url): else: status, message, body = 404, "Path not found", "Not found" - return HTTPError(url, status, message, - {'content-type':'text/html'}, StringIO(body)) + headers = {'content-type': 'text/html'} + return HTTPError(url, status, message, headers, StringIO(body)) diff --git a/setuptools/tests/test_packageindex.py b/setuptools/tests/test_packageindex.py index 08969b7e..664566a3 100644 --- a/setuptools/tests/test_packageindex.py +++ b/setuptools/tests/test_packageindex.py @@ -1,9 +1,10 @@ """Package Index Tests """ import sys +import os import unittest import pkg_resources -from setuptools.compat import urllib2, httplib, HTTPError, unicode +from setuptools.compat import urllib2, httplib, HTTPError, unicode, pathname2url import distutils.errors import setuptools.package_index from setuptools.tests.server import IndexServer @@ -151,6 +152,21 @@ class TestPackageIndex(unittest.TestCase): self.assertEqual(url, 'https://example.com/bar') self.assertEqual(rev, '2995') + def test_local_index(self): + """ + local_open should be able to read an index from the file system. + """ + f = open('index.html', 'w') + f.write('<div>content</div>') + f.close() + try: + url = 'file:' + pathname2url(os.getcwd()) + '/' + res = setuptools.package_index.local_open(url) + finally: + os.remove('index.html') + assert 'content' in res.read() + + class TestContentCheckers(unittest.TestCase): def test_md5(self): |