Issue #1706039: Support continued reading from a file even after
EOF was hit.
diff --git a/Lib/test/test_file.py b/Lib/test/test_file.py
index ba6ea47..8308710 100644
--- a/Lib/test/test_file.py
+++ b/Lib/test/test_file.py
@@ -355,6 +355,48 @@
         finally:
             sys.stdout = save_stdout
 
+    def testReadAfterEOF(self):
+        # Regression test for SF bug #1523853.
+        # Verify read works after hitting EOF
+
+        # Prepare the testfile
+        teststring = "spam"
+        bag = open(TESTFN, "w")
+        bag.write(teststring)
+        bag.close()
+
+        # And buf for readinto
+        buf = array("c", " "*len(teststring))
+
+        # Test for appropriate errors mixing read* and iteration
+        methods = [("readline", ()), ("read",()), ("readlines", ()),
+                   ("readinto", (buf,))]
+
+        for attr in 'r', 'rU':
+            for methodname, args in methods:
+                f = open(TESTFN, "rU")
+                f.seek(0, 2)
+                meth = getattr(f, methodname)
+                meth(*args) # hits EOF
+                try:
+                    # Writing the same file with another file descriptor
+                    append = open(TESTFN, "a+")
+                    append.write(teststring)
+                    append.flush()
+                    append.close()
+                    try:
+                        meth = getattr(f, methodname)
+                        if methodname == 'readlines':
+                            self.failUnlessEqual(meth(*args), [teststring])
+                        elif methodname == 'readinto':
+                            meth(*args)
+                            self.failUnlessEqual(buf.tostring(), teststring)
+                        else:
+                            self.failUnlessEqual(meth(*args), teststring)
+                    except ValueError:
+                        self.fail("read* failed after hitting EOF")
+                finally:
+                    f.close()
 
 def test_main():
     # Historically, these tests have been sloppy about removing TESTFN.