Skip to content

Commit

Permalink
Fix check-merge-conflict against binary files
Browse files Browse the repository at this point in the history
  • Loading branch information
asottile committed May 26, 2016
1 parent adbb569 commit 4a01f64
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 6 deletions.
14 changes: 8 additions & 6 deletions pre_commit_hooks/check_merge_conflict.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
import sys

CONFLICT_PATTERNS = [
'<<<<<<< ',
'======= ',
'=======\n',
'>>>>>>> '
b'<<<<<<< ',
b'======= ',
b'=======\n',
b'>>>>>>> '
]
WARNING_MSG = 'Merge conflict string "{0}" found in {1}:{2}'

Expand All @@ -30,11 +30,13 @@ def detect_merge_conflict(argv=None):

retcode = 0
for filename in args.filenames:
with open(filename) as inputfile:
with open(filename, 'rb') as inputfile:
for i, line in enumerate(inputfile):
for pattern in CONFLICT_PATTERNS:
if line.startswith(pattern):
print(WARNING_MSG.format(pattern, filename, i + 1))
print(WARNING_MSG.format(
pattern.decode(), filename, i + 1,
))
retcode = 1

return retcode
Expand Down
Binary file added testing/resources/img1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions tests/check_merge_conflict_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@

import io
import os
import shutil

import pytest

from pre_commit_hooks.check_merge_conflict import detect_merge_conflict
from pre_commit_hooks.util import cmd_output
from testing.util import cwd
from testing.util import get_resource_path
from testing.util import write_file


Expand Down Expand Up @@ -109,6 +111,12 @@ def test_merge_conflicts_ok(ok_contents):
assert detect_merge_conflict(['f1']) == 0


@pytest.mark.usefixtures('f1_is_a_conflict_file')
def test_ignores_binary_files():
shutil.copy(get_resource_path('img1.jpg'), 'f1')
assert detect_merge_conflict(['f1']) == 0


@pytest.mark.usefixtures('in_tmpdir')
def test_does_not_care_when_not_in_a_merge():
with io.open('README.md', 'w') as readme_file:
Expand Down

0 comments on commit 4a01f64

Please sign in to comment.