mirror of
https://github.com/pypa/pip
synced 2023-12-13 21:30:23 +01:00
90 lines
3.1 KiB
Python
90 lines
3.1 KiB
Python
|
|
from os.path import join
|
|
import textwrap
|
|
from test_pip import here, reset_env, run_pip, assert_all_changes, write_file
|
|
|
|
|
|
def test_no_upgrade_unless_requested():
|
|
"""
|
|
No upgrade if not specifically requested.
|
|
|
|
"""
|
|
reset_env()
|
|
run_pip('install', 'INITools==0.1', expect_error=True)
|
|
result = run_pip('install', 'INITools', expect_error=True)
|
|
assert not result.files_created, 'pip install INITools upgraded when it should not have'
|
|
|
|
|
|
def test_upgrade_to_specific_version():
|
|
"""
|
|
It does upgrade to specific version requested.
|
|
|
|
"""
|
|
reset_env()
|
|
run_pip('install', 'INITools==0.1', expect_error=True)
|
|
result = run_pip('install', 'INITools==0.2', expect_error=True)
|
|
assert result.files_created, 'pip install with specific version did not upgrade'
|
|
|
|
|
|
def test_upgrade_if_requested():
|
|
"""
|
|
And it does upgrade if requested.
|
|
|
|
"""
|
|
reset_env()
|
|
run_pip('install', 'INITools==0.1', expect_error=True)
|
|
result = run_pip('install', '--upgrade', 'INITools', expect_error=True)
|
|
assert result.files_created, 'pip install --upgrade did not upgrade'
|
|
|
|
|
|
def test_uninstall_before_upgrade():
|
|
"""
|
|
Automatic uninstall-before-upgrade.
|
|
|
|
"""
|
|
env = reset_env()
|
|
result = run_pip('install', 'INITools==0.2', expect_error=True)
|
|
assert env.site_packages/ 'initools' in result.files_created, sorted(result.files_created.keys())
|
|
result2 = run_pip('install', 'INITools==0.3', expect_error=True)
|
|
assert result2.files_created, 'upgrade to INITools 0.3 failed'
|
|
result3 = run_pip('uninstall', 'initools', '-y', expect_error=True)
|
|
assert_all_changes(result, result3, [env.venv/'build', 'cache'])
|
|
|
|
|
|
def test_upgrade_from_reqs_file():
|
|
"""
|
|
Upgrade from a requirements file.
|
|
|
|
"""
|
|
env = reset_env()
|
|
write_file('test-req.txt', textwrap.dedent("""\
|
|
PyLogo<0.4
|
|
# and something else to test out:
|
|
INITools==0.3
|
|
"""))
|
|
install_result = run_pip('install', '-r', env.scratch_path/ 'test-req.txt')
|
|
write_file('test-req.txt', textwrap.dedent("""\
|
|
PyLogo
|
|
# and something else to test out:
|
|
INITools
|
|
"""))
|
|
run_pip('install', '--upgrade', '-r', env.scratch_path/ 'test-req.txt')
|
|
uninstall_result = run_pip('uninstall', '-r', env.scratch_path/ 'test-req.txt', '-y')
|
|
assert_all_changes(install_result, uninstall_result, [env.venv/'build', 'cache', env.scratch/'test-req.txt'])
|
|
|
|
|
|
def test_uninstall_rollback():
|
|
"""
|
|
Test uninstall-rollback (using test package with a setup.py
|
|
crafted to fail on install).
|
|
|
|
"""
|
|
env = reset_env()
|
|
find_links = 'file://' + join(here, 'packages')
|
|
result = run_pip('install', '-f', find_links, '--no-index', 'broken==0.1')
|
|
assert env.site_packages / 'broken.py' in result.files_created, result.files_created.keys()
|
|
result2 = run_pip('install', '-f', find_links, '--no-index', 'broken==0.2broken', expect_error=True)
|
|
assert result2.returncode == 1, str(result2)
|
|
env.run('python', '-c', "import broken; print broken.VERSION").stdout
|
|
'0.1\n'
|
|
assert_all_changes(result.files_after, result2, [env.venv/'build', 'pip-log.txt'])
|