1 """Supporting definitions for the Python regression test."""
4 class Error(Exception):
5 """Base class for regression test exceptions."""
7 class TestFailed(Error
):
10 class TestSkipped(Error
):
13 This can be raised to indicate that a test was deliberatly
14 skipped, but not because a feature wasn't available. For
15 example, if some resource can't be used, such as the network
16 appears to be unavailable, this should be raised instead of
20 verbose
= 1 # Flag set to 0 by regrtest.py
21 use_large_resources
= 1 # Flag set to 0 by regrtest.py
33 for dirname
in sys
.path
:
35 os
.unlink(os
.path
.join(dirname
, modname
+ '.pyc'))
41 def fcmp(x
, y
): # fuzzy comparison function
42 if type(x
) == type(0.0) or type(y
) == type(0.0):
45 fuzz
= (abs(x
) + abs(y
)) * FUZZ
50 elif type(x
) == type(y
) and type(x
) in (type(()), type([])):
51 for i
in range(min(len(x
), len(y
))):
52 outcome
= fcmp(x
[i
], y
[i
])
55 return cmp(len(x
), len(y
))
58 TESTFN
= '@test' # Filename used for testing
61 def findfile(file, here
=__file__
):
63 if os
.path
.isabs(file):
67 path
= [os
.path
.dirname(here
)] + path
69 fn
= os
.path
.join(dn
, file)
70 if os
.path
.exists(fn
): return fn
73 def verify(condition
, reason
='test failed'):
74 """Verify that condition is true. If not, raise TestFailed.
76 The optional argument reason can be given to provide
81 raise TestFailed(reason
)
83 def check_syntax(statement
):
85 compile(statement
, '<string>', 'exec')
89 print 'Missing SyntaxError: "%s"' % statement