Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
0
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