Fix mixed-line-endings --fix=... when whole file is a different ending
diff --git a/pre_commit_hooks/mixed_line_ending.py b/pre_commit_hooks/mixed_line_ending.py index 301c654..a163726 100644 --- a/pre_commit_hooks/mixed_line_ending.py +++ b/pre_commit_hooks/mixed_line_ending.py
@@ -55,7 +55,8 @@ else: target_ending = FIX_TO_LINE_ENDING[fix] # find if there are lines with *other* endings - del counts[target_ending] + # It's possible there's no line endings of the target type + counts.pop(target_ending, None) other_endings = bool(sum(counts.values())) if other_endings: _fix(filename, contents, target_ending)
diff --git a/tests/mixed_line_ending_test.py b/tests/mixed_line_ending_test.py index 808295b..23837cd 100644 --- a/tests/mixed_line_ending_test.py +++ b/tests/mixed_line_ending_test.py
@@ -101,3 +101,13 @@ assert ret == 1 assert path.read_binary() == b'foo\r\nbar\r\nbaz\r\n' + + +def test_fix_lf_all_crlf(tmpdir): + """Regression test for #239""" + path = tmpdir.join('input.txt') + path.write_binary(b'foo\r\nbar\r\n') + ret = main(('--fix=lf', path.strpath)) + + assert ret == 1 + assert path.read_binary() == b'foo\nbar\n'