diff --git a/pre_commit_hooks/requirements_txt_fixer.py b/pre_commit_hooks/requirements_txt_fixer.py index 58843940..e088c0d6 100644 --- a/pre_commit_hooks/requirements_txt_fixer.py +++ b/pre_commit_hooks/requirements_txt_fixer.py @@ -116,7 +116,8 @@ def fix_requirements(f: IO[bytes]) -> int: for requirement in sorted(requirements): after.extend(requirement.comments) assert requirement.value, requirement.value - after.append(requirement.value) + if requirement.value not in after: + 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 b725afa2..21c2fd8c 100644 --- a/tests/requirements_txt_fixer_test.py +++ b/tests/requirements_txt_fixer_test.py @@ -99,6 +99,8 @@ PASS, b'a=2.0.0 \\\n --hash=sha256:abcd\nb==1.0.0\n', ), + (b'\nfoo\nfoo\n', FAIL, b'\nfoo\n'), + (b'\nbar\nfoo\nbar\n', FAIL, b'\nbar\nfoo\n'), ), ) def test_integration(input_s, expected_retval, output, tmpdir):