Index: Lib/test/test_file_jy.py IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- Lib/test/test_file_jy.py (revision 8156:623eaa3d7834cf8ac04cf420ecb9f40a1f37707b) +++ Lib/test/test_file_jy.py (revision 8156+:623eaa3d7834+) @@ -7,6 +7,7 @@ from test import test_support from java.lang import System + class FileTestCase(unittest.TestCase): def tearDown(self): @@ -47,8 +48,8 @@ def test_issue2081(self): with open(test_support.TESTFN, 'wb'): pass - os.chmod(test_support.TESTFN, 200) # write-only - with open(test_support.TESTFN, 'w'): # should succeed, raised IOError (permission denied) prior to fix + os.chmod(test_support.TESTFN, 200) # write-only + with open(test_support.TESTFN, 'w'): # should succeed, raised IOError (permission denied) prior to fix pass # http://bugs.jython.org/issue2358 @@ -64,6 +65,37 @@ with open('/proc/{}/cmdline'.format(os.getpid())) as f: self.assertIn('jython', f.read()) + def test_issue2363(self): + # http://bugs/jython.org/issue2363 + # relative seek using read() and readline() + with open(test_support.TESTFN, 'wb') as f: + f.write(b'To seek or not to seek,\nThat is the question.\n') + f.close() + with open(test_support.TESTFN, 'rb') as f: + f.read() + self.assertEqual(f.tell(), 46) + f.seek(-10, 1) + self.assertEqual(f.tell(), 36) + f.seek(5, 1) + self.assertEqual(f.tell(), 41) + f.seek(20) # seek from a point + self.assertEqual(f.tell(), 20) + f.read() + self.assertEqual(f.tell(), 46) + # readline() + f.seek(0) + f.readline() + self.assertEqual(f.tell(), 24) + f.seek(-10, 1) + # fails... + # Seek does not start at last + # tell() pos which is 24 + # It starts at last byte (46) + self.assertEqual(f.tell(), 14) + f.seek(5, 1) + self.assertEqual(f.tell(), 19) + f.close() + def test_main(): test_support.run_unittest(FileTestCase)