def test_catch_schedule_nested(self): ran = False handled = False def inner(scheduler, state): nonlocal ran ran = True def outer(scheduler, state): scheduler.schedule(inner) def handler(_): nonlocal handled handled = True return True wrapped = CatchSchedulerTestScheduler() scheduler = CatchScheduler(wrapped, handler) scheduler.schedule(outer) wrapped.start() assert ran is True assert handled is False assert wrapped.exc is None
def test_catch_schedule_nested_error_unhandled(self): ran = False handled = False def inner(scheduler, state): nonlocal ran ran = True raise MyException() def outer(scheduler, state): scheduler.schedule(inner) def handler(_): nonlocal handled handled = True return False wrapped = CatchSchedulerTestScheduler() scheduler = CatchScheduler(wrapped, handler) scheduler.schedule(outer) wrapped.start() assert ran is True assert handled is True assert isinstance(wrapped.exc, MyException)
def test_catch_schedule_error_handled(self): ran = False handled = False def action(scheduler, state): nonlocal ran ran = True raise MyException() def handler(_): nonlocal handled handled = True return True wrapped = CatchSchedulerTestScheduler() scheduler = CatchScheduler(wrapped, handler) scheduler.schedule(action) wrapped.start() assert ran is True assert handled is True assert wrapped.exc is None