1
0
mirror of https://github.com/nvbn/thefuck.git synced 2025-01-31 02:01:13 +00:00

#682: Ensure that script exists

This commit is contained in:
Vladimir Iakovlev 2017-09-03 10:10:50 +02:00
parent 1cae91b649
commit 4875d75a64
3 changed files with 44 additions and 8 deletions

View File

@ -53,7 +53,7 @@ def source_root():
@pytest.fixture @pytest.fixture
def set_shell(monkeypatch, request): def set_shell(monkeypatch):
def _set(cls): def _set(cls):
shell = cls() shell = cls()
monkeypatch.setattr('thefuck.shells.shell', shell) monkeypatch.setattr('thefuck.shells.shell', shell)

View File

@ -0,0 +1,30 @@
from mock import Mock
import pytest
from thefuck.entrypoints.alias import _get_alias
@pytest.mark.parametrize(
'py2, enable_experimental_instant_mode, which, is_instant', [
(False, True, True, True),
(False, False, True, False),
(False, True, False, False),
(True, True, True, False),
(True, True, False, False),
(True, False, True, False)])
def test_get_alias(monkeypatch, mocker, py2,
enable_experimental_instant_mode,
which, is_instant):
monkeypatch.setattr('six.PY2', py2)
args = Mock(
enable_experimental_instant_mode=enable_experimental_instant_mode,
alias='fuck', )
mocker.patch('thefuck.entrypoints.alias.which', return_value=which)
shell = Mock(app_alias=lambda _: 'app_alias',
instant_mode_alias=lambda _: 'instant_mode_alias')
monkeypatch.setattr('thefuck.entrypoints.alias.shell', shell)
alias = _get_alias(args)
if is_instant:
assert alias == 'instant_mode_alias'
else:
assert alias == 'app_alias'

View File

@ -1,20 +1,26 @@
import six import six
from ..logs import warn from ..logs import warn
from ..shells import shell from ..shells import shell
from ..utils import which
def print_alias(known_args): def _get_alias(known_args):
if six.PY2: if six.PY2:
warn("The Fuck will drop Python 2 support soon, more details " warn("The Fuck will drop Python 2 support soon, more details "
"https://github.com/nvbn/thefuck/issues/685") "https://github.com/nvbn/thefuck/issues/685")
alias = shell.app_alias(known_args.alias)
if known_args.enable_experimental_instant_mode: if known_args.enable_experimental_instant_mode:
if six.PY2: if six.PY2:
warn("Instant mode not supported with Python 2") warn("Instant mode requires Python 3")
alias = shell.app_alias(known_args.alias) elif not which('script'):
warn("Instant mode requires `script` app")
else: else:
alias = shell.instant_mode_alias(known_args.alias) return shell.instant_mode_alias(known_args.alias)
else:
alias = shell.app_alias(known_args.alias)
print(alias) return alias
def print_alias(known_args):
print(_get_alias(known_args))