1
0
mirror of https://github.com/nvbn/thefuck.git synced 2025-02-21 20:38:54 +00:00

Use @git_support in all git_* rules

This commit is contained in:
mcarton 2015-07-17 11:55:44 +02:00
parent 707d91200e
commit f6a4902074
10 changed files with 43 additions and 26 deletions

View File

@ -3,15 +3,13 @@ from thefuck.rules.git_diff_staged import match, get_new_command
from tests.utils import Command from tests.utils import Command
@pytest.mark.parametrize('command', [ @pytest.mark.parametrize('command', [Command(script='git diff')])
Command(script='git diff'),
Command(script='git df'),
Command(script='git ds')])
def test_match(command): def test_match(command):
assert match(command, None) assert match(command, None)
@pytest.mark.parametrize('command', [ @pytest.mark.parametrize('command', [
Command(script='git diff --staged'),
Command(script='git tag'), Command(script='git tag'),
Command(script='git branch'), Command(script='git branch'),
Command(script='git log')]) Command(script='git log')])
@ -20,8 +18,6 @@ def test_not_match(command):
@pytest.mark.parametrize('command, new_command', [ @pytest.mark.parametrize('command, new_command', [
(Command('git diff'), 'git diff --staged'), (Command('git diff'), 'git diff --staged')])
(Command('git df'), 'git df --staged'),
(Command('git ds'), 'git ds --staged')])
def test_get_new_command(command, new_command): def test_get_new_command(command, new_command):
assert get_new_command(command, None) == new_command assert get_new_command(command, None) == new_command

View File

@ -3,22 +3,20 @@ from thefuck.rules.git_stash import match, get_new_command
from tests.utils import Command from tests.utils import Command
@pytest.fixture cherry_pick_error = (
def cherry_pick_error(): 'error: Your local changes would be overwritten by cherry-pick.\n'
return ('error: Your local changes would be overwritten by cherry-pick.\n' 'hint: Commit your changes or stash them to proceed.\n'
'hint: Commit your changes or stash them to proceed.\n' 'fatal: cherry-pick failed')
'fatal: cherry-pick failed')
@pytest.fixture rebase_error = (
def rebase_error(): 'Cannot rebase: Your index contains uncommitted changes.\n'
return ('Cannot rebase: Your index contains uncommitted changes.\n' 'Please commit or stash them.')
'Please commit or stash them.')
@pytest.mark.parametrize('command', [ @pytest.mark.parametrize('command', [
Command(script='git cherry-pick a1b2c3d', stderr=cherry_pick_error()), Command(script='git cherry-pick a1b2c3d', stderr=cherry_pick_error),
Command(script='git rebase -i HEAD~7', stderr=rebase_error())]) Command(script='git rebase -i HEAD~7', stderr=rebase_error)])
def test_match(command): def test_match(command):
assert match(command, None) assert match(command, None)

View File

@ -1,13 +1,15 @@
import re import re
from thefuck import shells from thefuck import utils, shells
@utils.git_support
def match(command, settings): def match(command, settings):
return ('git' in command.script return ('git' in command.script
and 'did not match any file(s) known to git.' in command.stderr and 'did not match any file(s) known to git.' in command.stderr
and "Did you forget to 'git add'?" in command.stderr) and "Did you forget to 'git add'?" in command.stderr)
@utils.git_support
def get_new_command(command, settings): def get_new_command(command, settings):
missing_file = re.findall( missing_file = re.findall(
r"error: pathspec '([^']*)' " r"error: pathspec '([^']*)' "

View File

@ -1,10 +1,12 @@
from thefuck import shells from thefuck import utils, shells
@utils.git_support
def match(command, settings): def match(command, settings):
# catches "git branch list" in place of "git branch" # catches "git branch list" in place of "git branch"
return command.script.split() == 'git branch list'.split() return command.script.split() == 'git branch list'.split()
@utils.git_support
def get_new_command(command, settings): def get_new_command(command, settings):
return shells.and_('git branch --delete list', 'git branch') return shells.and_('git branch --delete list', 'git branch')

View File

@ -1,13 +1,15 @@
import re import re
from thefuck import shells from thefuck import shells, utils
@utils.git_support
def match(command, settings): def match(command, settings):
return ('git' in command.script return ('git' in command.script
and 'did not match any file(s) known to git.' in command.stderr and 'did not match any file(s) known to git.' in command.stderr
and "Did you forget to 'git add'?" not in command.stderr) and "Did you forget to 'git add'?" not in command.stderr)
@utils.git_support
def get_new_command(command, settings): def get_new_command(command, settings):
missing_file = re.findall( missing_file = re.findall(
r"error: pathspec '([^']*)' " r"error: pathspec '([^']*)' "

View File

@ -1,6 +1,13 @@
from thefuck import utils
@utils.git_support
def match(command, settings): def match(command, settings):
return command.script.startswith('git d') return ('git' in command.script and
'diff' in command.script and
'--staged' not in command.script)
@utils.git_support
def get_new_command(command, settings): def get_new_command(command, settings):
return '{} --staged'.format(command.script) return '{} --staged'.format(command.script)

View File

@ -1,8 +1,8 @@
from difflib import get_close_matches
import re import re
from thefuck.utils import get_closest from thefuck.utils import get_closest, git_support
@git_support
def match(command, settings): def match(command, settings):
return ('git' in command.script return ('git' in command.script
and " is not a git command. See 'git --help'." in command.stderr and " is not a git command. See 'git --help'." in command.stderr
@ -18,6 +18,7 @@ def _get_all_git_matched_commands(stderr):
yield line.strip() yield line.strip()
@git_support
def get_new_command(command, settings): def get_new_command(command, settings):
broken_cmd = re.findall(r"git: '([^']*)' is not a git command", broken_cmd = re.findall(r"git: '([^']*)' is not a git command",
command.stderr)[0] command.stderr)[0]

View File

@ -1,12 +1,14 @@
from thefuck import shells from thefuck import shells, utils
@utils.git_support
def match(command, settings): def match(command, settings):
return ('git' in command.script return ('git' in command.script
and 'pull' in command.script and 'pull' in command.script
and 'set-upstream' in command.stderr) and 'set-upstream' in command.stderr)
@utils.git_support
def get_new_command(command, settings): def get_new_command(command, settings):
line = command.stderr.split('\n')[-3].strip() line = command.stderr.split('\n')[-3].strip()
branch = line.split(' ')[-1] branch = line.split(' ')[-1]

View File

@ -1,8 +1,13 @@
from thefuck import utils
@utils.git_support
def match(command, settings): def match(command, settings):
return ('git' in command.script return ('git' in command.script
and 'push' in command.script and 'push' in command.script
and 'set-upstream' in command.stderr) and 'set-upstream' in command.stderr)
@utils.git_support
def get_new_command(command, settings): def get_new_command(command, settings):
return command.stderr.split('\n')[-3].strip() return command.stderr.split('\n')[-3].strip()

View File

@ -1,12 +1,14 @@
from thefuck import shells from thefuck import shells, utils
@utils.git_support
def match(command, settings): def match(command, settings):
# catches "Please commit or stash them" and "Please, commit your changes or # catches "Please commit or stash them" and "Please, commit your changes or
# stash them before you can switch branches." # stash them before you can switch branches."
return 'git' in command.script and 'or stash them' in command.stderr return 'git' in command.script and 'or stash them' in command.stderr
@utils.git_support
def get_new_command(command, settings): def get_new_command(command, settings):
formatme = shells.and_('git stash', '{}') formatme = shells.and_('git stash', '{}')
return formatme.format(command.script) return formatme.format(command.script)