As patched: diff -r 0926adcc335c Lib/test/test_fileinput.py --- a/Lib/test/test_fileinput.py Mon Feb 24 15:36:45 2014 -0500 +++ b/Lib/test/test_fileinput.py Wed Feb 26 09:25:10 2014 -0600 @@ -218,8 +218,27 @@ finally: remove_tempfiles(t1) +class Test_hook_encoded(unittest.TestCase): + """Unit tests for fileinput.hook_encoded()""" + + def test_modes(self): + # Unlikely UTF-7 is locale encoding + t1 = writeTmp(1, ["A\nB\r\nC\rD+IKw-"], mode="wb") + self.addCleanup(safe_unlink, t1) + + def check(mode, expected_lines): + fi = FileInput(files=t1, mode=mode, openhook=hook_encoded('utf-7')) + lines = list(fi) + fi.close() + self.assertEqual(lines, expected_lines) + + check('r', [u'A\n', u'B\r\n', u'C\rD\u20ac']) + check('rU', [u'A\n', u'B\n', u'C\n', u'D\u20ac']) + check('U', [u'A\n', u'B\n', u'C\n', u'D\u20ac']) + check('rb', [u'A\n', u'B\r\n', u'C\rD\u20ac']) + def test_main(): - run_unittest(BufferSizesTests, FileInputTests) + run_unittest(BufferSizesTests, FileInputTests, Test_hook_encoded) if __name__ == "__main__": test_main() F ====================================================================== FAIL: test_modes (test.test_fileinput.Test_hook_encoded) ---------------------------------------------------------------------- Traceback (most recent call last): File "P:\ath\to\2.7\cpython\lib\test\test_fileinput.py", line 235, in test_modes check('r', [u'A\n', u'B\r\n', u'C\rD\u20ac']) File "P:\ath\to\2.7\cpython\lib\test\test_fileinput.py", line 233, in check self.assertEqual(lines, expected_lines) AssertionError: Lists differ: [u'A\n', u'B\r\n', u'C\r', u'D... != [u'A\n', u'B\r\n', u'C\rD\u20a... First differing element 2: C C D\u20ac First list contains 1 additional elements. First extra element 3: D\u20ac - [u'A\n', u'B\r\n', u'C\r', u'D\u20ac'] ? ----- + [u'A\n', u'B\r\n', u'C\rD\u20ac'] ---------------------------------------------------------------------- Ran 1 test in 0.010s FAILED (failures=1) [41980 refs] First test commented out: diff -r 0926adcc335c Lib/test/test_fileinput.py --- a/Lib/test/test_fileinput.py Mon Feb 24 15:36:45 2014 -0500 +++ b/Lib/test/test_fileinput.py Wed Feb 26 09:25:27 2014 -0600 @@ -218,8 +218,27 @@ finally: remove_tempfiles(t1) +class Test_hook_encoded(unittest.TestCase): + """Unit tests for fileinput.hook_encoded()""" + + def test_modes(self): + # Unlikely UTF-7 is locale encoding + t1 = writeTmp(1, ["A\nB\r\nC\rD+IKw-"], mode="wb") + self.addCleanup(safe_unlink, t1) + + def check(mode, expected_lines): + fi = FileInput(files=t1, mode=mode, openhook=hook_encoded('utf-7')) + lines = list(fi) + fi.close() + self.assertEqual(lines, expected_lines) + + #check('r', [u'A\n', u'B\r\n', u'C\rD\u20ac']) + check('rU', [u'A\n', u'B\n', u'C\n', u'D\u20ac']) + check('U', [u'A\n', u'B\n', u'C\n', u'D\u20ac']) + check('rb', [u'A\n', u'B\r\n', u'C\rD\u20ac']) + def test_main(): - run_unittest(BufferSizesTests, FileInputTests) + run_unittest(BufferSizesTests, FileInputTests, Test_hook_encoded) if __name__ == "__main__": test_main() F ====================================================================== FAIL: test_modes (test.test_fileinput.Test_hook_encoded) ---------------------------------------------------------------------- Traceback (most recent call last): File "P:\ath\to\2.7\cpython\lib\test\test_fileinput.py", line 236, in test_modes check('rU', [u'A\n', u'B\n', u'C\n', u'D\u20ac']) File "P:\ath\to\2.7\cpython\lib\test\test_fileinput.py", line 233, in check self.assertEqual(lines, expected_lines) AssertionError: Lists differ: [u'A\n', u'B\r\n', u'C\r', u'D... != [u'A\n', u'B\n', u'C\n', u'D\u... First differing element 1: B B - [u'A\n', u'B\r\n', u'C\r', u'D\u20ac'] ? ^ -------- + [u'A\n', u'B\n', u'C\n', u'D\u20ac'] ? ^^^^^^^ ---------------------------------------------------------------------- Ran 1 test in 0.010s FAILED (failures=1) [41815 refs] First two tests commented out: diff -r 0926adcc335c Lib/test/test_fileinput.py --- a/Lib/test/test_fileinput.py Mon Feb 24 15:36:45 2014 -0500 +++ b/Lib/test/test_fileinput.py Wed Feb 26 09:25:47 2014 -0600 @@ -218,8 +218,27 @@ finally: remove_tempfiles(t1) +class Test_hook_encoded(unittest.TestCase): + """Unit tests for fileinput.hook_encoded()""" + + def test_modes(self): + # Unlikely UTF-7 is locale encoding + t1 = writeTmp(1, ["A\nB\r\nC\rD+IKw-"], mode="wb") + self.addCleanup(safe_unlink, t1) + + def check(mode, expected_lines): + fi = FileInput(files=t1, mode=mode, openhook=hook_encoded('utf-7')) + lines = list(fi) + fi.close() + self.assertEqual(lines, expected_lines) + + #check('r', [u'A\n', u'B\r\n', u'C\rD\u20ac']) + #check('rU', [u'A\n', u'B\n', u'C\n', u'D\u20ac']) + check('U', [u'A\n', u'B\n', u'C\n', u'D\u20ac']) + check('rb', [u'A\n', u'B\r\n', u'C\rD\u20ac']) + def test_main(): - run_unittest(BufferSizesTests, FileInputTests) + run_unittest(BufferSizesTests, FileInputTests, Test_hook_encoded) if __name__ == "__main__": test_main() F ====================================================================== FAIL: test_modes (test.test_fileinput.Test_hook_encoded) ---------------------------------------------------------------------- Traceback (most recent call last): File "P:\ath\to\2.7\cpython\lib\test\test_fileinput.py", line 237, in test_modes check('U', [u'A\n', u'B\n', u'C\n', u'D\u20ac']) File "P:\ath\to\2.7\cpython\lib\test\test_fileinput.py", line 233, in check self.assertEqual(lines, expected_lines) AssertionError: Lists differ: [u'A\n', u'B\r\n', u'C\r', u'D... != [u'A\n', u'B\n', u'C\n', u'D\u... First differing element 1: B B - [u'A\n', u'B\r\n', u'C\r', u'D\u20ac'] ? ^ -------- + [u'A\n', u'B\n', u'C\n', u'D\u20ac'] ? ^^^^^^^ ---------------------------------------------------------------------- Ran 1 test in 0.009s FAILED (failures=1) [41814 refs] First three tests commented out: diff -r 0926adcc335c Lib/test/test_fileinput.py --- a/Lib/test/test_fileinput.py Mon Feb 24 15:36:45 2014 -0500 +++ b/Lib/test/test_fileinput.py Wed Feb 26 09:25:58 2014 -0600 @@ -218,8 +218,27 @@ finally: remove_tempfiles(t1) +class Test_hook_encoded(unittest.TestCase): + """Unit tests for fileinput.hook_encoded()""" + + def test_modes(self): + # Unlikely UTF-7 is locale encoding + t1 = writeTmp(1, ["A\nB\r\nC\rD+IKw-"], mode="wb") + self.addCleanup(safe_unlink, t1) + + def check(mode, expected_lines): + fi = FileInput(files=t1, mode=mode, openhook=hook_encoded('utf-7')) + lines = list(fi) + fi.close() + self.assertEqual(lines, expected_lines) + + #check('r', [u'A\n', u'B\r\n', u'C\rD\u20ac']) + #check('rU', [u'A\n', u'B\n', u'C\n', u'D\u20ac']) + #check('U', [u'A\n', u'B\n', u'C\n', u'D\u20ac']) + check('rb', [u'A\n', u'B\r\n', u'C\rD\u20ac']) + def test_main(): - run_unittest(BufferSizesTests, FileInputTests) + run_unittest(BufferSizesTests, FileInputTests, Test_hook_encoded) if __name__ == "__main__": test_main() F ====================================================================== FAIL: test_modes (test.test_fileinput.Test_hook_encoded) ---------------------------------------------------------------------- Traceback (most recent call last): File "P:\ath\to\2.7\cpython\lib\test\test_fileinput.py", line 238, in test_modes check('rb', [u'A\n', u'B\r\n', u'C\rD\u20ac']) File "P:\ath\to\2.7\cpython\lib\test\test_fileinput.py", line 233, in check self.assertEqual(lines, expected_lines) AssertionError: Lists differ: [u'A\n', u'B\r\n', u'C\r', u'D... != [u'A\n', u'B\r\n', u'C\rD\u20a... First differing element 2: C C D\u20ac First list contains 1 additional elements. First extra element 3: D\u20ac - [u'A\n', u'B\r\n', u'C\r', u'D\u20ac'] ? ----- + [u'A\n', u'B\r\n', u'C\rD\u20ac'] ---------------------------------------------------------------------- Ran 1 test in 0.010s FAILED (failures=1) [41974 refs]