diff --git a/pre_commit_hooks/requirements_txt_fixer.py b/pre_commit_hooks/requirements_txt_fixer.py index ffabf2a..1ee6fac 100644 --- a/pre_commit_hooks/requirements_txt_fixer.py +++ b/pre_commit_hooks/requirements_txt_fixer.py @@ -63,9 +63,16 @@ def fix_requirements(f): else: requirement.value = line + # if a file ends in a comment, preserve it at the end + if requirements[-1].value is None: + rest = requirements.pop().comments + else: + rest = [] + for requirement in sorted(requirements): after.extend(requirement.comments) after.append(requirement.value) + after.extend(rest) after_string = b''.join(after) diff --git a/tests/requirements_txt_fixer_test.py b/tests/requirements_txt_fixer_test.py index dcf7a76..87e7b0c 100644 --- a/tests/requirements_txt_fixer_test.py +++ b/tests/requirements_txt_fixer_test.py @@ -11,6 +11,8 @@ from pre_commit_hooks.requirements_txt_fixer import Requirement ( (b'', PASS, b''), (b'\n', PASS, b'\n'), + (b'# intentionally empty\n', PASS, b'# intentionally empty\n'), + (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'#comment1\nfoo\n#comment2\nbar\n', FAIL, b'#comment2\nbar\n#comment1\nfoo\n'),