[pypy-svn] rev 2502 - pypy/trunk/src/pypy/tool
sschwarzer at codespeak.net
sschwarzer at codespeak.net
Thu Dec 18 15:15:13 CET 2003
Author: sschwarzer
Date: Thu Dec 18 15:15:13 2003
New Revision: 2502
Modified:
pypy/trunk/src/pypy/tool/newtest.py
Log:
Support for skipping tests.
Renamed method _setstatus in TestResult to _setexception.
Modified: pypy/trunk/src/pypy/tool/newtest.py
==============================================================================
--- pypy/trunk/src/pypy/tool/newtest.py (original)
+++ pypy/trunk/src/pypy/tool/newtest.py Thu Dec 18 15:15:13 2003
@@ -10,6 +10,7 @@
#TODO
# - add support for ignored/skipped tests
# - support TestItem.run with different object spaces
+# - find out why some modules can't be loaded
class TestStatus:
def __init__(self, name, longstring, shortstring):
@@ -39,7 +40,7 @@
# formatted traceback (a string)
self.formatted_traceback = None
- def _setstatus(self, statuscode):
+ def _setexception(self, statuscode):
self.status = statuscode
self.excinfo = sys.exc_info()
self.traceback = self.excinfo[2]
@@ -47,7 +48,8 @@
output = StringIO.StringIO()
args = self.excinfo + (None, output)
traceback.print_exception(*args)
- self.formatted_traceback = output.getvalue().strip()
+ # strip trailing newline
+ self.formatted_traceback = output.getvalue().rstrip()
class TestItem:
@@ -100,23 +102,28 @@
if pretest is not None:
pretest(self)
try:
+ #XXX possibly will have to change
+ from pypy.tool import test
try:
testobject.setUp()
except KeyboardInterrupt:
raise
+ except test.TestSkip:
+ result.status = SKIPPED
+ return result
except:
- result._setstatus(ERROR)
+ result._setexception(ERROR)
return result
try:
testmethod()
result.status = SUCCESS
except AssertionError:
- result._setstatus(FAILURE)
+ result._setexception(FAILURE)
except KeyboardInterrupt:
raise
except:
- result._setstatus(ERROR)
+ result._setexception(ERROR)
try:
testobject.tearDown()
@@ -126,7 +133,7 @@
# if we already had an exception in the test method,
# don't overwrite it
if result.status not in (ERROR, FAILURE):
- result._setstatus(ERROR)
+ result._setexception(ERROR)
finally:
if posttest is not None:
posttest(self)
@@ -216,13 +223,15 @@
def main():
+ #filterfunc = lambda m: m.find("pypy.tool.testdata.") == -1
ts = TestSuite()
ts.initfromdir(autopath.pypydir)
for res in ts.testresults():
if res.status == SUCCESS:
continue
print 79 * '-'
- print "%s: %s" % (res.item, res.status)
+ print "%s.%s: %s" % (res.item.module.__name__, res.item.method.__name__,
+ res.status)
if res.traceback:
print
print res.formatted_traceback
More information about the Pypy-commit
mailing list