annotate Lib/test/regrtest.py @ 5817:48b94de85bf3 legacy-trunk

Extensive changes by AMK.
author Guido van Rossum <guido@python.org>
date Thu, 17 Jul 1997 16:29:42 +0000
parents b7c600ecc27d
children dff2024ab021
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4794
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 #! /usr/bin/env python
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 """Regression test.
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
4
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 This will find all modules whose name is "test_*" in the test
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 directory, and run them. Various command line options provide
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 additional facilities.
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
8
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 Command line options:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
10
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 -v: verbose -- print the name name of each test as it is being run
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 -q: quiet -- don't print anything except if a test fails
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 -g: generate -- write the output file for a test instead of comparing it
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 -x: exclude -- arguments are tests to *exclude*
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
15
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 If non-option arguments are present, they are names for tests to run,
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 unless -x is given, in which case they are names for tests not to run.
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 If no test names are given, all tests are run.
5175
197e3206e3f3 Add "extra-verbose" mode, triggered by specifying two -v flags. In
Guido van Rossum <guido@python.org>
parents: 4794
diff changeset
19
197e3206e3f3 Add "extra-verbose" mode, triggered by specifying two -v flags. In
Guido van Rossum <guido@python.org>
parents: 4794
diff changeset
20 If -v is given *twice*, the tests themselves are run in verbose mode.
197e3206e3f3 Add "extra-verbose" mode, triggered by specifying two -v flags. In
Guido van Rossum <guido@python.org>
parents: 4794
diff changeset
21 This is incompatible with -g and does not compare test output files.
4794
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 """
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
23
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 import sys
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 import string
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 import os
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 import getopt
5800
7e8ed9650fcc Catch all exceptions in test modules.
Guido van Rossum <guido@python.org>
parents: 5175
diff changeset
28 import traceback
4794
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
29
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 import test_support
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
31
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 def main():
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 try:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 opts, args = getopt.getopt(sys.argv[1:], 'vgqx')
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 except getopt.error, msg:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 print msg
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 print __doc__
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 sys.exit(2)
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 verbose = 0
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 quiet = 0
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 generate = 0
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 exclude = 0
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 for o, a in opts:
5175
197e3206e3f3 Add "extra-verbose" mode, triggered by specifying two -v flags. In
Guido van Rossum <guido@python.org>
parents: 4794
diff changeset
44 if o == '-v': verbose = verbose+1
4794
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 if o == '-q': quiet = 1
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 if o == '-g': generate = 1
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 if o == '-x': exclude = 1
5175
197e3206e3f3 Add "extra-verbose" mode, triggered by specifying two -v flags. In
Guido van Rossum <guido@python.org>
parents: 4794
diff changeset
48 if generate and verbose>1:
197e3206e3f3 Add "extra-verbose" mode, triggered by specifying two -v flags. In
Guido van Rossum <guido@python.org>
parents: 4794
diff changeset
49 print "-g and more than one -v don't go together!"
197e3206e3f3 Add "extra-verbose" mode, triggered by specifying two -v flags. In
Guido van Rossum <guido@python.org>
parents: 4794
diff changeset
50 sys.exit(2)
4794
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 good = []
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
52 bad = []
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 skipped = []
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 if exclude:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 nottests[:0] = args
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 args = []
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 tests = args or findtests()
5175
197e3206e3f3 Add "extra-verbose" mode, triggered by specifying two -v flags. In
Guido van Rossum <guido@python.org>
parents: 4794
diff changeset
58 test_support.verbose = verbose>1 # Tell tests to be moderately quiet
4794
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
59 for test in tests:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
60 if verbose:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
61 print test
5175
197e3206e3f3 Add "extra-verbose" mode, triggered by specifying two -v flags. In
Guido van Rossum <guido@python.org>
parents: 4794
diff changeset
62 ok = runtest(test, generate, verbose>1)
4794
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
63 if ok > 0:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 good.append(test)
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
65 elif ok == 0:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 bad.append(test)
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 else:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 if not quiet:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
69 print "test", test,
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
70 print "skipped -- an optional feature could not be imported"
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 skipped.append(test)
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 if good and not quiet:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 if not bad and not skipped and len(good) > 1:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 print "All",
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
75 print count(len(good), "test"), "OK."
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 if bad:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
77 print count(len(bad), "test"), "failed:",
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
78 print string.join(bad)
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
79 if skipped and not quiet:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
80 print count(len(skipped), "test"), "skipped:",
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
81 print string.join(skipped)
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
82 sys.exit(len(bad) > 0)
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
83
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
84 stdtests = [
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
85 'test_grammar',
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
86 'test_opcodes',
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
87 'test_operations',
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
88 'test_builtin',
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
89 'test_exceptions',
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
90 'test_types',
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
91 ]
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
92
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
93 nottests = [
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
94 'test_support',
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
95 'test_b1',
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
96 'test_b2',
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
97 ]
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
98
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 def findtests():
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
100 """Return a list of all applicable test modules."""
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 testdir = findtestdir()
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
102 names = os.listdir(testdir)
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
103 tests = []
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
104 for name in names:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 if name[:5] == "test_" and name[-3:] == ".py":
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
106 modname = name[:-3]
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
107 if modname not in stdtests and modname not in nottests:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 tests.append(modname)
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
109 tests.sort()
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 return stdtests + tests
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
111
5175
197e3206e3f3 Add "extra-verbose" mode, triggered by specifying two -v flags. In
Guido van Rossum <guido@python.org>
parents: 4794
diff changeset
112 def runtest(test, generate, verbose2):
4794
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
113 test_support.unload(test)
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
114 testdir = findtestdir()
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 outputdir = os.path.join(testdir, "output")
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
116 outputfile = os.path.join(outputdir, test)
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
117 try:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
118 if generate:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
119 cfp = open(outputfile, "w")
5175
197e3206e3f3 Add "extra-verbose" mode, triggered by specifying two -v flags. In
Guido van Rossum <guido@python.org>
parents: 4794
diff changeset
120 elif verbose2:
197e3206e3f3 Add "extra-verbose" mode, triggered by specifying two -v flags. In
Guido van Rossum <guido@python.org>
parents: 4794
diff changeset
121 cfp = sys.stdout
4794
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
122 else:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
123 cfp = Compare(outputfile)
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
124 except IOError:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
125 cfp = None
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
126 print "Warning: can't open", outputfile
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
127 try:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
128 save_stdout = sys.stdout
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
129 try:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
130 if cfp:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
131 sys.stdout = cfp
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
132 print test # Output file starts with test name
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
133 __import__(test)
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
134 finally:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
135 sys.stdout = save_stdout
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
136 except ImportError, msg:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
137 return -1
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
138 except test_support.TestFailed, msg:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
139 print "test", test, "failed --", msg
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
140 return 0
5800
7e8ed9650fcc Catch all exceptions in test modules.
Guido van Rossum <guido@python.org>
parents: 5175
diff changeset
141 except:
7e8ed9650fcc Catch all exceptions in test modules.
Guido van Rossum <guido@python.org>
parents: 5175
diff changeset
142 print "test", test, "crashed --", sys.exc_type, ":", sys.exc_value
7e8ed9650fcc Catch all exceptions in test modules.
Guido van Rossum <guido@python.org>
parents: 5175
diff changeset
143 if verbose2:
7e8ed9650fcc Catch all exceptions in test modules.
Guido van Rossum <guido@python.org>
parents: 5175
diff changeset
144 traceback.print_exc(file=sys.stdout)
7e8ed9650fcc Catch all exceptions in test modules.
Guido van Rossum <guido@python.org>
parents: 5175
diff changeset
145 return 0
4794
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
146 else:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
147 return 1
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
148
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
149 def findtestdir():
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
150 if __name__ == '__main__':
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
151 file = sys.argv[0]
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
152 else:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
153 file = __file__
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
154 testdir = os.path.dirname(file) or os.curdir
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
155 return testdir
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
156
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
157 def count(n, word):
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
158 if n == 1:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
159 return "%d %s" % (n, word)
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
160 else:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
161 return "%d %ss" % (n, word)
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
162
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
163 class Compare:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
164
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
165 def __init__(self, filename):
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
166 self.fp = open(filename, 'r')
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
167
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
168 def write(self, data):
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
169 expected = self.fp.read(len(data))
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
170 if data <> expected:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
171 raise test_support.TestFailed, \
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
172 'Writing: '+`data`+', expected: '+`expected`
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
173
5804
b7c600ecc27d Add flush() method to fake file.
Guido van Rossum <guido@python.org>
parents: 5800
diff changeset
174 def flush(self):
b7c600ecc27d Add flush() method to fake file.
Guido van Rossum <guido@python.org>
parents: 5800
diff changeset
175 pass
b7c600ecc27d Add flush() method to fake file.
Guido van Rossum <guido@python.org>
parents: 5800
diff changeset
176
4794
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
177 def close(self):
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
178 leftover = self.fp.read()
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
179 if leftover:
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
180 raise test_support.TestFailed, 'Unread: '+`leftover`
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
181 self.fp.close()
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
182
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
183 def isatty(self):
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
184 return 0
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
185
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
186 if __name__ == '__main__':
80c0ca424510 New regression test harness. See usage message / doc string.
Guido van Rossum <guido@python.org>
parents:
diff changeset
187 main()