From c4e4c2dccb23a128e0a135e44790d92e7071b3dd Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Fri, 13 Jun 2014 06:50:17 -0700 Subject: [PATCH] Fix merge conflict detection for cherry-pick conflict. --- pre_commit/git.py | 5 ++++- tests/git_test.py | 11 +++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/pre_commit/git.py b/pre_commit/git.py index 08db8440..bfaabd98 100644 --- a/pre_commit/git.py +++ b/pre_commit/git.py @@ -23,7 +23,10 @@ def get_root(): def is_in_merge_conflict(): - return os.path.exists(os.path.join('.git', 'MERGE_MSG')) + return ( + os.path.exists(os.path.join('.git', 'MERGE_MSG')) and + os.path.exists(os.path.join('.git', 'MERGE_HEAD')) + ) def parse_merge_msg_for_conflicts(merge_msg): diff --git a/tests/git_test.py b/tests/git_test.py index 63cb1c61..c9d368fc 100644 --- a/tests/git_test.py +++ b/tests/git_test.py @@ -14,14 +14,21 @@ def test_get_root(empty_git_dir): assert git.get_root() == empty_git_dir -def test_is_in_merge_conflict(empty_git_dir): +def test_is_not_in_merge_conflict(empty_git_dir): assert git.is_in_merge_conflict() is False -def test_is_not_in_merge_conflict(in_merge_conflict): +def test_is_in_merge_conflict(in_merge_conflict): assert git.is_in_merge_conflict() is True +def test_cherry_pick_conflict(in_merge_conflict): + local['git']('merge', '--abort') + foo_ref = local['git']('rev-parse', 'foo').strip() + local['git']('cherry-pick', foo_ref, retcode=None) + assert git.is_in_merge_conflict() is False + + @pytest.fixture def get_files_matching_func(): def get_filenames():