mirror of
https://github.com/kennethreitz/pipenv.git
synced 2026-06-05 22:50:18 +00:00
c097d5bd96
Before this commit, we were cleaning up the tmpfiles before the pip command had run, meaning we hit errors.
114 lines
4.4 KiB
Python
114 lines
4.4 KiB
Python
import os
|
|
|
|
from mock import patch, Mock, PropertyMock
|
|
|
|
from pipenv.cli import (
|
|
pip_install, pip_download
|
|
)
|
|
|
|
# Tell pipenv to ignore activated virtualenvs.
|
|
os.environ['PIPENV_IGNORE_VIRTUALENVS'] = 'True'
|
|
|
|
|
|
class TestPipenv():
|
|
|
|
@patch('pipenv.project.Project.sources', new_callable=PropertyMock)
|
|
@patch('delegator.run')
|
|
def test_pip_install_should_try_every_possible_source(self, mocked_delegator, mocked_sources):
|
|
sources = [
|
|
{'url': 'http://dontexistis.in.pypi/simple'},
|
|
{'url': 'http://existis.in.pypi/simple'}
|
|
]
|
|
mocked_sources.return_value = sources
|
|
first_cmd_return = Mock()
|
|
first_cmd_return.return_code = 1
|
|
second_cmd_return = Mock()
|
|
second_cmd_return.return_code = 0
|
|
mocked_delegator.side_effect = [first_cmd_return, second_cmd_return]
|
|
c, _ = pip_install('package')
|
|
assert c.return_code == 0
|
|
|
|
@patch('pipenv.project.Project.sources', new_callable=PropertyMock)
|
|
@patch('delegator.run')
|
|
def test_pip_install_should_return_the_last_error_if_no_cmd_worked(self, mocked_delegator, mocked_sources):
|
|
sources = [
|
|
{'url': 'http://dontexistis.in.pypi/simple'},
|
|
{'url': 'http://dontexistis.in.pypi/simple'}
|
|
]
|
|
mocked_sources.return_value = sources
|
|
first_cmd_return = Mock()
|
|
first_cmd_return.return_code = 1
|
|
second_cmd_return = Mock()
|
|
second_cmd_return.return_code = 1
|
|
mocked_delegator.side_effect = [first_cmd_return, second_cmd_return]
|
|
c, _ = pip_install('package')
|
|
assert c.return_code == 1
|
|
assert c == second_cmd_return
|
|
|
|
@patch('pipenv.project.Project.sources', new_callable=PropertyMock)
|
|
@patch('delegator.run')
|
|
def test_pip_install_should_return_the_first_cmd_that_worked(self, mocked_delegator, mocked_sources):
|
|
sources = [
|
|
{'url': 'http://existis.in.pypi/simple'},
|
|
{'url': 'http://existis.in.pypi/simple'}
|
|
]
|
|
mocked_sources.return_value = sources
|
|
first_cmd_return = Mock()
|
|
first_cmd_return.return_code = 0
|
|
second_cmd_return = Mock()
|
|
second_cmd_return.return_code = 0
|
|
mocked_delegator.side_effect = [first_cmd_return, second_cmd_return]
|
|
c, _ = pip_install('package')
|
|
assert c.return_code == 0
|
|
assert c == first_cmd_return
|
|
|
|
@patch('pipenv.project.Project.sources', new_callable=PropertyMock)
|
|
@patch('delegator.run')
|
|
def test_pip_download_should_try_every_possible_source(self, mocked_delegator, mocked_sources):
|
|
sources = [
|
|
{'url': 'http://dontexistis.in.pypi/simple'},
|
|
{'url': 'http://existis.in.pypi/simple'}
|
|
]
|
|
mocked_sources.return_value = sources
|
|
first_cmd_return = Mock()
|
|
first_cmd_return.return_code = 1
|
|
second_cmd_return = Mock()
|
|
second_cmd_return.return_code = 0
|
|
mocked_delegator.side_effect = [first_cmd_return, second_cmd_return]
|
|
c = pip_download('package')
|
|
assert c.return_code == 0
|
|
|
|
@patch('pipenv.project.Project.sources', new_callable=PropertyMock)
|
|
@patch('delegator.run')
|
|
def test_pip_download_should_return_the_last_error_if_no_cmd_worked(self, mocked_delegator, mocked_sources):
|
|
sources = [
|
|
{'url': 'http://dontexistis.in.pypi/simple'},
|
|
{'url': 'http://dontexistis.in.pypi/simple'}
|
|
]
|
|
mocked_sources.return_value = sources
|
|
first_cmd_return = Mock()
|
|
first_cmd_return.return_code = 1
|
|
second_cmd_return = Mock()
|
|
second_cmd_return.return_code = 1
|
|
mocked_delegator.side_effect = [first_cmd_return, second_cmd_return]
|
|
c = pip_download('package')
|
|
assert c.return_code == 1
|
|
assert c == second_cmd_return
|
|
|
|
@patch('pipenv.project.Project.sources', new_callable=PropertyMock)
|
|
@patch('delegator.run')
|
|
def test_pip_download_should_return_the_first_cmd_that_worked(self, mocked_delegator, mocked_sources):
|
|
sources = [
|
|
{'url': 'http://existis.in.pypi/simple'},
|
|
{'url': 'http://existis.in.pypi/simple'}
|
|
]
|
|
mocked_sources.return_value = sources
|
|
first_cmd_return = Mock()
|
|
first_cmd_return.return_code = 0
|
|
second_cmd_return = Mock()
|
|
second_cmd_return.return_code = 0
|
|
mocked_delegator.side_effect = [first_cmd_return, second_cmd_return]
|
|
c = pip_download('package')
|
|
assert c.return_code == 0
|
|
assert c == first_cmd_return
|