mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-02-17 08:14:42 +04:00
Fix non-ascii merge commit messages in python2
This commit is contained in:
parent
e3b14c35f7
commit
964948b33d
3 changed files with 18 additions and 5 deletions
|
|
@ -48,10 +48,10 @@ def is_in_merge_conflict():
|
||||||
def parse_merge_msg_for_conflicts(merge_msg):
|
def parse_merge_msg_for_conflicts(merge_msg):
|
||||||
# Conflicted files start with tabs
|
# Conflicted files start with tabs
|
||||||
return [
|
return [
|
||||||
line.lstrip('#').strip()
|
line.lstrip(b'#').strip().decode('UTF-8')
|
||||||
for line in merge_msg.splitlines()
|
for line in merge_msg.splitlines()
|
||||||
# '#\t' for git 2.4.1
|
# '#\t' for git 2.4.1
|
||||||
if line.startswith(('\t', '#\t'))
|
if line.startswith((b'\t', b'#\t'))
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -60,7 +60,7 @@ def get_conflicted_files():
|
||||||
logger.info('Checking merge-conflict files only.')
|
logger.info('Checking merge-conflict files only.')
|
||||||
# Need to get the conflicted files from the MERGE_MSG because they could
|
# Need to get the conflicted files from the MERGE_MSG because they could
|
||||||
# have resolved the conflict by choosing one side or the other
|
# have resolved the conflict by choosing one side or the other
|
||||||
merge_msg = open(os.path.join(get_git_dir('.'), 'MERGE_MSG')).read()
|
merge_msg = open(os.path.join(get_git_dir('.'), 'MERGE_MSG'), 'rb').read()
|
||||||
merge_conflict_filenames = parse_merge_msg_for_conflicts(merge_msg)
|
merge_conflict_filenames = parse_merge_msg_for_conflicts(merge_msg)
|
||||||
|
|
||||||
# This will get the rest of the changes made after the merge.
|
# This will get the rest of the changes made after the merge.
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# -*- coding: UTF-8 -*-
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
|
@ -190,6 +191,18 @@ def test_commit_am(tempdir_factory):
|
||||||
assert ret == 0
|
assert ret == 0
|
||||||
|
|
||||||
|
|
||||||
|
def test_unicode_merge_commit_message(tempdir_factory):
|
||||||
|
path = make_consuming_repo(tempdir_factory, 'script_hooks_repo')
|
||||||
|
with cwd(path):
|
||||||
|
assert install(Runner(path, C.CONFIG_FILE)) == 0
|
||||||
|
cmd_output('git', 'checkout', 'master', '-b', 'foo')
|
||||||
|
cmd_output('git', 'commit', '--allow-empty', '-m', 'branch2')
|
||||||
|
cmd_output('git', 'checkout', 'master')
|
||||||
|
cmd_output('git', 'merge', 'foo', '--no-ff', '--no-commit', '-m', '☃')
|
||||||
|
# Used to crash
|
||||||
|
cmd_output('git', 'commit', '--no-edit')
|
||||||
|
|
||||||
|
|
||||||
def test_install_idempotent(tempdir_factory):
|
def test_install_idempotent(tempdir_factory):
|
||||||
path = make_consuming_repo(tempdir_factory, 'script_hooks_repo')
|
path = make_consuming_repo(tempdir_factory, 'script_hooks_repo')
|
||||||
with cwd(path):
|
with cwd(path):
|
||||||
|
|
|
||||||
|
|
@ -142,8 +142,8 @@ def test_get_conflicted_files_unstaged_files(in_merge_conflict):
|
||||||
assert ret == {'conflict_file'}
|
assert ret == {'conflict_file'}
|
||||||
|
|
||||||
|
|
||||||
MERGE_MSG = "Merge branch 'foo' into bar\n\nConflicts:\n\tconflict_file\n"
|
MERGE_MSG = b"Merge branch 'foo' into bar\n\nConflicts:\n\tconflict_file\n"
|
||||||
OTHER_MERGE_MSG = MERGE_MSG + '\tother_conflict_file\n'
|
OTHER_MERGE_MSG = MERGE_MSG + b'\tother_conflict_file\n'
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue