From 76047f6eefd4dd2794a24904b9d154fe85fec412 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Wed, 27 Sep 2017 07:47:24 -0700 Subject: [PATCH] Fix mixed-line-endings --fix=... when whole file is a different ending --- pre_commit_hooks/mixed_line_ending.py | 3 ++- tests/mixed_line_ending_test.py | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) 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 @@ def fix_filename(filename, fix): 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 @@ def test_fix_crlf(tmpdir): 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'