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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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)