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,