From c205683a8df8a57e2db1e9816a5a7ce3255b08fc Mon Sep 17 00:00:00 2001 From: David Hart Date: Sat, 6 Jan 2018 22:44:03 +0000 Subject: [PATCH] git_push: Handle branch names containing 'set-upstream' (#759) This should fix https://github.com/nvbn/thefuck/issues/723 (IndexError when using bitbucket) --- tests/rules/test_git_push.py | 17 +++++++++++++++++ thefuck/rules/git_push.py | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/tests/rules/test_git_push.py b/tests/rules/test_git_push.py index cf45f4e..b6aa7c6 100644 --- a/tests/rules/test_git_push.py +++ b/tests/rules/test_git_push.py @@ -15,6 +15,19 @@ To push the current branch and set the remote as upstream, use '''.format(branch_name, branch_name) +@pytest.fixture +def output_bitbucket(): + return '''Total 0 (delta 0), reused 0 (delta 0) +remote: +remote: Create pull request for feature/set-upstream: +remote: https://bitbucket.org/set-upstream +remote: +To git@bitbucket.org:test.git + e5e7fbb..700d998 feature/set-upstream -> feature/set-upstream +Branch feature/set-upstream set up to track remote branch feature/set-upstream from origin. +''' + + @pytest.mark.parametrize('script, branch_name', [ ('git push', 'master'), ('git push origin', 'master')]) @@ -22,6 +35,10 @@ def test_match(output, script, branch_name): assert match(Command(script, output)) +def test_match_bitbucket(output_bitbucket): + assert not match(Command('git push origin', output_bitbucket)) + + @pytest.mark.parametrize('script, branch_name', [ ('git push master', None), ('ls', 'master')]) diff --git a/thefuck/rules/git_push.py b/thefuck/rules/git_push.py index 551b25d..cccee67 100644 --- a/thefuck/rules/git_push.py +++ b/thefuck/rules/git_push.py @@ -6,7 +6,7 @@ from thefuck.specific.git import git_support @git_support def match(command): return ('push' in command.script_parts - and 'set-upstream' in command.output) + and 'git push --set-upstream' in command.output) def _get_upstream_option_index(command_parts):