1
1
Fork 0
mirror of https://github.com/pypa/pip synced 2023-12-13 21:30:23 +01:00
pip/tests/functional/test_wheel.py

146 lines
4.7 KiB
Python
Raw Normal View History

2013-05-28 23:58:08 +02:00
"""'pip wheel' tests"""
2012-10-17 00:57:10 +02:00
import os
2015-01-15 00:53:15 +01:00
import pytest
2013-05-28 23:58:08 +02:00
from os.path import exists
2012-10-17 01:39:56 +02:00
from pip.locations import write_delete_marker_file
from pip.status_codes import PREVIOUS_BUILD_DIR_ERROR
from tests.lib import pyversion
2013-05-28 23:58:08 +02:00
def test_pip_wheel_fails_without_wheel(script, data):
2013-05-28 23:58:08 +02:00
"""
Test 'pip wheel' fails without wheel
"""
result = script.pip(
'wheel', '--no-index', '-f', data.find_links, 'simple==3.0',
expect_error=True,
)
assert "'pip wheel' requires the 'wheel' package" in result.stdout
2013-05-28 23:58:08 +02:00
2015-01-15 00:53:15 +01:00
@pytest.mark.network
def test_pip_wheel_success(script, data):
2013-05-28 23:58:08 +02:00
"""
Test 'pip wheel' success.
"""
script.pip('install', 'wheel')
result = script.pip(
'wheel', '--no-index', '-f', data.find_links, 'simple==3.0',
)
wheel_file_name = 'simple-3.0-py%s-none-any.whl' % pyversion[0]
wheel_file_path = script.scratch / 'wheelhouse' / wheel_file_name
2013-05-28 23:58:08 +02:00
assert wheel_file_path in result.files_created, result.stdout
assert "Successfully built simple" in result.stdout, result.stdout
2015-01-15 00:53:15 +01:00
@pytest.mark.network
def test_pip_wheel_downloads_wheels(script, data):
"""
Test 'pip wheel' downloads wheels
"""
script.pip('install', 'wheel')
result = script.pip(
'wheel', '--no-index', '-f', data.find_links, 'simple.dist',
)
wheel_file_name = 'simple.dist-0.1-py2.py3-none-any.whl'
wheel_file_path = script.scratch / 'wheelhouse' / wheel_file_name
assert wheel_file_path in result.files_created, result.stdout
assert "Saved" in result.stdout, result.stdout
2015-01-15 00:53:15 +01:00
@pytest.mark.network
def test_pip_wheel_builds_editable_deps(script, data):
"""
Test 'pip wheel' finds and builds dependencies of editables
"""
script.pip('install', 'wheel')
editable_path = os.path.join(data.src, 'requires_simple')
result = script.pip(
'wheel', '--no-index', '-f', data.find_links, '-e', editable_path
)
wheel_file_name = 'simple-1.0-py%s-none-any.whl' % pyversion[0]
wheel_file_path = script.scratch / 'wheelhouse' / wheel_file_name
assert wheel_file_path in result.files_created, result.stdout
2015-01-15 00:53:15 +01:00
@pytest.mark.network
def test_pip_wheel_fail(script, data):
2013-05-28 23:58:08 +02:00
"""
Test 'pip wheel' failure.
"""
script.pip('install', 'wheel')
result = script.pip(
'wheel', '--no-index', '-f', data.find_links, 'wheelbroken==0.1',
expect_error=True,
)
wheel_file_name = 'wheelbroken-0.1-py%s-none-any.whl' % pyversion[0]
wheel_file_path = script.scratch / 'wheelhouse' / wheel_file_name
assert wheel_file_path not in result.files_created, (
wheel_file_path,
result.files_created,
)
2013-05-28 23:58:08 +02:00
assert "FakeError" in result.stdout, result.stdout
assert "Failed to build wheelbroken" in result.stdout, result.stdout
assert result.returncode != 0
2013-05-28 23:58:08 +02:00
2015-01-15 00:53:15 +01:00
@pytest.mark.network
def test_no_clean_option_blocks_cleaning_after_wheel(script, data):
2013-05-28 23:58:08 +02:00
"""
Test --no-clean option blocks cleaning after wheel build
"""
script.pip('install', 'wheel')
build = script.venv_path / 'build'
result = script.pip(
'wheel', '--no-clean', '--no-index', '--build', build,
'--find-links=%s' % data.find_links, 'simple',
)
build = build / 'simple'
2013-05-28 23:58:08 +02:00
assert exists(build), "build/simple should still exist %s" % str(result)
2013-06-07 04:11:43 +02:00
2015-01-15 00:53:15 +01:00
@pytest.mark.network
def test_pip_wheel_source_deps(script, data):
2013-06-07 04:11:43 +02:00
"""
Test 'pip wheel --use-wheel' finds and builds source archive dependencies
of wheels
2013-06-07 04:11:43 +02:00
"""
# 'requires_source' is a wheel that depends on the 'source' project
script.pip('install', 'wheel')
result = script.pip(
'wheel', '--use-wheel', '--no-index', '-f', data.find_links,
'requires_source',
)
wheel_file_name = 'source-1.0-py%s-none-any.whl' % pyversion[0]
wheel_file_path = script.scratch / 'wheelhouse' / wheel_file_name
2013-06-07 04:11:43 +02:00
assert wheel_file_path in result.files_created, result.stdout
assert "Successfully built source" in result.stdout, result.stdout
2015-01-15 00:53:15 +01:00
@pytest.mark.network
def test_pip_wheel_fail_cause_of_previous_build_dir(script, data):
"""
Test when 'pip wheel' tries to install a package that has a previous build
directory
"""
script.pip('install', 'wheel')
# Given that I have a previous build dir of the `simple` package
build = script.venv_path / 'build' / 'simple'
os.makedirs(build)
write_delete_marker_file(script.venv_path / 'build')
build.join('setup.py').write('#')
# When I call pip trying to install things again
result = script.pip(
'wheel', '--no-index', '--find-links=%s' % data.find_links,
'--build', script.venv_path / 'build',
'simple==3.0', expect_error=True,
)
# Then I see that the error code is the right one
assert result.returncode == PREVIOUS_BUILD_DIR_ERROR, result