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'