mirror of
https://github.com/pre-commit/pre-commit-hooks.git
synced 2026-04-08 04:34:16 +00:00
Fix check-merge-conflict against binary files
This commit is contained in:
parent
adbb569fe9
commit
4a01f64c8f
3 changed files with 16 additions and 6 deletions
|
|
@ -5,10 +5,10 @@ import os.path
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
CONFLICT_PATTERNS = [
|
CONFLICT_PATTERNS = [
|
||||||
'<<<<<<< ',
|
b'<<<<<<< ',
|
||||||
'======= ',
|
b'======= ',
|
||||||
'=======\n',
|
b'=======\n',
|
||||||
'>>>>>>> '
|
b'>>>>>>> '
|
||||||
]
|
]
|
||||||
WARNING_MSG = 'Merge conflict string "{0}" found in {1}:{2}'
|
WARNING_MSG = 'Merge conflict string "{0}" found in {1}:{2}'
|
||||||
|
|
||||||
|
|
@ -30,11 +30,13 @@ def detect_merge_conflict(argv=None):
|
||||||
|
|
||||||
retcode = 0
|
retcode = 0
|
||||||
for filename in args.filenames:
|
for filename in args.filenames:
|
||||||
with open(filename) as inputfile:
|
with open(filename, 'rb') as inputfile:
|
||||||
for i, line in enumerate(inputfile):
|
for i, line in enumerate(inputfile):
|
||||||
for pattern in CONFLICT_PATTERNS:
|
for pattern in CONFLICT_PATTERNS:
|
||||||
if line.startswith(pattern):
|
if line.startswith(pattern):
|
||||||
print(WARNING_MSG.format(pattern, filename, i + 1))
|
print(WARNING_MSG.format(
|
||||||
|
pattern.decode(), filename, i + 1,
|
||||||
|
))
|
||||||
retcode = 1
|
retcode = 1
|
||||||
|
|
||||||
return retcode
|
return retcode
|
||||||
|
|
|
||||||
BIN
testing/resources/img1.jpg
Normal file
BIN
testing/resources/img1.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 843 B |
|
|
@ -3,12 +3,14 @@ from __future__ import unicode_literals
|
||||||
|
|
||||||
import io
|
import io
|
||||||
import os
|
import os
|
||||||
|
import shutil
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from pre_commit_hooks.check_merge_conflict import detect_merge_conflict
|
from pre_commit_hooks.check_merge_conflict import detect_merge_conflict
|
||||||
from pre_commit_hooks.util import cmd_output
|
from pre_commit_hooks.util import cmd_output
|
||||||
from testing.util import cwd
|
from testing.util import cwd
|
||||||
|
from testing.util import get_resource_path
|
||||||
from testing.util import write_file
|
from testing.util import write_file
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -109,6 +111,12 @@ def test_merge_conflicts_ok(ok_contents):
|
||||||
assert detect_merge_conflict(['f1']) == 0
|
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')
|
@pytest.mark.usefixtures('in_tmpdir')
|
||||||
def test_does_not_care_when_not_in_a_merge():
|
def test_does_not_care_when_not_in_a_merge():
|
||||||
with io.open('README.md', 'w') as readme_file:
|
with io.open('README.md', 'w') as readme_file:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue