test_ok1/py/test/rsession/testing/test_executor.py

123 lines
3.7 KiB
Python

import py
import example1
from py.__.test.rsession.executor import RunExecutor, BoxExecutor,\
AsyncExecutor
from py.__.test.rsession.outcome import ReprOutcome
from py.__.test.rsession.testing.test_slave import funcprint_spec, \
funcprintfail_spec
def setup_module(mod):
mod.rootdir = py.path.local(py.__file__).dirpath().dirpath()
mod.config = py.test.config._reparse([mod.rootdir])
def XXXtest_executor_passing_function():
ex = Executor(example1.f1)
outcome = ex.execute()
assert outcome.passed
def XXXtest_executor_raising_function():
ex = Executor(example1.g1)
outcome = ex.execute()
assert not outcome.passed
excinfo = outcome.excinfo
assert excinfo.type == ValueError
def XXXtest_executor_traceback():
ex = Executor(example1.g1)
outcome = ex.execute()
excinfo = outcome.excinfo
assert len(excinfo.traceback) == 2
assert excinfo.traceback[1].frame.code.name == 'g2'
assert excinfo.traceback[0].frame.code.name == 'g1'
def XXX_test_executor_setup_passing():
ex = Executor(example1.f1, setup=lambda: None)
outcome = ex.execute()
assert outcome.passed
assert not outcome.setupfailure
def XXX_test_executor_setup_failing():
def failingsetup():
raise ValueError
ex = Executor(example1.f1, setup=failingsetup)
outcome = ex.execute()
assert not outcome.passed
assert outcome.setupfailure
assert outcome.excinfo.traceback[-1].frame.code.name == 'failingsetup'
class ItemTestPassing(py.test.Item):
def run(self):
return None
class ItemTestFailing(py.test.Item):
def run(self):
assert 0 == 1
class ItemTestSkipping(py.test.Item):
def run(self):
py.test.skip("hello")
def test_run_executor():
ex = RunExecutor(ItemTestPassing("pass"), config=config)
outcome = ex.execute()
assert outcome.passed
ex = RunExecutor(ItemTestFailing("fail"), config=config)
outcome = ex.execute()
assert not outcome.passed
ex = RunExecutor(ItemTestSkipping("skip"), config=config)
outcome = ex.execute()
assert outcome.skipped
assert not outcome.passed
assert not outcome.excinfo
def test_box_executor():
ex = BoxExecutor(ItemTestPassing("pass"), config=config)
outcome_repr = ex.execute()
outcome = ReprOutcome(outcome_repr)
assert outcome.passed
ex = BoxExecutor(ItemTestFailing("fail"), config=config)
outcome_repr = ex.execute()
outcome = ReprOutcome(outcome_repr)
assert not outcome.passed
ex = BoxExecutor(ItemTestSkipping("skip"), config=config)
outcome_repr = ex.execute()
outcome = ReprOutcome(outcome_repr)
assert outcome.skipped
assert not outcome.passed
assert not outcome.excinfo
def test_box_executor_stdout():
rootcol = py.test.collect.Directory(rootdir)
item = rootcol.getitembynames(funcprint_spec)
ex = BoxExecutor(item, config=config)
outcome_repr = ex.execute()
outcome = ReprOutcome(outcome_repr)
assert outcome.passed
assert outcome.stdout.find("samfing") != -1
def test_box_executor_stdout_error():
rootcol = py.test.collect.Directory(rootdir)
item = rootcol.getitembynames(funcprintfail_spec)
ex = BoxExecutor(item, config=config)
outcome_repr = ex.execute()
outcome = ReprOutcome(outcome_repr)
assert not outcome.passed
assert outcome.stdout.find("samfing elz") != -1
def test_cont_executor():
rootcol = py.test.collect.Directory(rootdir)
item = rootcol.getitembynames(funcprintfail_spec)
ex = AsyncExecutor(item, config=config)
cont, pid = ex.execute()
assert pid
outcome_repr = cont()
outcome = ReprOutcome(outcome_repr)
assert not outcome.passed
assert outcome.stdout.find("samfing elz") != -1