refactor basic_run_report a bit to allow for immediate PDB runs and clearer code.
--HG-- branch : trunk
This commit is contained in:
parent
b8926f59da
commit
def623e289
|
@ -9,35 +9,41 @@
|
||||||
import py
|
import py
|
||||||
|
|
||||||
from py.__.test.outcome import Skipped
|
from py.__.test.outcome import Skipped
|
||||||
|
from py.__.test.custompdb import post_mortem
|
||||||
|
|
||||||
def basic_run_report(item, pdb=None):
|
class Call:
|
||||||
""" return report about setting up and running a test item. """
|
|
||||||
excinfo = None
|
excinfo = None
|
||||||
capture = item.config._getcapture()
|
def __init__(self, when, func):
|
||||||
|
self.when = when
|
||||||
try:
|
try:
|
||||||
try:
|
self.result = func()
|
||||||
when = "setup"
|
|
||||||
item.config._setupstate.prepare(item)
|
|
||||||
try:
|
|
||||||
when = "runtest"
|
|
||||||
if not item._deprecated_testexecution():
|
|
||||||
item.runtest()
|
|
||||||
finally:
|
|
||||||
when = "teardown"
|
|
||||||
item.config._setupstate.teardown_exact(item)
|
|
||||||
when = "runtest"
|
|
||||||
finally:
|
|
||||||
outerr = capture.reset()
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
raise
|
raise
|
||||||
except:
|
except:
|
||||||
excinfo = py.code.ExceptionInfo()
|
self.excinfo = py.code.ExceptionInfo()
|
||||||
|
|
||||||
|
def runtest_with_deprecated_check(item):
|
||||||
|
if not item._deprecated_testexecution():
|
||||||
|
item.runtest()
|
||||||
|
|
||||||
|
def basic_run_report(item, pdb=None):
|
||||||
|
""" return report about setting up and running a test item. """
|
||||||
|
setupstate = item.config._setupstate
|
||||||
|
capture = item.config._getcapture()
|
||||||
|
try:
|
||||||
|
call = Call("setup", lambda: setupstate.prepare(item))
|
||||||
|
if not call.excinfo:
|
||||||
|
call = Call("runtest", lambda: runtest_with_deprecated_check(item))
|
||||||
|
if not call.excinfo:
|
||||||
|
call = Call("teardown", lambda: setupstate.teardown_exact(item))
|
||||||
|
finally:
|
||||||
|
outerr = capture.reset()
|
||||||
testrep = item.config.hook.pytest_item_makereport(
|
testrep = item.config.hook.pytest_item_makereport(
|
||||||
item=item, excinfo=excinfo, when=when, outerr=outerr)
|
item=item, excinfo=call.excinfo, when=call.when, outerr=outerr)
|
||||||
if pdb and testrep.failed:
|
if pdb and testrep.failed:
|
||||||
tw = py.io.TerminalWriter()
|
tw = py.io.TerminalWriter()
|
||||||
testrep.toterminal(tw)
|
testrep.toterminal(tw)
|
||||||
pdb(excinfo)
|
pdb(call.excinfo)
|
||||||
return testrep
|
return testrep
|
||||||
|
|
||||||
def basic_collect_report(collector):
|
def basic_collect_report(collector):
|
||||||
|
|
Loading…
Reference in New Issue