def test_apigen_executor(self): class Tracer(object): def __init__(self): self.starts = 0 self.ends = 0 def start_tracing(self): self.starts += 1 def end_tracing(self): self.ends += 1 tmpdir = py.test.ensuretemp("apigen_executor") tmpdir.ensure("__init__.py") tmpdir.ensure("test_one.py").write(py.code.Source(""" def g(): pass def test_1(): g() class TestX(object): def setup_method(self, m): self.ttt = 1 def test_one(self): self.ttt += 1 def test_raise(self): 1/0 """)) config = py.test.config._reparse([tmpdir]) rootcol = config._getcollector(tmpdir) tracer = Tracer() item = rootcol._getitembynames("test_one.py/test_1") ex = ApigenExecutor(item, config=config) out1 = ex.execute(tracer) item = rootcol._getitembynames("test_one.py/TestX/()/test_one") ex = ApigenExecutor(item, config=config) out2 = ex.execute(tracer) item = rootcol._getitembynames("test_one.py/TestX/()/test_raise") ex = ApigenExecutor(item, config=config) out3 = ex.execute(tracer) assert tracer.starts == 3 assert tracer.ends == 3 assert out1.passed assert out2.passed assert not out3.passed
def apigen_runner(item, session, reporter): #retval = plain_runner(item, session, reporter) startcapture(session) r = ApigenExecutor(item, reporter=reporter, config=session.config) outcome = r.execute(session.tracer) outcome = ReprOutcome(outcome.make_repr(session.config.option.tbstyle)) outcome.stdout, outcome.stderr = finishcapture(session) return outcome