diff --git a/tests/rules/test_git_pull_clone.py b/tests/rules/test_git_pull_clone.py new file mode 100644 index 0000000..07249fa --- /dev/null +++ b/tests/rules/test_git_pull_clone.py @@ -0,0 +1,21 @@ +import pytest +from thefuck.rules.git_pull_clone import match, get_new_command +from tests.utils import Command + + +git_err = ''' +fatal: Not a git repository (or any parent up to mount point /home) +Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set). +''' + + +@pytest.mark.parametrize('command', [ + Command(script='git pull git@github.com:mcarton/thefuck.git', stderr=git_err)]) +def test_match(command): + assert match(command, None) + + +@pytest.mark.parametrize('command, output', [ + (Command(script='git pull git@github.com:mcarton/thefuck.git', stderr=git_err), 'git clone git@github.com:mcarton/thefuck.git')]) +def test_get_new_command(command, output): + assert get_new_command(command, None) == output diff --git a/thefuck/rules/git_pull_clone.py b/thefuck/rules/git_pull_clone.py new file mode 100644 index 0000000..c5e68a7 --- /dev/null +++ b/thefuck/rules/git_pull_clone.py @@ -0,0 +1,14 @@ +import re +from thefuck import utils, shells + + +@utils.git_support +def match(command, settings): + return ('git pull' in command.script + and 'fatal: Not a git repository' in command.stderr + and "Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)." in command.stderr) + + +@utils.git_support +def get_new_command(command, settings): + return command.script.replace(' pull ', ' clone ')