From da2ea3f7a7d6e6f88d43889fa2833aeddc902dfb Mon Sep 17 00:00:00 2001 From: "Barak Y. Reif" Date: Sat, 28 Sep 2019 21:40:09 +0300 Subject: [PATCH 1/3] add new line post reading requirements file, change before from tuple to list, add test cases --- pre_commit_hooks/requirements_txt_fixer.py | 9 +++++++-- tests/requirements_txt_fixer_test.py | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) 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 @@ class Requirement(object): 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 @@ def fix_requirements(f): # type: (IO[bytes]) -> int 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 @@ from pre_commit_hooks.requirements_txt_fixer import Requirement (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, From d4b544daf399f2d356fbc8b0dccfe170ac18575b Mon Sep 17 00:00:00 2001 From: "Barak Y. Reif" Date: Sat, 28 Sep 2019 21:59:41 +0300 Subject: [PATCH 2/3] alter file with new line even if no other content is changed --- pre_commit_hooks/requirements_txt_fixer.py | 6 +++--- tests/requirements_txt_fixer_test.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pre_commit_hooks/requirements_txt_fixer.py b/pre_commit_hooks/requirements_txt_fixer.py index 55744c6..1691d80 100644 --- a/pre_commit_hooks/requirements_txt_fixer.py +++ b/pre_commit_hooks/requirements_txt_fixer.py @@ -43,13 +43,13 @@ def fix_requirements(f): # type: (IO[bytes]) -> int before = list(f) # type: List[bytes] after = [] # type: List[bytes] + before_string = b''.join(before) + # 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 if before_string.strip() == b'': return PASS @@ -99,7 +99,7 @@ def fix_requirements(f): # type: (IO[bytes]) -> int after_string = b''.join(after) - if before_string.rstrip() == after_string.rstrip(): + if before_string == after_string: return PASS else: f.seek(0) diff --git a/tests/requirements_txt_fixer_test.py b/tests/requirements_txt_fixer_test.py index 7c74ffc..2e2eab6 100644 --- a/tests/requirements_txt_fixer_test.py +++ b/tests/requirements_txt_fixer_test.py @@ -17,7 +17,7 @@ from pre_commit_hooks.requirements_txt_fixer import Requirement (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'a\nb\nc', FAIL, b'a\nb\nc\n'), ( b'#comment1\nfoo\n#comment2\nbar\n', FAIL, From e4cfaa6b68dea4c4a66e30bda5f79b65755f7caf Mon Sep 17 00:00:00 2001 From: "Barak Y. Reif" Date: Sat, 28 Sep 2019 22:16:20 +0300 Subject: [PATCH 3/3] remove redundent type annotation --- pre_commit_hooks/requirements_txt_fixer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pre_commit_hooks/requirements_txt_fixer.py b/pre_commit_hooks/requirements_txt_fixer.py index 1691d80..eff7935 100644 --- a/pre_commit_hooks/requirements_txt_fixer.py +++ b/pre_commit_hooks/requirements_txt_fixer.py @@ -40,7 +40,7 @@ class Requirement(object): def fix_requirements(f): # type: (IO[bytes]) -> int requirements = [] # type: List[Requirement] - before = list(f) # type: List[bytes] + before = list(f) after = [] # type: List[bytes] before_string = b''.join(before)