def run_session(suites, fixture_registry, prerun_session_scheduled_fixtures, event_manager, force_disabled=False, stop_on_failure=False, nb_threads=1): # build tasks and run context session_scheduled_fixtures = fixture_registry.get_fixtures_scheduled_for_session( suites, prerun_session_scheduled_fixtures) tasks = build_tasks(suites, fixture_registry, session_scheduled_fixtures) context = RunContext(event_manager, fixture_registry, force_disabled, stop_on_failure) report = get_report() with event_manager.handle_events(): event_manager.fire(events.TestSessionStartEvent(report)) run_tasks(tasks, context, nb_threads, context.watchdog) event_manager.fire(events.TestSessionEndEvent(report)) exception, serialized_exception = event_manager.get_pending_failure() if exception: raise exception.__class__(serialized_exception) return report
def test_run_tasks_using_on_completion_dependency_1(): a = ExceptionTask("a", TaskFailure()) b = DummyTask("b", 1, on_completion_dependencies=[a]) run_tasks((a, b)) assert not a.skipped assert b.output == 1
def test_run_tasks_success(): a = DummyTask("a", 1, []) b = DummyTask("b", 2, [a]) c = DummyTask("c", 3, [a]) d = DummyTask("d", 4, [b, c]) run_tasks((a, b, c, d), nb_threads=1) assert d.output == 11
def test_run_tasks_using_on_completion_dependency_2(): a = DummyTask("a", 1) b = DummyTask("b", 1, on_completion_dependencies=[a]) run_tasks((a, b)) assert isinstance(a.result, TaskResultSuccess) and isinstance( b.result, TaskResultSuccess) assert b.output == 2
def test_run_tasks_using_on_completion_dependency_5(): a = ExceptionTask("a", TaskFailure()) b = ExceptionTask("b", TaskFailure(), on_completion_dependencies=[a]) c = DummyTask("c", 1, on_success_dependencies=[b]) run_tasks((a, b, c)) assert isinstance(a.result, TaskResultFailure) and isinstance( b.result, TaskResultFailure) assert c.skipped
def test_run_tasks_using_on_completion_dependency_3(): a = ExceptionTask("a", TaskFailure()) b = DummyTask("b", 1) c = DummyTask("c", 1, on_completion_dependencies=[a, b]) run_tasks((a, b, c)) assert not a.skipped assert isinstance(b.result, TaskResultSuccess) assert c.output == 2
def test_run_tasks_failure_1(): a = ExceptionTask("a", TaskFailure(), []) b = DummyTask("b", 2, [a]) c = DummyTask("c", 3, [a]) d = DummyTask("d", 4, [b, c]) run_tasks((a, b, c, d), nb_threads=1) assert not a.skipped assert b.skipped assert c.skipped assert d.skipped
def test_run_tasks_unexpected_exception_in_run(): a = DummyTask("a", 1, []) b = DummyTask("b", 2, [a]) c = ExceptionTask("c", Exception("something bad happened"), [a]) d = DummyTask("d", 4, [b, c]) with pytest.raises(TasksExecutionFailure) as excinfo: run_tasks((a, b, c, d), nb_threads=1) assert "something bad happened" in str(excinfo.value) assert not a.skipped assert not b.skipped assert not c.skipped assert d.skipped