mirror of
https://github.com/kennethreitz/pipenv.git
synced 2026-06-05 22:50:18 +00:00
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
|