diff --git a/tests/rules/test_conda_mistype.py b/tests/rules/test_conda_mistype.py new file mode 100644 index 00000000..0f05d829 --- /dev/null +++ b/tests/rules/test_conda_mistype.py @@ -0,0 +1,24 @@ +import pytest + +from thefuck.rules.conda_mistype import match, get_new_command +from thefuck.types import Command + + +@pytest.fixture +def mistype_response(): + return """ + +CommandNotFoundError: No command 'conda lst'. +Did you mean 'conda list'? + + """ + + +def test_match(mistype_response): + assert match(Command('conda lst', mistype_response)) + err_response = 'bash: codna: command not found' + assert not match(Command('codna list', err_response)) + + +def test_get_new_command(mistype_response): + assert (get_new_command(Command('conda lst', mistype_response)) == ['conda list']) diff --git a/thefuck/rules/conda_mistype.py b/thefuck/rules/conda_mistype.py new file mode 100644 index 00000000..c0e9202e --- /dev/null +++ b/thefuck/rules/conda_mistype.py @@ -0,0 +1,16 @@ +import re +from thefuck.utils import get_all_matched_commands, replace_command + + +def match(command): + ''' + Match a mistyped command + ''' + return 'conda' in command.script and "Did you mean 'conda" in command.output + + +def get_new_command(command): + match = re.findall(r"'conda ([^']*)'", command.output) + broken_cmd = match[0] + correct_cmd = match[1] + return replace_command(command, broken_cmd, [correct_cmd])