Merge pull request #574 from pre-commit/error_whitespace_errors

Fix patch applying when apply.whitespace=error
This commit is contained in:
Anthony Sottile 2017-07-31 23:50:13 -04:00 committed by GitHub
commit 972106c2d7
2 changed files with 14 additions and 3 deletions

View file

@ -45,7 +45,10 @@ def staged_files_only(cmd_runner):
finally: finally:
# Try to apply the patch we saved # Try to apply the patch we saved
try: try:
cmd_runner.run(('git', 'apply', patch_filename), encoding=None) cmd_runner.run(
('git', 'apply', '--whitespace=nowarn', patch_filename),
encoding=None,
)
except CalledProcessError: except CalledProcessError:
logger.warning( logger.warning(
'Stashed changes conflicted with hook auto-fixes... ' 'Stashed changes conflicted with hook auto-fixes... '
@ -55,7 +58,10 @@ def staged_files_only(cmd_runner):
# by hooks. # by hooks.
# Roll back the changes made by hooks. # Roll back the changes made by hooks.
cmd_runner.run(['git', 'checkout', '--', '.']) cmd_runner.run(['git', 'checkout', '--', '.'])
cmd_runner.run(('git', 'apply', patch_filename), encoding=None) cmd_runner.run(
('git', 'apply', patch_filename, '--whitespace=nowarn'),
encoding=None,
)
logger.info('Restored changes from {}.'.format(patch_filename)) logger.info('Restored changes from {}.'.format(patch_filename))
else: else:
# There weren't any staged files so we don't need to do anything # There weren't any staged files so we don't need to do anything

View file

@ -340,7 +340,7 @@ bool_product = tuple(itertools.product((True, False), repeat=2))
def test_crlf(in_git_dir, cmd_runner, crlf_before, crlf_after, autocrlf): def test_crlf(in_git_dir, cmd_runner, crlf_before, crlf_after, autocrlf):
cmd_output('git', 'config', '--local', 'core.autocrlf', autocrlf) cmd_output('git', 'config', '--local', 'core.autocrlf', autocrlf)
before, after = b'1\n2\n', b'3\n4\n' before, after = b'1\n2\n', b'3\n4\n\n'
before = before.replace(b'\n', b'\r\n') if crlf_before else before before = before.replace(b'\n', b'\r\n') if crlf_before else before
after = after.replace(b'\n', b'\r\n') if crlf_after else after after = after.replace(b'\n', b'\r\n') if crlf_after else after
@ -349,3 +349,8 @@ def test_crlf(in_git_dir, cmd_runner, crlf_before, crlf_after, autocrlf):
_write(after) _write(after)
with staged_files_only(cmd_runner): with staged_files_only(cmd_runner):
assert_no_diff() assert_no_diff()
def test_whitespace_errors(in_git_dir, cmd_runner):
cmd_output('git', 'config', '--local', 'apply.whitespace', 'error')
test_crlf(in_git_dir, cmd_runner, True, True, 'true')