Mercurial > cpython-lru_cache-weakref
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 |
| 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() |
