add new line post reading requirements file, change before from tuple to list, add test cases
diff --git a/pre_commit_hooks/requirements_txt_fixer.py b/pre_commit_hooks/requirements_txt_fixer.py index 4575975..55744c6 100644 --- a/pre_commit_hooks/requirements_txt_fixer.py +++ b/pre_commit_hooks/requirements_txt_fixer.py
@@ -40,9 +40,14 @@ def fix_requirements(f): # type: (IO[bytes]) -> int requirements = [] # type: List[Requirement] - before = tuple(f) + before = list(f) # type: List[bytes] after = [] # type: List[bytes] + # adds new line in case one is missing + # AND a change to the requirements file is needed regardless: + if before and not before[-1].endswith(b'\n'): + before[-1] += b'\n' + before_string = b''.join(before) # If the file is empty (i.e. only whitespace/newlines) exit early @@ -94,7 +99,7 @@ after_string = b''.join(after) - if before_string == after_string: + if before_string.rstrip() == after_string.rstrip(): return PASS else: f.seek(0)
diff --git a/tests/requirements_txt_fixer_test.py b/tests/requirements_txt_fixer_test.py index c7c6e47..7c74ffc 100644 --- a/tests/requirements_txt_fixer_test.py +++ b/tests/requirements_txt_fixer_test.py
@@ -15,6 +15,9 @@ (b'foo\n# comment at end\n', PASS, b'foo\n# comment at end\n'), (b'foo\nbar\n', FAIL, b'bar\nfoo\n'), (b'bar\nfoo\n', PASS, b'bar\nfoo\n'), + (b'a\nc\nb\n', FAIL, b'a\nb\nc\n'), + (b'a\nc\nb', FAIL, b'a\nb\nc\n'), + (b'a\nb\nc', PASS, b'a\nb\nc'), ( b'#comment1\nfoo\n#comment2\nbar\n', FAIL,