Ejemplo n.º 1
0
def test_raises_on_invalid_data():
    def mygenerator():
        yield "INVALID DATA"

    with mock.patch('twisted.internet.threads.blockingCallFromThread'):
        with pytest.raises(TypeError):
            WC.runtask(fakesender, mygenerator)
Ejemplo n.º 2
0
def test_raise_runtimeerror_on_generator_exception(genexception):
    def mygenerator():
        yield FakeAction()
        raise genexception("This is an exception.")

    with mock.patch('twisted.internet.threads.blockingCallFromThread'):
        with pytest.raises(RuntimeError):
            WC.runtask(fakesender, mygenerator)
Ejemplo n.º 3
0
def test_raise_on_invalid_return(genresult):
    def mygenerator():
        yield FakeAction()
        return genresult

    with mock.patch('twisted.internet.threads.blockingCallFromThread'):
        with pytest.raises(TypeError):
            WC.runtask(fakesender, mygenerator)
Ejemplo n.º 4
0
def test_washertask_raising_task_result_status_exception():
    @washertask
    def mytask():
        yield FakeAction()
        raise ValueError("Something bad!")
        return True

    cmd = WasherTask(
        builder=None,
        stepId=None,
        args={"task_name": "mytask", "task_args": {}})

    cmd.sendStatus = mock.MagicMock()
    yield cmd.start()

    cmd.sendStatus.assert_called_with({"rc": results.EXCEPTION})
Ejemplo n.º 5
0
def test_washertask_result_status(value, warnings, message):
    @washertask
    def mytask():
        if warnings:
            yield actions.Warn("Boooo!")
        return value

    cmd = WasherTask(
        builder=None,
        stepId=None,
        args={"task_name": "mytask", "task_args": {}})

    cmd.sendStatus = mock.MagicMock()
    yield cmd.start()

    cmd.sendStatus.assert_called_with(message)
Ejemplo n.º 6
0
def test_return_when_warnings_are_yielded(genresult, runresult):
    def mygenerator():
        yield actions.Warn("Something happened.")
        return genresult

    with mock.patch('twisted.internet.threads.blockingCallFromThread'):
        assert WC.runtask(fakesender, mygenerator) is runresult
Ejemplo n.º 7
0
def test_return_value_depends_on_generator(genresult, runresult):
    def mygenerator():
        yield FakeAction()
        return genresult

    with mock.patch('twisted.internet.threads.blockingCallFromThread'):
        assert WC.runtask(fakesender, mygenerator) is runresult
Ejemplo n.º 8
0
def test_yielded_actions_are_sent_using_callFromThread():
    class MyFakeAction(actions.MasterAction):
        message = object()

    def mygenerator():
        yield MyFakeAction()
        return True

    with mock.patch(
            'twisted.internet.threads.blockingCallFromThread') as callFromThread:
        sender = mock.Mock()
        callFromThread.side_effect = lambda _1, _2, message: sender(message)

        WC.runtask(sender, mygenerator)

        callFromThread.assert_called_once_with(reactor, sender, MyFakeAction.message)
        sender.assert_called_once_with(MyFakeAction.message)
Ejemplo n.º 9
0
def test_washertask_start_runs_task():
    called = False

    @washertask
    def mytask():
        nonlocal called
        yield FakeAction()
        called = True
        return True

    cmd = WasherTask(
        builder=None,
        stepId=None,
        args={"task_name": "mytask", "task_args": {}})

    yield cmd.start()

    assert called
Ejemplo n.º 10
0
def test_washertask_run_in_thread():
    @washertask
    def mytask(something):
        yield FakeAction()
        return True

    myargs = {"something": True}

    cmd = WasherTask(
        builder=None,
        stepId=None,
        args={"task_name": "mytask", "task_args": myargs})

    with mock.patch('twisted.internet.threads.deferToThread') as deferToThread:
        yield cmd.start()
        deferToThread.assert_called_once_with(
            cmd.runtask,
            cmd.sendStatus,
            mytask,
            myargs)
Ejemplo n.º 11
0
def test_washertask_expand_args():
    p1 = object()
    p2 = object()
    p3 = object()

    @washertask
    def mytask(param1, param2=None, **kwargs):
        yield FakeAction()
        assert param1 == p1
        assert param2 == p2
        assert kwargs["param3"] == p3
        return True

    cmd = WasherTask(
        builder=None,
        stepId=None,
        args={"task_name": "mytask",
              "task_args": {"param1": p1,
                            "param2": p2,
                            "param3": p3}})

    yield cmd.start()
Ejemplo n.º 12
0
def test_unknown_task_raise():
    with pytest.raises(RuntimeError):
        WasherTask(
            builder=None,
            stepId=None,
            args={"task_name": "foo", "task_args": {}})
Ejemplo n.º 13
0
def test_do_not_accept_regular_functions_as_tasks():
    def myfunction():
        pass

    with pytest.raises(AttributeError):
        WC.runtask(fakesender, myfunction)