Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_fileinput.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | 694e2708b4a8 |
| children |
| rev | line source |
|---|---|
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
1 ''' |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
2 Tests for fileinput module. |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
3 Nick Mathewson |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
4 ''' |
|
68496
937b1fbb402f
import style nits
Benjamin Peterson <benjamin@python.org>
parents:
68495
diff
changeset
|
5 import os |
|
937b1fbb402f
import style nits
Benjamin Peterson <benjamin@python.org>
parents:
68495
diff
changeset
|
6 import sys |
|
937b1fbb402f
import style nits
Benjamin Peterson <benjamin@python.org>
parents:
68495
diff
changeset
|
7 import re |
|
937b1fbb402f
import style nits
Benjamin Peterson <benjamin@python.org>
parents:
68495
diff
changeset
|
8 import fileinput |
|
937b1fbb402f
import style nits
Benjamin Peterson <benjamin@python.org>
parents:
68495
diff
changeset
|
9 import collections |
|
73434
c2b3e8b437a4
fileinput: replace this last occurence of codecs.open with builtins.open.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
70096
diff
changeset
|
10 import builtins |
|
68496
937b1fbb402f
import style nits
Benjamin Peterson <benjamin@python.org>
parents:
68495
diff
changeset
|
11 import unittest |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
12 |
|
68669
bb645cc39e60
Fix #11596. When bz2 isn't available, skip test_bz2_ext_fake.
briancurtin <brian.curtin@gmail.com>
parents:
68530
diff
changeset
|
13 try: |
|
bb645cc39e60
Fix #11596. When bz2 isn't available, skip test_bz2_ext_fake.
briancurtin <brian.curtin@gmail.com>
parents:
68530
diff
changeset
|
14 import bz2 |
|
bb645cc39e60
Fix #11596. When bz2 isn't available, skip test_bz2_ext_fake.
briancurtin <brian.curtin@gmail.com>
parents:
68530
diff
changeset
|
15 except ImportError: |
|
bb645cc39e60
Fix #11596. When bz2 isn't available, skip test_bz2_ext_fake.
briancurtin <brian.curtin@gmail.com>
parents:
68530
diff
changeset
|
16 bz2 = None |
|
70096
e0b4ed75b8e7
Skip test in test_fileinput when zlib is missing.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
68669
diff
changeset
|
17 try: |
|
e0b4ed75b8e7
Skip test in test_fileinput when zlib is missing.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
68669
diff
changeset
|
18 import gzip |
|
e0b4ed75b8e7
Skip test in test_fileinput when zlib is missing.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
68669
diff
changeset
|
19 except ImportError: |
|
e0b4ed75b8e7
Skip test in test_fileinput when zlib is missing.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
68669
diff
changeset
|
20 gzip = None |
|
68669
bb645cc39e60
Fix #11596. When bz2 isn't available, skip test_bz2_ext_fake.
briancurtin <brian.curtin@gmail.com>
parents:
68530
diff
changeset
|
21 |
|
68496
937b1fbb402f
import style nits
Benjamin Peterson <benjamin@python.org>
parents:
68495
diff
changeset
|
22 from io import StringIO |
|
937b1fbb402f
import style nits
Benjamin Peterson <benjamin@python.org>
parents:
68495
diff
changeset
|
23 from fileinput import FileInput, hook_encoded |
|
937b1fbb402f
import style nits
Benjamin Peterson <benjamin@python.org>
parents:
68495
diff
changeset
|
24 |
|
87520
694e2708b4a8
Issue #15204: Silence and check the 'U' mode deprecation warnings in tests.
Serhiy Storchaka <storchaka@gmail.com>
parents:
84108
diff
changeset
|
25 from test.support import verbose, TESTFN, run_unittest, check_warnings |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46047
diff
changeset
|
26 from test.support import unlink as safe_unlink |
|
68496
937b1fbb402f
import style nits
Benjamin Peterson <benjamin@python.org>
parents:
68495
diff
changeset
|
27 |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
28 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
29 # The fileinput module has 2 interfaces: the FileInput class which does |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
30 # all the work, and a few functions (input, etc.) that use a global _state |
|
68495
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
31 # variable. |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
32 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
33 # Write lines (a list of lines) to temp file number i, and return the |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
34 # temp file's name. |
|
36607
1a98798a4b1d
Repair new test failures on Windows due to
Tim Peters <tim.peters@gmail.com>
parents:
36596
diff
changeset
|
35 def writeTmp(i, lines, mode='w'): # opening in text mode is the default |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
36 name = TESTFN + str(i) |
|
36607
1a98798a4b1d
Repair new test failures on Windows due to
Tim Peters <tim.peters@gmail.com>
parents:
36596
diff
changeset
|
37 f = open(name, mode) |
|
42111
32fe2b9e9f11
Fix a buch of shallow test failures.
Guido van Rossum <guido@python.org>
parents:
41575
diff
changeset
|
38 for line in lines: |
|
32fe2b9e9f11
Fix a buch of shallow test failures.
Guido van Rossum <guido@python.org>
parents:
41575
diff
changeset
|
39 f.write(line) |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
40 f.close() |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
41 return name |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
42 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
43 def remove_tempfiles(*names): |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
44 for name in names: |
|
42918
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
45 if name: |
|
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
46 safe_unlink(name) |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
47 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
48 class BufferSizesTests(unittest.TestCase): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
49 def test_buffer_sizes(self): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
50 # First, run the tests with default and teeny buffer size. |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
51 for round, bs in (0, 0), (1, 30): |
|
46047
df90774f92b0
Ensure cleanup does not reference variables that don't yet exist.
Neal Norwitz <nnorwitz@gmail.com>
parents:
45471
diff
changeset
|
52 t1 = t2 = t3 = t4 = None |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
53 try: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
54 t1 = writeTmp(1, ["Line %s of file 1\n" % (i+1) for i in range(15)]) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
55 t2 = writeTmp(2, ["Line %s of file 2\n" % (i+1) for i in range(10)]) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
56 t3 = writeTmp(3, ["Line %s of file 3\n" % (i+1) for i in range(5)]) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
57 t4 = writeTmp(4, ["Line %s of file 4\n" % (i+1) for i in range(1)]) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
58 self.buffer_size_test(t1, t2, t3, t4, bs, round) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
59 finally: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
60 remove_tempfiles(t1, t2, t3, t4) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
61 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
62 def buffer_size_test(self, t1, t2, t3, t4, bs=0, round=0): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
63 pat = re.compile(r'LINE (\d+) OF FILE (\d+)') |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
64 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
65 start = 1 + round*6 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
66 if verbose: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
67 print('%s. Simple iteration (bs=%s)' % (start+0, bs)) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
68 fi = FileInput(files=(t1, t2, t3, t4), bufsize=bs) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
69 lines = list(fi) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
70 fi.close() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
71 self.assertEqual(len(lines), 31) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
72 self.assertEqual(lines[4], 'Line 5 of file 1\n') |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
73 self.assertEqual(lines[30], 'Line 1 of file 4\n') |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
74 self.assertEqual(fi.lineno(), 31) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
75 self.assertEqual(fi.filename(), t4) |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
76 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
77 if verbose: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
78 print('%s. Status variables (bs=%s)' % (start+1, bs)) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
79 fi = FileInput(files=(t1, t2, t3, t4), bufsize=bs) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
80 s = "x" |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
81 while s and s != 'Line 6 of file 2\n': |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
82 s = fi.readline() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
83 self.assertEqual(fi.filename(), t2) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
84 self.assertEqual(fi.lineno(), 21) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
85 self.assertEqual(fi.filelineno(), 6) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
86 self.assertFalse(fi.isfirstline()) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
87 self.assertFalse(fi.isstdin()) |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
88 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
89 if verbose: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
90 print('%s. Nextfile (bs=%s)' % (start+2, bs)) |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
91 fi.nextfile() |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
92 self.assertEqual(fi.readline(), 'Line 1 of file 3\n') |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
93 self.assertEqual(fi.lineno(), 22) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
94 fi.close() |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
95 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
96 if verbose: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
97 print('%s. Stdin (bs=%s)' % (start+3, bs)) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
98 fi = FileInput(files=(t1, t2, t3, t4, '-'), bufsize=bs) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
99 savestdin = sys.stdin |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
100 try: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
101 sys.stdin = StringIO("Line 1 of stdin\nLine 2 of stdin\n") |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
102 lines = list(fi) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
103 self.assertEqual(len(lines), 33) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
104 self.assertEqual(lines[32], 'Line 2 of stdin\n') |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
105 self.assertEqual(fi.filename(), '<stdin>') |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
106 fi.nextfile() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
107 finally: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
108 sys.stdin = savestdin |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
109 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
110 if verbose: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
111 print('%s. Boundary conditions (bs=%s)' % (start+4, bs)) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
112 fi = FileInput(files=(t1, t2, t3, t4), bufsize=bs) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
113 self.assertEqual(fi.lineno(), 0) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
114 self.assertEqual(fi.filename(), None) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
115 fi.nextfile() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
116 self.assertEqual(fi.lineno(), 0) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
117 self.assertEqual(fi.filename(), None) |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
118 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
119 if verbose: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
120 print('%s. Inplace (bs=%s)' % (start+5, bs)) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
121 savestdout = sys.stdout |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
122 try: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
123 fi = FileInput(files=(t1, t2, t3, t4), inplace=1, bufsize=bs) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
124 for line in fi: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
125 line = line[:-1].upper() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
126 print(line) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
127 fi.close() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
128 finally: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
129 sys.stdout = savestdout |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
130 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
131 fi = FileInput(files=(t1, t2, t3, t4), bufsize=bs) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
132 for line in fi: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
133 self.assertEqual(line[-1], '\n') |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
134 m = pat.match(line[:-1]) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
135 self.assertNotEqual(m, None) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
136 self.assertEqual(int(m.group(1)), fi.filelineno()) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
137 fi.close() |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
138 |
|
68495
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
139 class UnconditionallyRaise: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
140 def __init__(self, exception_type): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
141 self.exception_type = exception_type |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
142 self.invoked = False |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
143 def __call__(self, *args, **kwargs): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
144 self.invoked = True |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
145 raise self.exception_type() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
146 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
147 class FileInputTests(unittest.TestCase): |
|
68495
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
148 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
149 def test_zero_byte_files(self): |
|
46047
df90774f92b0
Ensure cleanup does not reference variables that don't yet exist.
Neal Norwitz <nnorwitz@gmail.com>
parents:
45471
diff
changeset
|
150 t1 = t2 = t3 = t4 = None |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
151 try: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
152 t1 = writeTmp(1, [""]) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
153 t2 = writeTmp(2, [""]) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
154 t3 = writeTmp(3, ["The only line there is.\n"]) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
155 t4 = writeTmp(4, [""]) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
156 fi = FileInput(files=(t1, t2, t3, t4)) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
157 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
158 line = fi.readline() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
159 self.assertEqual(line, 'The only line there is.\n') |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
160 self.assertEqual(fi.lineno(), 1) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
161 self.assertEqual(fi.filelineno(), 1) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
162 self.assertEqual(fi.filename(), t3) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
163 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
164 line = fi.readline() |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
165 self.assertFalse(line) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
166 self.assertEqual(fi.lineno(), 1) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
167 self.assertEqual(fi.filelineno(), 0) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
168 self.assertEqual(fi.filename(), t4) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
169 fi.close() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
170 finally: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
171 remove_tempfiles(t1, t2, t3, t4) |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
172 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
173 def test_files_that_dont_end_with_newline(self): |
|
46047
df90774f92b0
Ensure cleanup does not reference variables that don't yet exist.
Neal Norwitz <nnorwitz@gmail.com>
parents:
45471
diff
changeset
|
174 t1 = t2 = None |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
175 try: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
176 t1 = writeTmp(1, ["A\nB\nC"]) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
177 t2 = writeTmp(2, ["D\nE\nF"]) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
178 fi = FileInput(files=(t1, t2)) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
179 lines = list(fi) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
180 self.assertEqual(lines, ["A\n", "B\n", "C", "D\n", "E\n", "F"]) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
181 self.assertEqual(fi.filelineno(), 3) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
182 self.assertEqual(fi.lineno(), 6) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
183 finally: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
184 remove_tempfiles(t1, t2) |
|
36590
0d5f8077bd24
Patch #1337756: fileinput now accepts Unicode filenames.
Georg Brandl <georg@python.org>
parents:
24364
diff
changeset
|
185 |
|
42111
32fe2b9e9f11
Fix a buch of shallow test failures.
Guido van Rossum <guido@python.org>
parents:
41575
diff
changeset
|
186 ## def test_unicode_filenames(self): |
|
32fe2b9e9f11
Fix a buch of shallow test failures.
Guido van Rossum <guido@python.org>
parents:
41575
diff
changeset
|
187 ## # XXX A unicode string is always returned by writeTmp. |
|
32fe2b9e9f11
Fix a buch of shallow test failures.
Guido van Rossum <guido@python.org>
parents:
41575
diff
changeset
|
188 ## # So is this needed? |
|
32fe2b9e9f11
Fix a buch of shallow test failures.
Guido van Rossum <guido@python.org>
parents:
41575
diff
changeset
|
189 ## try: |
|
32fe2b9e9f11
Fix a buch of shallow test failures.
Guido van Rossum <guido@python.org>
parents:
41575
diff
changeset
|
190 ## t1 = writeTmp(1, ["A\nB"]) |
|
32fe2b9e9f11
Fix a buch of shallow test failures.
Guido van Rossum <guido@python.org>
parents:
41575
diff
changeset
|
191 ## encoding = sys.getfilesystemencoding() |
|
32fe2b9e9f11
Fix a buch of shallow test failures.
Guido van Rossum <guido@python.org>
parents:
41575
diff
changeset
|
192 ## if encoding is None: |
|
32fe2b9e9f11
Fix a buch of shallow test failures.
Guido van Rossum <guido@python.org>
parents:
41575
diff
changeset
|
193 ## encoding = 'ascii' |
|
32fe2b9e9f11
Fix a buch of shallow test failures.
Guido van Rossum <guido@python.org>
parents:
41575
diff
changeset
|
194 ## fi = FileInput(files=str(t1, encoding)) |
|
32fe2b9e9f11
Fix a buch of shallow test failures.
Guido van Rossum <guido@python.org>
parents:
41575
diff
changeset
|
195 ## lines = list(fi) |
|
32fe2b9e9f11
Fix a buch of shallow test failures.
Guido van Rossum <guido@python.org>
parents:
41575
diff
changeset
|
196 ## self.assertEqual(lines, ["A\n", "B"]) |
|
32fe2b9e9f11
Fix a buch of shallow test failures.
Guido van Rossum <guido@python.org>
parents:
41575
diff
changeset
|
197 ## finally: |
|
32fe2b9e9f11
Fix a buch of shallow test failures.
Guido van Rossum <guido@python.org>
parents:
41575
diff
changeset
|
198 ## remove_tempfiles(t1) |
|
36594
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
199 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
200 def test_fileno(self): |
|
46047
df90774f92b0
Ensure cleanup does not reference variables that don't yet exist.
Neal Norwitz <nnorwitz@gmail.com>
parents:
45471
diff
changeset
|
201 t1 = t2 = None |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
202 try: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
203 t1 = writeTmp(1, ["A\nB"]) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
204 t2 = writeTmp(2, ["C\nD"]) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
205 fi = FileInput(files=(t1, t2)) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
206 self.assertEqual(fi.fileno(), -1) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
207 line =next( fi) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
208 self.assertNotEqual(fi.fileno(), -1) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
209 fi.nextfile() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
210 self.assertEqual(fi.fileno(), -1) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
211 line = list(fi) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
212 self.assertEqual(fi.fileno(), -1) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
213 finally: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
214 remove_tempfiles(t1, t2) |
|
36595
c6fba456227b
Patch #1212287: fileinput.input() now has a mode parameter for
Georg Brandl <georg@python.org>
parents:
36594
diff
changeset
|
215 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
216 def test_opening_mode(self): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
217 try: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
218 # invalid mode, should raise ValueError |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
219 fi = FileInput(mode="w") |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
220 self.fail("FileInput should reject invalid mode argument") |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
221 except ValueError: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
222 pass |
|
42918
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
223 t1 = None |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
224 try: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
225 # try opening in universal newline mode |
|
42918
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
226 t1 = writeTmp(1, [b"A\nB\r\nC\rD"], mode="wb") |
|
87520
694e2708b4a8
Issue #15204: Silence and check the 'U' mode deprecation warnings in tests.
Serhiy Storchaka <storchaka@gmail.com>
parents:
84108
diff
changeset
|
227 with check_warnings(('', DeprecationWarning)): |
|
694e2708b4a8
Issue #15204: Silence and check the 'U' mode deprecation warnings in tests.
Serhiy Storchaka <storchaka@gmail.com>
parents:
84108
diff
changeset
|
228 fi = FileInput(files=t1, mode="U") |
|
694e2708b4a8
Issue #15204: Silence and check the 'U' mode deprecation warnings in tests.
Serhiy Storchaka <storchaka@gmail.com>
parents:
84108
diff
changeset
|
229 with check_warnings(('', DeprecationWarning)): |
|
694e2708b4a8
Issue #15204: Silence and check the 'U' mode deprecation warnings in tests.
Serhiy Storchaka <storchaka@gmail.com>
parents:
84108
diff
changeset
|
230 lines = list(fi) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
231 self.assertEqual(lines, ["A\n", "B\n", "C\n", "D"]) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
232 finally: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
233 remove_tempfiles(t1) |
|
36596
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
234 |
|
42918
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
235 def test_file_opening_hook(self): |
|
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
236 try: |
|
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
237 # cannot use openhook and inplace mode |
|
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
238 fi = FileInput(inplace=1, openhook=lambda f, m: None) |
|
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
239 self.fail("FileInput should raise if both inplace " |
|
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
240 "and openhook arguments are given") |
|
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
241 except ValueError: |
|
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
242 pass |
|
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
243 try: |
|
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
244 fi = FileInput(openhook=1) |
|
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
245 self.fail("FileInput should check openhook for being callable") |
|
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
246 except ValueError: |
|
9220931e4741
More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
247 pass |
|
68495
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
248 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
249 class CustomOpenHook: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
250 def __init__(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
251 self.invoked = False |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
252 def __call__(self, *args): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
253 self.invoked = True |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
254 return open(*args) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
255 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
256 t = writeTmp(1, ["\n"]) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
257 self.addCleanup(remove_tempfiles, t) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
258 custom_open_hook = CustomOpenHook() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
259 with FileInput([t], openhook=custom_open_hook) as fi: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
260 fi.readline() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
261 self.assertTrue(custom_open_hook.invoked, "openhook not invoked") |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
262 |
|
63379
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
263 def test_context_manager(self): |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
264 try: |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
265 t1 = writeTmp(1, ["A\nB\nC"]) |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
266 t2 = writeTmp(2, ["D\nE\nF"]) |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
267 with FileInput(files=(t1, t2)) as fi: |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
268 lines = list(fi) |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
269 self.assertEqual(lines, ["A\n", "B\n", "C", "D\n", "E\n", "F"]) |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
270 self.assertEqual(fi.filelineno(), 3) |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
271 self.assertEqual(fi.lineno(), 6) |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
272 self.assertEqual(fi._files, ()) |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
273 finally: |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
274 remove_tempfiles(t1, t2) |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
275 |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
276 def test_close_on_exception(self): |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
277 try: |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
278 t1 = writeTmp(1, [""]) |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
279 with FileInput(files=t1) as fi: |
|
81039
7d69d04522e3
Replace IOError with OSError (#16715)
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
73434
diff
changeset
|
280 raise OSError |
|
7d69d04522e3
Replace IOError with OSError (#16715)
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
73434
diff
changeset
|
281 except OSError: |
|
63379
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
282 self.assertEqual(fi._files, ()) |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
283 finally: |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
284 remove_tempfiles(t1) |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
285 |
|
68495
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
286 def test_empty_files_list_specified_to_constructor(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
287 with FileInput(files=[]) as fi: |
|
68530
3e783a029869
Move off of assertEquals() and over to assertEqual().
Brett Cannon <brett@python.org>
parents:
68497
diff
changeset
|
288 self.assertEqual(fi._files, ('-',)) |
|
68495
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
289 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
290 def test__getitem__(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
291 """Tests invoking FileInput.__getitem__() with the current |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
292 line number""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
293 t = writeTmp(1, ["line1\n", "line2\n"]) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
294 self.addCleanup(remove_tempfiles, t) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
295 with FileInput(files=[t]) as fi: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
296 retval1 = fi[0] |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
297 self.assertEqual(retval1, "line1\n") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
298 retval2 = fi[1] |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
299 self.assertEqual(retval2, "line2\n") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
300 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
301 def test__getitem__invalid_key(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
302 """Tests invoking FileInput.__getitem__() with an index unequal to |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
303 the line number""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
304 t = writeTmp(1, ["line1\n", "line2\n"]) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
305 self.addCleanup(remove_tempfiles, t) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
306 with FileInput(files=[t]) as fi: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
307 with self.assertRaises(RuntimeError) as cm: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
308 fi[1] |
|
68530
3e783a029869
Move off of assertEquals() and over to assertEqual().
Brett Cannon <brett@python.org>
parents:
68497
diff
changeset
|
309 self.assertEqual(cm.exception.args, ("accessing lines out of order",)) |
|
68495
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
310 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
311 def test__getitem__eof(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
312 """Tests invoking FileInput.__getitem__() with the line number but at |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
313 end-of-input""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
314 t = writeTmp(1, []) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
315 self.addCleanup(remove_tempfiles, t) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
316 with FileInput(files=[t]) as fi: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
317 with self.assertRaises(IndexError) as cm: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
318 fi[0] |
|
68530
3e783a029869
Move off of assertEquals() and over to assertEqual().
Brett Cannon <brett@python.org>
parents:
68497
diff
changeset
|
319 self.assertEqual(cm.exception.args, ("end of input reached",)) |
|
68495
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
320 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
321 def test_nextfile_oserror_deleting_backup(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
322 """Tests invoking FileInput.nextfile() when the attempt to delete |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
323 the backup file would raise OSError. This error is expected to be |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
324 silently ignored""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
325 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
326 os_unlink_orig = os.unlink |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
327 os_unlink_replacement = UnconditionallyRaise(OSError) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
328 try: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
329 t = writeTmp(1, ["\n"]) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
330 self.addCleanup(remove_tempfiles, t) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
331 with FileInput(files=[t], inplace=True) as fi: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
332 next(fi) # make sure the file is opened |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
333 os.unlink = os_unlink_replacement |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
334 fi.nextfile() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
335 finally: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
336 os.unlink = os_unlink_orig |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
337 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
338 # sanity check to make sure that our test scenario was actually hit |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
339 self.assertTrue(os_unlink_replacement.invoked, |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
340 "os.unlink() was not invoked") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
341 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
342 def test_readline_os_fstat_raises_OSError(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
343 """Tests invoking FileInput.readline() when os.fstat() raises OSError. |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
344 This exception should be silently discarded.""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
345 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
346 os_fstat_orig = os.fstat |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
347 os_fstat_replacement = UnconditionallyRaise(OSError) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
348 try: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
349 t = writeTmp(1, ["\n"]) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
350 self.addCleanup(remove_tempfiles, t) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
351 with FileInput(files=[t], inplace=True) as fi: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
352 os.fstat = os_fstat_replacement |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
353 fi.readline() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
354 finally: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
355 os.fstat = os_fstat_orig |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
356 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
357 # sanity check to make sure that our test scenario was actually hit |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
358 self.assertTrue(os_fstat_replacement.invoked, |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
359 "os.fstat() was not invoked") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
360 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
361 @unittest.skipIf(not hasattr(os, "chmod"), "os.chmod does not exist") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
362 def test_readline_os_chmod_raises_OSError(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
363 """Tests invoking FileInput.readline() when os.chmod() raises OSError. |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
364 This exception should be silently discarded.""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
365 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
366 os_chmod_orig = os.chmod |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
367 os_chmod_replacement = UnconditionallyRaise(OSError) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
368 try: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
369 t = writeTmp(1, ["\n"]) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
370 self.addCleanup(remove_tempfiles, t) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
371 with FileInput(files=[t], inplace=True) as fi: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
372 os.chmod = os_chmod_replacement |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
373 fi.readline() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
374 finally: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
375 os.chmod = os_chmod_orig |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
376 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
377 # sanity check to make sure that our test scenario was actually hit |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
378 self.assertTrue(os_chmod_replacement.invoked, |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
379 "os.fstat() was not invoked") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
380 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
381 def test_fileno_when_ValueError_raised(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
382 class FilenoRaisesValueError(UnconditionallyRaise): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
383 def __init__(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
384 UnconditionallyRaise.__init__(self, ValueError) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
385 def fileno(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
386 self.__call__() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
387 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
388 unconditionally_raise_ValueError = FilenoRaisesValueError() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
389 t = writeTmp(1, ["\n"]) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
390 self.addCleanup(remove_tempfiles, t) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
391 with FileInput(files=[t]) as fi: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
392 file_backup = fi._file |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
393 try: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
394 fi._file = unconditionally_raise_ValueError |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
395 result = fi.fileno() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
396 finally: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
397 fi._file = file_backup # make sure the file gets cleaned up |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
398 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
399 # sanity check to make sure that our test scenario was actually hit |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
400 self.assertTrue(unconditionally_raise_ValueError.invoked, |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
401 "_file.fileno() was not invoked") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
402 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
403 self.assertEqual(result, -1, "fileno() should return -1") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
404 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
405 class MockFileInput: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
406 """A class that mocks out fileinput.FileInput for use during unit tests""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
407 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
408 def __init__(self, files=None, inplace=False, backup="", bufsize=0, |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
409 mode="r", openhook=None): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
410 self.files = files |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
411 self.inplace = inplace |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
412 self.backup = backup |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
413 self.bufsize = bufsize |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
414 self.mode = mode |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
415 self.openhook = openhook |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
416 self._file = None |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
417 self.invocation_counts = collections.defaultdict(lambda: 0) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
418 self.return_values = {} |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
419 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
420 def close(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
421 self.invocation_counts["close"] += 1 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
422 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
423 def nextfile(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
424 self.invocation_counts["nextfile"] += 1 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
425 return self.return_values["nextfile"] |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
426 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
427 def filename(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
428 self.invocation_counts["filename"] += 1 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
429 return self.return_values["filename"] |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
430 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
431 def lineno(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
432 self.invocation_counts["lineno"] += 1 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
433 return self.return_values["lineno"] |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
434 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
435 def filelineno(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
436 self.invocation_counts["filelineno"] += 1 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
437 return self.return_values["filelineno"] |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
438 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
439 def fileno(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
440 self.invocation_counts["fileno"] += 1 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
441 return self.return_values["fileno"] |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
442 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
443 def isfirstline(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
444 self.invocation_counts["isfirstline"] += 1 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
445 return self.return_values["isfirstline"] |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
446 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
447 def isstdin(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
448 self.invocation_counts["isstdin"] += 1 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
449 return self.return_values["isstdin"] |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
450 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
451 class BaseFileInputGlobalMethodsTest(unittest.TestCase): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
452 """Base class for unit tests for the global function of |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
453 the fileinput module.""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
454 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
455 def setUp(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
456 self._orig_state = fileinput._state |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
457 self._orig_FileInput = fileinput.FileInput |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
458 fileinput.FileInput = MockFileInput |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
459 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
460 def tearDown(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
461 fileinput.FileInput = self._orig_FileInput |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
462 fileinput._state = self._orig_state |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
463 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
464 def assertExactlyOneInvocation(self, mock_file_input, method_name): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
465 # assert that the method with the given name was invoked once |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
466 actual_count = mock_file_input.invocation_counts[method_name] |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
467 self.assertEqual(actual_count, 1, method_name) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
468 # assert that no other unexpected methods were invoked |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
469 actual_total_count = len(mock_file_input.invocation_counts) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
470 self.assertEqual(actual_total_count, 1) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
471 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
472 class Test_fileinput_input(BaseFileInputGlobalMethodsTest): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
473 """Unit tests for fileinput.input()""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
474 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
475 def test_state_is_not_None_and_state_file_is_not_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
476 """Tests invoking fileinput.input() when fileinput._state is not None |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
477 and its _file attribute is also not None. Expect RuntimeError to |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
478 be raised with a meaningful error message and for fileinput._state |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
479 to *not* be modified.""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
480 instance = MockFileInput() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
481 instance._file = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
482 fileinput._state = instance |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
483 with self.assertRaises(RuntimeError) as cm: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
484 fileinput.input() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
485 self.assertEqual(("input() already active",), cm.exception.args) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
486 self.assertIs(instance, fileinput._state, "fileinput._state") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
487 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
488 def test_state_is_not_None_and_state_file_is_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
489 """Tests invoking fileinput.input() when fileinput._state is not None |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
490 but its _file attribute *is* None. Expect it to create and return |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
491 a new fileinput.FileInput object with all method parameters passed |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
492 explicitly to the __init__() method; also ensure that |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
493 fileinput._state is set to the returned instance.""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
494 instance = MockFileInput() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
495 instance._file = None |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
496 fileinput._state = instance |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
497 self.do_test_call_input() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
498 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
499 def test_state_is_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
500 """Tests invoking fileinput.input() when fileinput._state is None |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
501 Expect it to create and return a new fileinput.FileInput object |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
502 with all method parameters passed explicitly to the __init__() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
503 method; also ensure that fileinput._state is set to the returned |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
504 instance.""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
505 fileinput._state = None |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
506 self.do_test_call_input() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
507 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
508 def do_test_call_input(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
509 """Tests that fileinput.input() creates a new fileinput.FileInput |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
510 object, passing the given parameters unmodified to |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
511 fileinput.FileInput.__init__(). Note that this test depends on the |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
512 monkey patching of fileinput.FileInput done by setUp().""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
513 files = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
514 inplace = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
515 backup = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
516 bufsize = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
517 mode = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
518 openhook = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
519 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
520 # call fileinput.input() with different values for each argument |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
521 result = fileinput.input(files=files, inplace=inplace, backup=backup, |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
522 bufsize=bufsize, |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
523 mode=mode, openhook=openhook) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
524 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
525 # ensure fileinput._state was set to the returned object |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
526 self.assertIs(result, fileinput._state, "fileinput._state") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
527 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
528 # ensure the parameters to fileinput.input() were passed directly |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
529 # to FileInput.__init__() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
530 self.assertIs(files, result.files, "files") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
531 self.assertIs(inplace, result.inplace, "inplace") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
532 self.assertIs(backup, result.backup, "backup") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
533 self.assertIs(bufsize, result.bufsize, "bufsize") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
534 self.assertIs(mode, result.mode, "mode") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
535 self.assertIs(openhook, result.openhook, "openhook") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
536 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
537 class Test_fileinput_close(BaseFileInputGlobalMethodsTest): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
538 """Unit tests for fileinput.close()""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
539 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
540 def test_state_is_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
541 """Tests that fileinput.close() does nothing if fileinput._state |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
542 is None""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
543 fileinput._state = None |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
544 fileinput.close() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
545 self.assertIsNone(fileinput._state) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
546 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
547 def test_state_is_not_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
548 """Tests that fileinput.close() invokes close() on fileinput._state |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
549 and sets _state=None""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
550 instance = MockFileInput() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
551 fileinput._state = instance |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
552 fileinput.close() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
553 self.assertExactlyOneInvocation(instance, "close") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
554 self.assertIsNone(fileinput._state) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
555 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
556 class Test_fileinput_nextfile(BaseFileInputGlobalMethodsTest): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
557 """Unit tests for fileinput.nextfile()""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
558 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
559 def test_state_is_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
560 """Tests fileinput.nextfile() when fileinput._state is None. |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
561 Ensure that it raises RuntimeError with a meaningful error message |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
562 and does not modify fileinput._state""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
563 fileinput._state = None |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
564 with self.assertRaises(RuntimeError) as cm: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
565 fileinput.nextfile() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
566 self.assertEqual(("no active input()",), cm.exception.args) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
567 self.assertIsNone(fileinput._state) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
568 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
569 def test_state_is_not_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
570 """Tests fileinput.nextfile() when fileinput._state is not None. |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
571 Ensure that it invokes fileinput._state.nextfile() exactly once, |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
572 returns whatever it returns, and does not modify fileinput._state |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
573 to point to a different object.""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
574 nextfile_retval = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
575 instance = MockFileInput() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
576 instance.return_values["nextfile"] = nextfile_retval |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
577 fileinput._state = instance |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
578 retval = fileinput.nextfile() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
579 self.assertExactlyOneInvocation(instance, "nextfile") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
580 self.assertIs(retval, nextfile_retval) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
581 self.assertIs(fileinput._state, instance) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
582 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
583 class Test_fileinput_filename(BaseFileInputGlobalMethodsTest): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
584 """Unit tests for fileinput.filename()""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
585 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
586 def test_state_is_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
587 """Tests fileinput.filename() when fileinput._state is None. |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
588 Ensure that it raises RuntimeError with a meaningful error message |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
589 and does not modify fileinput._state""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
590 fileinput._state = None |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
591 with self.assertRaises(RuntimeError) as cm: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
592 fileinput.filename() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
593 self.assertEqual(("no active input()",), cm.exception.args) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
594 self.assertIsNone(fileinput._state) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
595 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
596 def test_state_is_not_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
597 """Tests fileinput.filename() when fileinput._state is not None. |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
598 Ensure that it invokes fileinput._state.filename() exactly once, |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
599 returns whatever it returns, and does not modify fileinput._state |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
600 to point to a different object.""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
601 filename_retval = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
602 instance = MockFileInput() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
603 instance.return_values["filename"] = filename_retval |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
604 fileinput._state = instance |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
605 retval = fileinput.filename() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
606 self.assertExactlyOneInvocation(instance, "filename") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
607 self.assertIs(retval, filename_retval) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
608 self.assertIs(fileinput._state, instance) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
609 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
610 class Test_fileinput_lineno(BaseFileInputGlobalMethodsTest): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
611 """Unit tests for fileinput.lineno()""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
612 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
613 def test_state_is_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
614 """Tests fileinput.lineno() when fileinput._state is None. |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
615 Ensure that it raises RuntimeError with a meaningful error message |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
616 and does not modify fileinput._state""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
617 fileinput._state = None |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
618 with self.assertRaises(RuntimeError) as cm: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
619 fileinput.lineno() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
620 self.assertEqual(("no active input()",), cm.exception.args) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
621 self.assertIsNone(fileinput._state) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
622 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
623 def test_state_is_not_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
624 """Tests fileinput.lineno() when fileinput._state is not None. |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
625 Ensure that it invokes fileinput._state.lineno() exactly once, |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
626 returns whatever it returns, and does not modify fileinput._state |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
627 to point to a different object.""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
628 lineno_retval = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
629 instance = MockFileInput() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
630 instance.return_values["lineno"] = lineno_retval |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
631 fileinput._state = instance |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
632 retval = fileinput.lineno() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
633 self.assertExactlyOneInvocation(instance, "lineno") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
634 self.assertIs(retval, lineno_retval) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
635 self.assertIs(fileinput._state, instance) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
636 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
637 class Test_fileinput_filelineno(BaseFileInputGlobalMethodsTest): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
638 """Unit tests for fileinput.filelineno()""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
639 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
640 def test_state_is_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
641 """Tests fileinput.filelineno() when fileinput._state is None. |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
642 Ensure that it raises RuntimeError with a meaningful error message |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
643 and does not modify fileinput._state""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
644 fileinput._state = None |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
645 with self.assertRaises(RuntimeError) as cm: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
646 fileinput.filelineno() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
647 self.assertEqual(("no active input()",), cm.exception.args) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
648 self.assertIsNone(fileinput._state) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
649 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
650 def test_state_is_not_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
651 """Tests fileinput.filelineno() when fileinput._state is not None. |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
652 Ensure that it invokes fileinput._state.filelineno() exactly once, |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
653 returns whatever it returns, and does not modify fileinput._state |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
654 to point to a different object.""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
655 filelineno_retval = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
656 instance = MockFileInput() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
657 instance.return_values["filelineno"] = filelineno_retval |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
658 fileinput._state = instance |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
659 retval = fileinput.filelineno() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
660 self.assertExactlyOneInvocation(instance, "filelineno") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
661 self.assertIs(retval, filelineno_retval) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
662 self.assertIs(fileinput._state, instance) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
663 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
664 class Test_fileinput_fileno(BaseFileInputGlobalMethodsTest): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
665 """Unit tests for fileinput.fileno()""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
666 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
667 def test_state_is_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
668 """Tests fileinput.fileno() when fileinput._state is None. |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
669 Ensure that it raises RuntimeError with a meaningful error message |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
670 and does not modify fileinput._state""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
671 fileinput._state = None |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
672 with self.assertRaises(RuntimeError) as cm: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
673 fileinput.fileno() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
674 self.assertEqual(("no active input()",), cm.exception.args) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
675 self.assertIsNone(fileinput._state) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
676 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
677 def test_state_is_not_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
678 """Tests fileinput.fileno() when fileinput._state is not None. |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
679 Ensure that it invokes fileinput._state.fileno() exactly once, |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
680 returns whatever it returns, and does not modify fileinput._state |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
681 to point to a different object.""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
682 fileno_retval = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
683 instance = MockFileInput() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
684 instance.return_values["fileno"] = fileno_retval |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
685 instance.fileno_retval = fileno_retval |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
686 fileinput._state = instance |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
687 retval = fileinput.fileno() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
688 self.assertExactlyOneInvocation(instance, "fileno") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
689 self.assertIs(retval, fileno_retval) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
690 self.assertIs(fileinput._state, instance) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
691 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
692 class Test_fileinput_isfirstline(BaseFileInputGlobalMethodsTest): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
693 """Unit tests for fileinput.isfirstline()""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
694 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
695 def test_state_is_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
696 """Tests fileinput.isfirstline() when fileinput._state is None. |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
697 Ensure that it raises RuntimeError with a meaningful error message |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
698 and does not modify fileinput._state""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
699 fileinput._state = None |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
700 with self.assertRaises(RuntimeError) as cm: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
701 fileinput.isfirstline() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
702 self.assertEqual(("no active input()",), cm.exception.args) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
703 self.assertIsNone(fileinput._state) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
704 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
705 def test_state_is_not_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
706 """Tests fileinput.isfirstline() when fileinput._state is not None. |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
707 Ensure that it invokes fileinput._state.isfirstline() exactly once, |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
708 returns whatever it returns, and does not modify fileinput._state |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
709 to point to a different object.""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
710 isfirstline_retval = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
711 instance = MockFileInput() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
712 instance.return_values["isfirstline"] = isfirstline_retval |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
713 fileinput._state = instance |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
714 retval = fileinput.isfirstline() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
715 self.assertExactlyOneInvocation(instance, "isfirstline") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
716 self.assertIs(retval, isfirstline_retval) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
717 self.assertIs(fileinput._state, instance) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
718 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
719 class Test_fileinput_isstdin(BaseFileInputGlobalMethodsTest): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
720 """Unit tests for fileinput.isstdin()""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
721 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
722 def test_state_is_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
723 """Tests fileinput.isstdin() when fileinput._state is None. |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
724 Ensure that it raises RuntimeError with a meaningful error message |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
725 and does not modify fileinput._state""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
726 fileinput._state = None |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
727 with self.assertRaises(RuntimeError) as cm: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
728 fileinput.isstdin() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
729 self.assertEqual(("no active input()",), cm.exception.args) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
730 self.assertIsNone(fileinput._state) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
731 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
732 def test_state_is_not_None(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
733 """Tests fileinput.isstdin() when fileinput._state is not None. |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
734 Ensure that it invokes fileinput._state.isstdin() exactly once, |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
735 returns whatever it returns, and does not modify fileinput._state |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
736 to point to a different object.""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
737 isstdin_retval = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
738 instance = MockFileInput() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
739 instance.return_values["isstdin"] = isstdin_retval |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
740 fileinput._state = instance |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
741 retval = fileinput.isstdin() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
742 self.assertExactlyOneInvocation(instance, "isstdin") |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
743 self.assertIs(retval, isstdin_retval) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
744 self.assertIs(fileinput._state, instance) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
745 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
746 class InvocationRecorder: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
747 def __init__(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
748 self.invocation_count = 0 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
749 def __call__(self, *args, **kwargs): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
750 self.invocation_count += 1 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
751 self.last_invocation = (args, kwargs) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
752 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
753 class Test_hook_compressed(unittest.TestCase): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
754 """Unit tests for fileinput.hook_compressed()""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
755 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
756 def setUp(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
757 self.fake_open = InvocationRecorder() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
758 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
759 def test_empty_string(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
760 self.do_test_use_builtin_open("", 1) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
761 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
762 def test_no_ext(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
763 self.do_test_use_builtin_open("abcd", 2) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
764 |
|
70096
e0b4ed75b8e7
Skip test in test_fileinput when zlib is missing.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
68669
diff
changeset
|
765 @unittest.skipUnless(gzip, "Requires gzip and zlib") |
|
68497
d1acf761a911
Adjust test names to be more descriptive instead of depending on capitalization.
briancurtin <brian.curtin@gmail.com>
parents:
68496
diff
changeset
|
766 def test_gz_ext_fake(self): |
|
68495
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
767 original_open = gzip.open |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
768 gzip.open = self.fake_open |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
769 try: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
770 result = fileinput.hook_compressed("test.gz", 3) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
771 finally: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
772 gzip.open = original_open |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
773 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
774 self.assertEqual(self.fake_open.invocation_count, 1) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
775 self.assertEqual(self.fake_open.last_invocation, (("test.gz", 3), {})) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
776 |
|
68669
bb645cc39e60
Fix #11596. When bz2 isn't available, skip test_bz2_ext_fake.
briancurtin <brian.curtin@gmail.com>
parents:
68530
diff
changeset
|
777 @unittest.skipUnless(bz2, "Requires bz2") |
|
68497
d1acf761a911
Adjust test names to be more descriptive instead of depending on capitalization.
briancurtin <brian.curtin@gmail.com>
parents:
68496
diff
changeset
|
778 def test_bz2_ext_fake(self): |
|
68495
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
779 original_open = bz2.BZ2File |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
780 bz2.BZ2File = self.fake_open |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
781 try: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
782 result = fileinput.hook_compressed("test.bz2", 4) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
783 finally: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
784 bz2.BZ2File = original_open |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
785 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
786 self.assertEqual(self.fake_open.invocation_count, 1) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
787 self.assertEqual(self.fake_open.last_invocation, (("test.bz2", 4), {})) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
788 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
789 def test_blah_ext(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
790 self.do_test_use_builtin_open("abcd.blah", 5) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
791 |
|
68497
d1acf761a911
Adjust test names to be more descriptive instead of depending on capitalization.
briancurtin <brian.curtin@gmail.com>
parents:
68496
diff
changeset
|
792 def test_gz_ext_builtin(self): |
|
68495
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
793 self.do_test_use_builtin_open("abcd.Gz", 6) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
794 |
|
68497
d1acf761a911
Adjust test names to be more descriptive instead of depending on capitalization.
briancurtin <brian.curtin@gmail.com>
parents:
68496
diff
changeset
|
795 def test_bz2_ext_builtin(self): |
|
68495
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
796 self.do_test_use_builtin_open("abcd.Bz2", 7) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
797 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
798 def do_test_use_builtin_open(self, filename, mode): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
799 original_open = self.replace_builtin_open(self.fake_open) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
800 try: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
801 result = fileinput.hook_compressed(filename, mode) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
802 finally: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
803 self.replace_builtin_open(original_open) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
804 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
805 self.assertEqual(self.fake_open.invocation_count, 1) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
806 self.assertEqual(self.fake_open.last_invocation, |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
807 ((filename, mode), {})) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
808 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
809 @staticmethod |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
810 def replace_builtin_open(new_open_func): |
|
73434
c2b3e8b437a4
fileinput: replace this last occurence of codecs.open with builtins.open.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
70096
diff
changeset
|
811 original_open = builtins.open |
|
c2b3e8b437a4
fileinput: replace this last occurence of codecs.open with builtins.open.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
70096
diff
changeset
|
812 builtins.open = new_open_func |
|
68495
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
813 return original_open |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
814 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
815 class Test_hook_encoded(unittest.TestCase): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
816 """Unit tests for fileinput.hook_encoded()""" |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
817 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
818 def test(self): |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
819 encoding = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
820 result = fileinput.hook_encoded(encoding) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
821 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
822 fake_open = InvocationRecorder() |
|
73434
c2b3e8b437a4
fileinput: replace this last occurence of codecs.open with builtins.open.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
70096
diff
changeset
|
823 original_open = builtins.open |
|
c2b3e8b437a4
fileinput: replace this last occurence of codecs.open with builtins.open.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
70096
diff
changeset
|
824 builtins.open = fake_open |
|
68495
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
825 try: |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
826 filename = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
827 mode = object() |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
828 open_result = result(filename, mode) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
829 finally: |
|
73434
c2b3e8b437a4
fileinput: replace this last occurence of codecs.open with builtins.open.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
70096
diff
changeset
|
830 builtins.open = original_open |
|
68495
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
831 |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
832 self.assertEqual(fake_open.invocation_count, 1) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
833 |
|
73434
c2b3e8b437a4
fileinput: replace this last occurence of codecs.open with builtins.open.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
70096
diff
changeset
|
834 args, kwargs = fake_open.last_invocation |
|
68495
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
835 self.assertIs(args[0], filename) |
|
f2e04ce75f0b
Fix #11509. Significantly increase test coverage for fileinput.
briancurtin <brian.curtin@gmail.com>
parents:
63379
diff
changeset
|
836 self.assertIs(args[1], mode) |
|
73434
c2b3e8b437a4
fileinput: replace this last occurence of codecs.open with builtins.open.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
70096
diff
changeset
|
837 self.assertIs(kwargs.pop('encoding'), encoding) |
|
c2b3e8b437a4
fileinput: replace this last occurence of codecs.open with builtins.open.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
70096
diff
changeset
|
838 self.assertFalse(kwargs) |
|
63379
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
55593
diff
changeset
|
839 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
840 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41501
diff
changeset
|
841 if __name__ == "__main__": |
|
84108
05f7883ee92d
Update various test modules to use unittest.main() for test discovery
Brett Cannon <brett@python.org>
parents:
81039
diff
changeset
|
842 unittest.main() |
