[svn r63579] step one in simplifying runtest() collect() semantics

--HG--
branch : trunk
This commit is contained in:
hpk 2009-04-03 19:39:49 +02:00
parent 85635e1239
commit 245da9de19
1 changed files with 24 additions and 23 deletions

View File

@ -11,7 +11,6 @@ import py, os, sys
from py.__.test import event
from py.__.test.outcome import Exit
from py.__.test.dist.mypickle import ImmutablePickler
import py.__.test.custompdb
class RobustRun(object):
""" a robust setup/execute/teardown protocol used both for test collectors
@ -25,20 +24,22 @@ class RobustRun(object):
def __repr__(self):
return "<%s colitem=%s>" %(self.__class__.__name__, self.colitem)
class ItemRunner(RobustRun):
def run(self):
""" return result of running setup, execution, teardown procedures. """
excinfo = None
res = NORESULT
capture = self.getcapture()
try:
try:
when = "setup"
self.setup()
self.colitem.config._setupstate.prepare(self.colitem)
try:
res = self.execute()
when = "execute"
res = self.colitem.runtest()
finally:
when = "teardown"
self.teardown()
self.colitem.config._setupstate.teardown_exact(self.colitem)
when = "execute"
finally:
outerr = capture.reset()
@ -46,19 +47,9 @@ class RobustRun(object):
raise
except:
excinfo = py.code.ExceptionInfo()
return self.makereport(res, when, excinfo, outerr)
return self.makereport(when, excinfo, outerr)
class ItemRunner(RobustRun):
def setup(self):
self.colitem.config._setupstate.prepare(self.colitem)
def teardown(self):
self.colitem.config._setupstate.teardown_exact(self.colitem)
def execute(self):
#self.colitem.config.pytestplugins.pre_execute(self.colitem)
self.colitem.runtest()
#self.colitem.config.pytestplugins.post_execute(self.colitem)
def makereport(self, res, when, excinfo, outerr):
def makereport(self, when, excinfo, outerr):
testrep = self.colitem.config.pytestplugins.call_firstresult(
"pytest_item_makereport", item=self.colitem,
excinfo=excinfo, when=when, outerr=outerr)
@ -69,12 +60,22 @@ class ItemRunner(RobustRun):
return testrep
class CollectorRunner(RobustRun):
def setup(self):
pass
def teardown(self):
pass
def execute(self):
return self.colitem._memocollect()
def run(self):
""" return result of running setup, execution, teardown procedures. """
excinfo = None
res = NORESULT
capture = self.getcapture()
try:
try:
res = self.colitem._memocollect()
finally:
outerr = capture.reset()
except (Exit, KeyboardInterrupt):
raise
except:
excinfo = py.code.ExceptionInfo()
return self.makereport(res, "execute", excinfo, outerr)
def makereport(self, res, when, excinfo, outerr):
return event.CollectionReport(self.colitem, res, excinfo, when, outerr)