Lines Matching refs:self

43     def writeTmp(self, content, *, mode='w'):  # opening in text mode is the default
45 self.addCleanup(os_helper.unlink, name)
53 def __init__(self):
54 self._linesread = []
57 def linesread(self):
59 return self._linesread[:]
61 self._linesread = []
63 def openhook(self, filename, mode):
64 self.it = iter(filename.splitlines(True))
65 return self
67 def readline(self, size=None):
68 line = next(self.it, '')
69 self._linesread.append(line)
72 def readlines(self, hint=-1):
76 line = self.readline()
84 def close(self):
88 def test_buffer_sizes(self):
90 t1 = self.writeTmp(''.join("Line %s of file 1\n" % (i+1) for i in range(15)))
91 t2 = self.writeTmp(''.join("Line %s of file 2\n" % (i+1) for i in range(10)))
92 t3 = self.writeTmp(''.join("Line %s of file 3\n" % (i+1) for i in range(5)))
93 t4 = self.writeTmp(''.join("Line %s of file 4\n" % (i+1) for i in range(1)))
102 self.assertEqual(len(lines), 31)
103 self.assertEqual(lines[4], 'Line 5 of file 1\n')
104 self.assertEqual(lines[30], 'Line 1 of file 4\n')
105 self.assertEqual(fi.lineno(), 31)
106 self.assertEqual(fi.filename(), t4)
114 self.assertEqual(fi.filename(), t2)
115 self.assertEqual(fi.lineno(), 21)
116 self.assertEqual(fi.filelineno(), 6)
117 self.assertFalse(fi.isfirstline())
118 self.assertFalse(fi.isstdin())
123 self.assertEqual(fi.readline(), 'Line 1 of file 3\n')
124 self.assertEqual(fi.lineno(), 22)
134 self.assertEqual(len(lines), 33)
135 self.assertEqual(lines[32], 'Line 2 of stdin\n')
136 self.assertEqual(fi.filename(), '<stdin>')
144 self.assertEqual(fi.lineno(), 0)
145 self.assertEqual(fi.filename(), None)
147 self.assertEqual(fi.lineno(), 0)
148 self.assertEqual(fi.filename(), None)
164 self.assertEqual(line[-1], '\n')
166 self.assertNotEqual(m, None)
167 self.assertEqual(int(m.group(1)), fi.filelineno())
171 def __init__(self, exception_type):
172 self.exception_type = exception_type
173 self.invoked = False
174 def __call__(self, *args, **kwargs):
175 self.invoked = True
176 raise self.exception_type()
180 def test_zero_byte_files(self):
181 t1 = self.writeTmp("")
182 t2 = self.writeTmp("")
183 t3 = self.writeTmp("The only line there is.\n")
184 t4 = self.writeTmp("")
188 self.assertEqual(line, 'The only line there is.\n')
189 self.assertEqual(fi.lineno(), 1)
190 self.assertEqual(fi.filelineno(), 1)
191 self.assertEqual(fi.filename(), t3)
194 self.assertFalse(line)
195 self.assertEqual(fi.lineno(), 1)
196 self.assertEqual(fi.filelineno(), 0)
197 self.assertEqual(fi.filename(), t4)
200 def test_files_that_dont_end_with_newline(self):
201 t1 = self.writeTmp("A\nB\nC")
202 t2 = self.writeTmp("D\nE\nF")
205 self.assertEqual(lines, ["A\n", "B\n", "C", "D\n", "E\n", "F"])
206 self.assertEqual(fi.filelineno(), 3)
207 self.assertEqual(fi.lineno(), 6)
209 ## def test_unicode_filenames(self):
212 ## t1 = self.writeTmp("A\nB")
218 ## self.assertEqual(lines, ["A\n", "B"])
220 def test_fileno(self):
221 t1 = self.writeTmp("A\nB")
222 t2 = self.writeTmp("C\nD")
224 self.assertEqual(fi.fileno(), -1)
226 self.assertNotEqual(fi.fileno(), -1)
228 self.assertEqual(fi.fileno(), -1)
230 self.assertEqual(fi.fileno(), -1)
232 def test_invalid_opening_mode(self):
234 with self.subTest(mode=mode):
235 with self.assertRaises(ValueError):
238 def test_stdin_binary_mode(self):
243 self.assertEqual(lines, [b'spam, bacon, sausage, and spam'])
245 def test_detached_stdin_binary_mode(self):
249 self.assertFalse(hasattr(sys.stdin, 'buffer'))
252 self.assertEqual(lines, [b'spam, bacon, sausage, and spam'])
256 def test_file_opening_hook(self):
260 self.fail("FileInput should raise if both inplace "
266 self.fail("FileInput should check openhook for being callable")
271 def __init__(self):
272 self.invoked = False
273 def __call__(self, *args, **kargs):
274 self.invoked = True
277 t = self.writeTmp("\n")
281 self.assertTrue(custom_open_hook.invoked, "openhook not invoked")
283 def test_readline(self):
290 self.addCleanup(safe_unlink, TESTFN)
295 self.assertEqual(fi.readline(), 'A\n')
296 self.assertEqual(fi.readline(), 'B\n')
297 self.assertEqual(fi.readline(), 'C\n')
299 self.fail('Read to end of file')
300 with self.assertRaises(UnicodeDecodeError):
303 self.assertEqual(fi.readline(), '')
304 self.assertEqual(fi.readline(), '')
306 def test_readline_binary_mode(self):
309 self.addCleanup(safe_unlink, TESTFN)
312 self.assertEqual(fi.readline(), b'A\n')
313 self.assertEqual(fi.readline(), b'B\r\n')
314 self.assertEqual(fi.readline(), b'C\rD')
316 self.assertEqual(fi.readline(), b'')
317 self.assertEqual(fi.readline(), b'')
319 def test_inplace_binary_write_mode(self):
320 temp_file = self.writeTmp(b'Initial text.', mode='wb')
323 self.assertEqual(line, b'Initial text.')
327 self.assertEqual(f.read(), b'New line.')
329 def test_inplace_encoding_errors(self):
330 temp_file = self.writeTmp(b'Initial text \x88', mode='wb')
334 self.assertEqual(line, 'Initial text \ufffd')
337 self.assertEqual(f.read().rstrip(b'\r\n'), b'New line ?')
339 def test_file_hook_backward_compatibility(self):
342 t = self.writeTmp("\n")
345 self.assertEqual(result, "I used to receive only filename and mode")
347 def test_context_manager(self):
348 t1 = self.writeTmp("A\nB\nC")
349 t2 = self.writeTmp("D\nE\nF")
352 self.assertEqual(lines, ["A\n", "B\n", "C", "D\n", "E\n", "F"])
353 self.assertEqual(fi.filelineno(), 3)
354 self.assertEqual(fi.lineno(), 6)
355 self.assertEqual(fi._files, ())
357 def test_close_on_exception(self):
358 t1 = self.writeTmp("")
363 self.assertEqual(fi._files, ())
365 def test_empty_files_list_specified_to_constructor(self):
367 self.assertEqual(fi._files, ('-',))
369 def test_nextfile_oserror_deleting_backup(self):
377 t = self.writeTmp("\n")
378 self.addCleanup(safe_unlink, t + '.bak')
387 self.assertTrue(os_unlink_replacement.invoked,
390 def test_readline_os_fstat_raises_OSError(self):
397 t = self.writeTmp("\n")
405 self.assertTrue(os_fstat_replacement.invoked,
408 def test_readline_os_chmod_raises_OSError(self):
415 t = self.writeTmp("\n")
423 self.assertTrue(os_chmod_replacement.invoked,
426 def test_fileno_when_ValueError_raised(self):
428 def __init__(self):
429 UnconditionallyRaise.__init__(self, ValueError)
430 def fileno(self):
431 self.__call__()
434 t = self.writeTmp("\n")
444 self.assertTrue(unconditionally_raise_ValueError.invoked,
447 self.assertEqual(result, -1, "fileno() should return -1")
449 def test_readline_buffering(self):
453 self.assertEqual(src.linesread, [])
454 self.assertEqual(fi.readline(), 'line1\n')
455 self.assertEqual(src.linesread, ['line1\n'])
456 self.assertEqual(fi.readline(), 'line2')
457 self.assertEqual(src.linesread, ['line2'])
458 self.assertEqual(fi.readline(), 'line3\n')
459 self.assertEqual(src.linesread, ['', 'line3\n'])
460 self.assertEqual(fi.readline(), '')
461 self.assertEqual(src.linesread, [''])
462 self.assertEqual(fi.readline(), '')
463 self.assertEqual(src.linesread, [])
465 def test_iteration_buffering(self):
469 self.assertEqual(src.linesread, [])
470 self.assertEqual(next(fi), 'line1\n')
471 self.assertEqual(src.linesread, ['line1\n'])
472 self.assertEqual(next(fi), 'line2')
473 self.assertEqual(src.linesread, ['line2'])
474 self.assertEqual(next(fi), 'line3\n')
475 self.assertEqual(src.linesread, ['', 'line3\n'])
476 self.assertRaises(StopIteration, next, fi)
477 self.assertEqual(src.linesread, [''])
478 self.assertRaises(StopIteration, next, fi)
479 self.assertEqual(src.linesread, [])
481 def test_pathlib_file(self):
482 t1 = Path(self.writeTmp("Pathlib file."))
485 self.assertEqual(line, 'Pathlib file.')
486 self.assertEqual(fi.lineno(), 1)
487 self.assertEqual(fi.filelineno(), 1)
488 self.assertEqual(fi.filename(), os.fspath(t1))
490 def test_pathlib_file_inplace(self):
491 t1 = Path(self.writeTmp('Pathlib file.'))
494 self.assertEqual(line, 'Pathlib file.')
497 self.assertEqual(f.read(), 'Modified Pathlib file.\n')
503 def __init__(self, files=None, inplace=False, backup="", *,
505 self.files = files
506 self.inplace = inplace
507 self.backup = backup
508 self.mode = mode
509 self.openhook = openhook
510 self.encoding = encoding
511 self.errors = errors
512 self._file = None
513 self.invocation_counts = collections.defaultdict(lambda: 0)
514 self.return_values = {}
516 def close(self):
517 self.invocation_counts["close"] += 1
519 def nextfile(self):
520 self.invocation_counts["nextfile"] += 1
521 return self.return_values["nextfile"]
523 def filename(self):
524 self.invocation_counts["filename"] += 1
525 return self.return_values["filename"]
527 def lineno(self):
528 self.invocation_counts["lineno"] += 1
529 return self.return_values["lineno"]
531 def filelineno(self):
532 self.invocation_counts["filelineno"] += 1
533 return self.return_values["filelineno"]
535 def fileno(self):
536 self.invocation_counts["fileno"] += 1
537 return self.return_values["fileno"]
539 def isfirstline(self):
540 self.invocation_counts["isfirstline"] += 1
541 return self.return_values["isfirstline"]
543 def isstdin(self):
544 self.invocation_counts["isstdin"] += 1
545 return self.return_values["isstdin"]
551 def setUp(self):
552 self._orig_state = fileinput._state
553 self._orig_FileInput = fileinput.FileInput
556 def tearDown(self):
557 fileinput.FileInput = self._orig_FileInput
558 fileinput._state = self._orig_state
560 def assertExactlyOneInvocation(self, mock_file_input, method_name):
563 self.assertEqual(actual_count, 1, method_name)
566 self.assertEqual(actual_total_count, 1)
571 def test_state_is_not_None_and_state_file_is_not_None(self):
579 with self.assertRaises(RuntimeError) as cm:
581 self.assertEqual(("input() already active",), cm.exception.args)
582 self.assertIs(instance, fileinput._state, "fileinput._state")
584 def test_state_is_not_None_and_state_file_is_None(self):
593 self.do_test_call_input()
595 def test_state_is_None(self):
602 self.do_test_call_input()
604 def do_test_call_input(self):
621 self.assertIs(result, fileinput._state, "fileinput._state")
625 self.assertIs(files, result.files, "files")
626 self.assertIs(inplace, result.inplace, "inplace")
627 self.assertIs(backup, result.backup, "backup")
628 self.assertIs(mode, result.mode, "mode")
629 self.assertIs(openhook, result.openhook, "openhook")
634 def test_state_is_None(self):
639 self.assertIsNone(fileinput._state)
641 def test_state_is_not_None(self):
647 self.assertExactlyOneInvocation(instance, "close")
648 self.assertIsNone(fileinput._state)
653 def test_state_is_None(self):
658 with self.assertRaises(RuntimeError) as cm:
660 self.assertEqual(("no active input()",), cm.exception.args)
661 self.assertIsNone(fileinput._state)
663 def test_state_is_not_None(self):
673 self.assertExactlyOneInvocation(instance, "nextfile")
674 self.assertIs(retval, nextfile_retval)
675 self.assertIs(fileinput._state, instance)
680 def test_state_is_None(self):
685 with self.assertRaises(RuntimeError) as cm:
687 self.assertEqual(("no active input()",), cm.exception.args)
688 self.assertIsNone(fileinput._state)
690 def test_state_is_not_None(self):
700 self.assertExactlyOneInvocation(instance, "filename")
701 self.assertIs(retval, filename_retval)
702 self.assertIs(fileinput._state, instance)
707 def test_state_is_None(self):
712 with self.assertRaises(RuntimeError) as cm:
714 self.assertEqual(("no active input()",), cm.exception.args)
715 self.assertIsNone(fileinput._state)
717 def test_state_is_not_None(self):
727 self.assertExactlyOneInvocation(instance, "lineno")
728 self.assertIs(retval, lineno_retval)
729 self.assertIs(fileinput._state, instance)
734 def test_state_is_None(self):
739 with self.assertRaises(RuntimeError) as cm:
741 self.assertEqual(("no active input()",), cm.exception.args)
742 self.assertIsNone(fileinput._state)
744 def test_state_is_not_None(self):
754 self.assertExactlyOneInvocation(instance, "filelineno")
755 self.assertIs(retval, filelineno_retval)
756 self.assertIs(fileinput._state, instance)
761 def test_state_is_None(self):
766 with self.assertRaises(RuntimeError) as cm:
768 self.assertEqual(("no active input()",), cm.exception.args)
769 self.assertIsNone(fileinput._state)
771 def test_state_is_not_None(self):
782 self.assertExactlyOneInvocation(instance, "fileno")
783 self.assertIs(retval, fileno_retval)
784 self.assertIs(fileinput._state, instance)
789 def test_state_is_None(self):
794 with self.assertRaises(RuntimeError) as cm:
796 self.assertEqual(("no active input()",), cm.exception.args)
797 self.assertIsNone(fileinput._state)
799 def test_state_is_not_None(self):
809 self.assertExactlyOneInvocation(instance, "isfirstline")
810 self.assertIs(retval, isfirstline_retval)
811 self.assertIs(fileinput._state, instance)
816 def test_state_is_None(self):
821 with self.assertRaises(RuntimeError) as cm:
823 self.assertEqual(("no active input()",), cm.exception.args)
824 self.assertIsNone(fileinput._state)
826 def test_state_is_not_None(self):
836 self.assertExactlyOneInvocation(instance, "isstdin")
837 self.assertIs(retval, isstdin_retval)
838 self.assertIs(fileinput._state, instance)
842 def __init__(self):
843 self.invocation_count = 0
845 def __call__(self, *args, **kwargs):
846 self.invocation_count += 1
847 self.last_invocation = (args, kwargs)
854 def setUp(self):
855 self.fake_open = InvocationRecorder()
857 def test_empty_string(self):
858 self.do_test_use_builtin_open_text("", "r")
860 def test_no_ext(self):
861 self.do_test_use_builtin_open_text("abcd", "r")
864 def test_gz_ext_fake(self):
866 gzip.open = self.fake_open
872 self.assertEqual(self.fake_open.invocation_count, 1)
873 self.assertEqual(self.fake_open.last_invocation, (("test.gz", "r"), {}))
876 def test_gz_with_encoding_fake(self):
883 self.assertEqual(list(result), ['Ex-binary string'])
886 def test_bz2_ext_fake(self):
888 bz2.BZ2File = self.fake_open
894 self.assertEqual(self.fake_open.invocation_count, 1)
895 self.assertEqual(self.fake_open.last_invocation, (("test.bz2", "r"), {}))
897 def test_blah_ext(self):
898 self.do_test_use_builtin_open_binary("abcd.blah", "rb")
900 def test_gz_ext_builtin(self):
901 self.do_test_use_builtin_open_binary("abcd.Gz", "rb")
903 def test_bz2_ext_builtin(self):
904 self.do_test_use_builtin_open_binary("abcd.Bz2", "rb")
906 def test_binary_mode_encoding(self):
907 self.do_test_use_builtin_open_binary("abcd", "rb")
909 def test_text_mode_encoding(self):
910 self.do_test_use_builtin_open_text("abcd", "r")
912 def do_test_use_builtin_open_binary(self, filename, mode):
913 original_open = self.replace_builtin_open(self.fake_open)
917 self.replace_builtin_open(original_open)
919 self.assertEqual(self.fake_open.invocation_count, 1)
920 self.assertEqual(self.fake_open.last_invocation,
923 def do_test_use_builtin_open_text(self, filename, mode):
924 original_open = self.replace_builtin_open(self.fake_open)
928 self.replace_builtin_open(original_open)
930 self.assertEqual(self.fake_open.invocation_count, 1)
931 self.assertEqual(self.fake_open.last_invocation,
943 def test(self):
958 self.assertEqual(fake_open.invocation_count, 1)
961 self.assertIs(args[0], filename)
962 self.assertIs(args[1], mode)
963 self.assertIs(kwargs.pop('encoding'), encoding)
964 self.assertIs(kwargs.pop('errors'), errors)
965 self.assertFalse(kwargs)
967 def test_errors(self):
970 self.addCleanup(safe_unlink, TESTFN)
976 self.assertEqual(lines, expected_lines)
979 with self.assertRaises(UnicodeDecodeError):
984 def test_modes(self):
988 self.addCleanup(safe_unlink, TESTFN)
994 self.assertEqual(lines, expected_lines)
997 with self.assertRaises(ValueError):
1003 def test_all(self):
1004 support.check__all__(self, fileinput)