From bb7579ead5c53a8fb69d6c5e8a505ee4eafdd160 Mon Sep 17 00:00:00 2001 From: mcarton Date: Mon, 20 Jul 2015 18:42:05 +0200 Subject: [PATCH] Add the `git_pull_clone` rule --- tests/rules/test_git_pull_clone.py | 21 +++++++++++++++++++++ thefuck/rules/git_pull_clone.py | 14 ++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 tests/rules/test_git_pull_clone.py create mode 100644 thefuck/rules/git_pull_clone.py diff --git a/tests/rules/test_git_pull_clone.py b/tests/rules/test_git_pull_clone.py new file mode 100644 index 00000000..07249fae --- /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 00000000..c5e68a7a --- /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 ')