mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-18 12:06:04 +00:00
#1131: Improve git_commit_add rule
Add more capabilities to the rule, remove its priority and fix tests
This commit is contained in:
parent
55922e4dbe
commit
11b70526f7
@ -234,7 +234,7 @@ following rules are enabled by default:
|
|||||||
* `git_branch_0flag` – fixes commands such as `git branch 0v` and `git branch 0r` removing the created branch;
|
* `git_branch_0flag` – fixes commands such as `git branch 0v` and `git branch 0r` removing the created branch;
|
||||||
* `git_checkout` – fixes branch name or creates new branch;
|
* `git_checkout` – fixes branch name or creates new branch;
|
||||||
* `git_clone_git_clone` – replaces `git clone git clone ...` with `git clone ...`
|
* `git_clone_git_clone` – replaces `git clone git clone ...` with `git clone ...`
|
||||||
* `git_commit_add` – offers `git commit -a ...` after previous commit if it failed because nothing was staged;
|
* `git_commit_add` – offers `git commit -a ...` or `git commit -p ...` after previous commit if it failed because nothing was staged;
|
||||||
* `git_commit_amend` – offers `git commit --amend` after previous commit;
|
* `git_commit_amend` – offers `git commit --amend` after previous commit;
|
||||||
* `git_commit_reset` – offers `git reset HEAD~` after previous commit;
|
* `git_commit_reset` – offers `git reset HEAD~` after previous commit;
|
||||||
* `git_diff_no_index` – adds `--no-index` to previous `git diff` on untracked files;
|
* `git_diff_no_index` – adds `--no-index` to previous `git diff` on untracked files;
|
||||||
|
@ -3,34 +3,36 @@ from thefuck.rules.git_commit_add import match, get_new_command
|
|||||||
from thefuck.types import Command
|
from thefuck.types import Command
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('script, output', [
|
@pytest.mark.parametrize(
|
||||||
('git commit -m "test"', 'no changes added to commit'),
|
"script, output",
|
||||||
('git commit', 'no changes added to commit')])
|
[
|
||||||
|
('git commit -m "test"', "no changes added to commit"),
|
||||||
|
("git commit", "no changes added to commit"),
|
||||||
|
],
|
||||||
|
)
|
||||||
def test_match(output, script):
|
def test_match(output, script):
|
||||||
assert match(Command(script, output))
|
assert match(Command(script, output))
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('script, output', [
|
@pytest.mark.parametrize(
|
||||||
('git commit -m "test"', ' 1 file changed, 15 insertions(+), 14 deletions(-)')])
|
"script, output",
|
||||||
|
[
|
||||||
|
('git commit -m "test"', " 1 file changed, 15 insertions(+), 14 deletions(-)"),
|
||||||
|
("git branch foo", ""),
|
||||||
|
("git checkout feature/test_commit", ""),
|
||||||
|
("git push", ""),
|
||||||
|
],
|
||||||
|
)
|
||||||
def test_not_match(output, script):
|
def test_not_match(output, script):
|
||||||
assert not match(Command(script, output))
|
assert not match(Command(script, output))
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('script', [
|
@pytest.mark.parametrize(
|
||||||
'git branch foo',
|
"script, new_command",
|
||||||
'git checkout feature/test_commit',
|
[
|
||||||
'git push'])
|
("git commit", ["git commit -a", "git commit -p"]),
|
||||||
def test_not_match_either(script):
|
('git commit -m "foo"', ['git commit -a -m "foo"', 'git commit -p -m "foo"']),
|
||||||
assert not match(Command(script, ''))
|
],
|
||||||
|
)
|
||||||
|
def test_get_new_command(script, new_command):
|
||||||
@pytest.mark.parametrize('script', [
|
assert get_new_command(Command(script, "")) == new_command
|
||||||
('git commit')])
|
|
||||||
def test_get_new_command_one(script):
|
|
||||||
assert get_new_command(Command(script, '')) == 'git commit -a'
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('script', [
|
|
||||||
('git commit -m "test commit"')])
|
|
||||||
def test_get_new_command_two(script):
|
|
||||||
assert get_new_command(Command(script, '')) == 'git commit -a -m "test commit"'
|
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
from thefuck.utils import replace_argument
|
from thefuck.utils import eager, replace_argument
|
||||||
from thefuck.specific.git import git_support
|
from thefuck.specific.git import git_support
|
||||||
|
|
||||||
priority = 900 # Lower first, default is 1000
|
|
||||||
|
|
||||||
|
|
||||||
@git_support
|
@git_support
|
||||||
def match(command):
|
def match(command):
|
||||||
return ('commit' in command.script_parts
|
return (
|
||||||
and 'no changes added to commit' in command.output)
|
"commit" in command.script_parts
|
||||||
|
and "no changes added to commit" in command.output
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@eager
|
||||||
@git_support
|
@git_support
|
||||||
def get_new_command(command):
|
def get_new_command(command):
|
||||||
return replace_argument(command.script, 'commit', 'commit -a')
|
for opt in ("-a", "-p"):
|
||||||
|
yield replace_argument(command.script, "commit", "commit {}".format(opt))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user