#475: Try to use already used executable in no_command
This commit is contained in:
@@ -3,38 +3,23 @@ from thefuck.rules.history import match, get_new_command
|
||||
from tests.utils import Command
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def history(mocker):
|
||||
return mocker.patch('thefuck.shells.shell.get_history',
|
||||
return_value=['le cat', 'fuck', 'ls cat',
|
||||
'diff x', 'nocommand x'])
|
||||
@pytest.fixture(autouse=True)
|
||||
def history_without_current(mocker):
|
||||
return mocker.patch(
|
||||
'thefuck.rules.history.get_valid_history_without_current',
|
||||
return_value=['ls cat', 'diff x'])
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def alias(mocker):
|
||||
return mocker.patch('thefuck.rules.history.get_alias',
|
||||
return_value='fuck')
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def callables(mocker):
|
||||
return mocker.patch('thefuck.rules.history.get_all_executables',
|
||||
return_value=['diff', 'ls'])
|
||||
|
||||
|
||||
@pytest.mark.usefixtures('history', 'callables', 'no_memoize', 'alias')
|
||||
@pytest.mark.parametrize('script', ['ls cet', 'daff x'])
|
||||
def test_match(script):
|
||||
assert match(Command(script=script))
|
||||
|
||||
|
||||
@pytest.mark.usefixtures('history', 'callables', 'no_memoize', 'alias')
|
||||
@pytest.mark.parametrize('script', ['apt-get', 'nocommand y'])
|
||||
def test_not_match(script):
|
||||
assert not match(Command(script=script))
|
||||
|
||||
|
||||
@pytest.mark.usefixtures('history', 'callables', 'no_memoize', 'alias')
|
||||
@pytest.mark.parametrize('script, result', [
|
||||
('ls cet', 'ls cat'),
|
||||
('daff x', 'diff x')])
|
||||
|
||||
@@ -6,22 +6,37 @@ from tests.utils import Command
|
||||
@pytest.fixture(autouse=True)
|
||||
def get_all_executables(mocker):
|
||||
mocker.patch('thefuck.rules.no_command.get_all_executables',
|
||||
return_value=['vim', 'apt-get', 'fsck'])
|
||||
return_value=['vim', 'fsck', 'git', 'go'])
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def history_without_current(mocker):
|
||||
return mocker.patch(
|
||||
'thefuck.rules.no_command.get_valid_history_without_current',
|
||||
return_value=['git commit'])
|
||||
|
||||
|
||||
@pytest.mark.usefixtures('no_memoize')
|
||||
def test_match():
|
||||
assert match(Command(stderr='vom: not found', script='vom file.py'))
|
||||
assert match(Command(stderr='fucck: not found', script='fucck'))
|
||||
assert not match(Command(stderr='qweqwe: not found', script='qweqwe'))
|
||||
assert not match(Command(stderr='some text', script='vom file.py'))
|
||||
@pytest.mark.parametrize('script, stderr', [
|
||||
('vom file.py', 'vom: not found'),
|
||||
('fucck', 'fucck: not found'),
|
||||
('got commit', 'got: command not found')])
|
||||
def test_match(script, stderr):
|
||||
assert match(Command(script, stderr=stderr))
|
||||
|
||||
|
||||
@pytest.mark.usefixtures('no_memoize')
|
||||
def test_get_new_command():
|
||||
assert get_new_command(
|
||||
Command(stderr='vom: not found',
|
||||
script='vom file.py')) == ['vim file.py']
|
||||
assert get_new_command(
|
||||
Command(stderr='fucck: not found',
|
||||
script='fucck')) == ['fsck']
|
||||
@pytest.mark.parametrize('script, stderr', [
|
||||
('qweqwe', 'qweqwe: not found'),
|
||||
('vom file.py', 'some text')])
|
||||
def test_not_match(script, stderr):
|
||||
assert not match(Command(script, stderr=stderr))
|
||||
|
||||
|
||||
@pytest.mark.usefixtures('no_memoize')
|
||||
@pytest.mark.parametrize('script, result', [
|
||||
('vom file.py', ['vim file.py']),
|
||||
('fucck', ['fsck']),
|
||||
('got commit', ['git commit', 'go commit'])])
|
||||
def test_get_new_command(script, result):
|
||||
assert get_new_command(Command(script)) == result
|
||||
|
||||
+28
-1
@@ -3,7 +3,8 @@ from mock import Mock
|
||||
import six
|
||||
from thefuck.utils import default_settings, \
|
||||
memoize, get_closest, get_all_executables, replace_argument, \
|
||||
get_all_matched_commands, is_app, for_app, cache, compatibility_call
|
||||
get_all_matched_commands, is_app, for_app, cache, compatibility_call, \
|
||||
get_valid_history_without_current
|
||||
from tests.utils import Command
|
||||
|
||||
|
||||
@@ -229,3 +230,29 @@ class TestCompatibilityCall(object):
|
||||
return True
|
||||
|
||||
assert compatibility_call(side_effect, Command(), Command())
|
||||
|
||||
|
||||
class TestGetValidHistoryWithoutCurrent(object):
|
||||
@pytest.fixture(autouse=True)
|
||||
def history(self, mocker):
|
||||
return mocker.patch('thefuck.shells.shell.get_history',
|
||||
return_value=['le cat', 'fuck', 'ls cat',
|
||||
'diff x', 'nocommand x'])
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def alias(self, mocker):
|
||||
return mocker.patch('thefuck.utils.get_alias',
|
||||
return_value='fuck')
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def callables(self, mocker):
|
||||
return mocker.patch('thefuck.utils.get_all_executables',
|
||||
return_value=['diff', 'ls'])
|
||||
|
||||
@pytest.mark.parametrize('script, result', [
|
||||
('le cat', ['ls cat', 'diff x']),
|
||||
('diff x', ['ls cat']),
|
||||
('fuck', ['ls cat', 'diff x'])])
|
||||
def test_get_valid_history_without_current(self, script, result):
|
||||
command = Command(script=script)
|
||||
assert get_valid_history_without_current(command) == result
|
||||
|
||||
Reference in New Issue
Block a user