def test_setup_requires_honors_fetch_params(self):
"""
When easy_install installs a source distribution which specifies
setup_requires, it should honor the fetch parameters (such as
allow-hosts, index-url, and find-links).
"""
# set up a server which will simulate an alternate package index.
p_index = setuptools.tests.server.MockServer()
p_index.start()
netloc = 1
p_index_loc = urlparse(p_index.url)[netloc]
if p_index_loc.endswith(':0'):
# Some platforms (Jython) don't find a port to which to bind,
# so skip this test for them.
return
# I realize this is all-but-impossible to read, because it was
# ported from some well-factored, safe code using 'with'. If you
# need to maintain this code, consider making the changes in
# the parent revision (of this comment) and then port the changes
# back for Python 2.4 (or deprecate Python 2.4).
def install(dist_file):
def install_at(temp_install_dir):
def install_env():
ei_params = ['--index-url', p_index.url,
'--allow-hosts', p_index_loc,
'--exclude-scripts', '--install-dir', temp_install_dir,
dist_file]
def install_clean_reset():
def install_clean_argv():
# attempt to install the dist. It should fail because
# it doesn't exist.
self.assertRaises(SystemExit,
easy_install_pkg.main, ei_params)
argv_context(install_clean_argv, ['easy_install'])
reset_setup_stop_context(install_clean_reset)
environment_context(install_env, PYTHONPATH=temp_install_dir)
tempdir_context(install_at)
# create an sdist that has a build-time dependency.
self.create_sdist(install)
# there should have been two or three requests to the server
# (three happens on Python 3.3a)
self.assertTrue(2 <= len(p_index.requests) <= 3)
self.assertEqual(p_index.requests[0].path, '/does-not-exist/')
评论列表
文章目录