Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_fileinput.py @ 27998:e27f58a50737 legacy-trunk
SF bug #690377: Dud footnote reference in distutils docs
| author | Raymond Hettinger <python@rcn.com> |
|---|---|
| date | Fri, 21 Feb 2003 02:47:09 +0000 |
| parents | aa0d2d51fbde |
| children | 0d5f8077bd24 |
| 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 ''' |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
5 |
|
24364
aa0d2d51fbde
Get rid of relative imports in all unittests. Now anything that
Barry Warsaw <barry@python.org>
parents:
18484
diff
changeset
|
6 from test.test_support import verify, verbose, TESTFN |
|
18484
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
7 import sys, os, re |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
8 from StringIO import StringIO |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
9 from fileinput import FileInput |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
10 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
11 # 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
|
12 # all the work, and a few functions (input, etc.) that use a global _state |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
13 # variable. We only test the FileInput class, since the other functions |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
14 # only provide a thin facade over FileInput. |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
15 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
16 # 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
|
17 # temp file's name. |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
18 def writeTmp(i, lines): |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
19 name = TESTFN + str(i) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
20 f = open(name, 'w') |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
21 f.writelines(lines) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
22 f.close() |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
23 return name |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
24 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
25 pat = re.compile(r'LINE (\d+) OF FILE (\d+)') |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
26 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
27 def remove_tempfiles(*names): |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
28 for name in names: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
29 try: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
30 os.unlink(name) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
31 except: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
32 pass |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
33 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
34 def runTests(t1, t2, t3, t4, bs=0, round=0): |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
35 start = 1 + round*6 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
36 if verbose: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
37 print '%s. Simple iteration (bs=%s)' % (start+0, bs) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
38 fi = FileInput(files=(t1, t2, t3, t4), bufsize=bs) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
39 lines = list(fi) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
40 fi.close() |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
41 verify(len(lines) == 31) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
42 verify(lines[4] == 'Line 5 of file 1\n') |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
43 verify(lines[30] == 'Line 1 of file 4\n') |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
44 verify(fi.lineno() == 31) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
45 verify(fi.filename() == t4) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
46 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
47 if verbose: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
48 print '%s. Status variables (bs=%s)' % (start+1, bs) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
49 fi = FileInput(files=(t1, t2, t3, t4), bufsize=bs) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
50 s = "x" |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
51 while s and s != 'Line 6 of file 2\n': |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
52 s = fi.readline() |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
53 verify(fi.filename() == t2) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
54 verify(fi.lineno() == 21) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
55 verify(fi.filelineno() == 6) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
56 verify(not fi.isfirstline()) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
57 verify(not fi.isstdin()) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
58 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
59 if verbose: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
60 print '%s. Nextfile (bs=%s)' % (start+2, bs) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
61 fi.nextfile() |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
62 verify(fi.readline() == 'Line 1 of file 3\n') |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
63 verify(fi.lineno() == 22) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
64 fi.close() |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
65 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
66 if verbose: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
67 print '%s. Stdin (bs=%s)' % (start+3, bs) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
68 fi = FileInput(files=(t1, t2, t3, t4, '-'), bufsize=bs) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
69 savestdin = sys.stdin |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
70 try: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
71 sys.stdin = StringIO("Line 1 of stdin\nLine 2 of stdin\n") |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
72 lines = list(fi) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
73 verify(len(lines) == 33) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
74 verify(lines[32] == 'Line 2 of stdin\n') |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
75 verify(fi.filename() == '<stdin>') |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
76 fi.nextfile() |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
77 finally: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
78 sys.stdin = savestdin |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
79 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
80 if verbose: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
81 print '%s. Boundary conditions (bs=%s)' % (start+4, bs) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
82 fi = FileInput(files=(t1, t2, t3, t4), bufsize=bs) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
83 verify(fi.lineno() == 0) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
84 verify(fi.filename() == None) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
85 fi.nextfile() |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
86 verify(fi.lineno() == 0) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
87 verify(fi.filename() == None) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
88 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
89 if verbose: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
90 print '%s. Inplace (bs=%s)' % (start+5, bs) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
91 savestdout = sys.stdout |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
92 try: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
93 fi = FileInput(files=(t1, t2, t3, t4), inplace=1, bufsize=bs) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
94 for line in fi: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
95 line = line[:-1].upper() |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
96 print line |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
97 fi.close() |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
98 finally: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
99 sys.stdout = savestdout |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
100 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
101 fi = FileInput(files=(t1, t2, t3, t4), bufsize=bs) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
102 for line in fi: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
103 verify(line[-1] == '\n') |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
104 m = pat.match(line[:-1]) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
105 verify(m != None) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
106 verify(int(m.group(1)) == fi.filelineno()) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
107 fi.close() |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
108 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
109 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
110 def writeFiles(): |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
111 global t1, t2, t3, t4 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
112 t1 = writeTmp(1, ["Line %s of file 1\n" % (i+1) for i in range(15)]) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
113 t2 = writeTmp(2, ["Line %s of file 2\n" % (i+1) for i in range(10)]) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
114 t3 = writeTmp(3, ["Line %s of file 3\n" % (i+1) for i in range(5)]) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
115 t4 = writeTmp(4, ["Line %s of file 4\n" % (i+1) for i in range(1)]) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
116 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
117 # First, run the tests with default and teeny buffer size. |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
118 for round, bs in (0, 0), (1, 30): |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
119 try: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
120 writeFiles() |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
121 runTests(t1, t2, t3, t4, bs, round) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
122 finally: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
123 remove_tempfiles(t1, t2, t3, t4) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
124 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
125 # Next, check for proper behavior with 0-byte files. |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
126 if verbose: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
127 print "13. 0-byte files" |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
128 try: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
129 t1 = writeTmp(1, [""]) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
130 t2 = writeTmp(2, [""]) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
131 t3 = writeTmp(3, ["The only line there is.\n"]) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
132 t4 = writeTmp(4, [""]) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
133 fi = FileInput(files=(t1, t2, t3, t4)) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
134 line = fi.readline() |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
135 verify(line == 'The only line there is.\n') |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
136 verify(fi.lineno() == 1) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
137 verify(fi.filelineno() == 1) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
138 verify(fi.filename() == t3) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
139 line = fi.readline() |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
140 verify(not line) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
141 verify(fi.lineno() == 1) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
142 verify(fi.filelineno() == 0) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
143 verify(fi.filename() == t4) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
144 fi.close() |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
145 finally: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
146 remove_tempfiles(t1, t2, t3, t4) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
147 |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
148 if verbose: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
149 print "14. Files that don't end with newline" |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
150 try: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
151 t1 = writeTmp(1, ["A\nB\nC"]) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
152 t2 = writeTmp(2, ["D\nE\nF"]) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
153 fi = FileInput(files=(t1, t2)) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
154 lines = list(fi) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
155 verify(lines == ["A\n", "B\n", "C", "D\n", "E\n", "F"]) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
156 verify(fi.filelineno() == 3) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
157 verify(fi.lineno() == 6) |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
158 finally: |
|
e061155f99e8
SF patch #440170: Tests for fileinput module.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
159 remove_tempfiles(t1, t2) |
