From 797ca1c5647c565f62e21a8e29515c8b0fbe275f Mon Sep 17 00:00:00 2001 From: David Hart Date: Fri, 5 Jan 2018 21:24:43 +0000 Subject: [PATCH] Offer git commit --amend after previous git commit (#764) --- README.md | 1 + tests/rules/test_git_commit_amend.py | 25 +++++++++++++++++++++++++ thefuck/rules/git_commit_amend.py | 11 +++++++++++ 3 files changed, 37 insertions(+) create mode 100644 tests/rules/test_git_commit_amend.py create mode 100644 thefuck/rules/git_commit_amend.py diff --git a/README.md b/README.md index 184e20a3..7505717f 100644 --- a/README.md +++ b/README.md @@ -187,6 +187,7 @@ using the matched rule and runs it. Rules enabled by default are as follows: * `git_branch_exists` – offers `git branch -d foo`, `git branch -D foo` or `git checkout foo` when creating a branch that already exists; * `git_branch_list` – catches `git branch list` in place of `git branch` and removes created branch; * `git_checkout` – fixes branch name or creates new branch; +* `git_commit_amend` – offers `git commit --amend` after previous commit; * `git_diff_no_index` – adds `--no-index` to previous `git diff` on untracked files; * `git_diff_staged` – adds `--staged` to previous `git diff` with unexpected output; * `git_fix_stash` – fixes `git stash` commands (misspelled subcommand and missing `save`); diff --git a/tests/rules/test_git_commit_amend.py b/tests/rules/test_git_commit_amend.py new file mode 100644 index 00000000..743ccbf5 --- /dev/null +++ b/tests/rules/test_git_commit_amend.py @@ -0,0 +1,25 @@ +import pytest +from thefuck.rules.git_commit_amend import match, get_new_command +from thefuck.types import Command + + +@pytest.mark.parametrize('script, output', [ + ('git commit -m "test"', 'test output'), + ('git commit', '')]) +def test_match(output, script): + assert match(Command(script, output)) + + +@pytest.mark.parametrize('script', [ + 'git branch foo', + 'git checkout feature/test_commit', + 'git push']) +def test_not_match(script): + assert not match(Command(script, '')) + + +@pytest.mark.parametrize('script', [ + ('git commit -m "test commit"'), + ('git commit')]) +def test_get_new_command(script): + assert get_new_command(Command(script, '')) == 'git commit --amend' diff --git a/thefuck/rules/git_commit_amend.py b/thefuck/rules/git_commit_amend.py new file mode 100644 index 00000000..dd0ae6db --- /dev/null +++ b/thefuck/rules/git_commit_amend.py @@ -0,0 +1,11 @@ +from thefuck.specific.git import git_support + + +@git_support +def match(command): + return ('commit' in command.script_parts) + + +@git_support +def get_new_command(command): + return 'git commit --amend'