mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-01-17 14:30:05 -06:00
Merge pull request #537 from pre-commit/unicode_commit_messages_python2
Fix non-ascii merge commit messages in python2
This commit is contained in:
@@ -48,10 +48,10 @@ def is_in_merge_conflict():
|
||||
def parse_merge_msg_for_conflicts(merge_msg):
|
||||
# Conflicted files start with tabs
|
||||
return [
|
||||
line.lstrip('#').strip()
|
||||
line.lstrip(b'#').strip().decode('UTF-8')
|
||||
for line in merge_msg.splitlines()
|
||||
# '#\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.')
|
||||
# Need to get the conflicted files from the MERGE_MSG because they could
|
||||
# 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)
|
||||
|
||||
# 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 unicode_literals
|
||||
|
||||
@@ -190,6 +191,18 @@ def test_commit_am(tempdir_factory):
|
||||
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):
|
||||
path = make_consuming_repo(tempdir_factory, 'script_hooks_repo')
|
||||
with cwd(path):
|
||||
|
||||
@@ -142,8 +142,8 @@ def test_get_conflicted_files_unstaged_files(in_merge_conflict):
|
||||
assert ret == {'conflict_file'}
|
||||
|
||||
|
||||
MERGE_MSG = "Merge branch 'foo' into bar\n\nConflicts:\n\tconflict_file\n"
|
||||
OTHER_MERGE_MSG = MERGE_MSG + '\tother_conflict_file\n'
|
||||
MERGE_MSG = b"Merge branch 'foo' into bar\n\nConflicts:\n\tconflict_file\n"
|
||||
OTHER_MERGE_MSG = MERGE_MSG + b'\tother_conflict_file\n'
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
||||
Reference in New Issue
Block a user