Пример #1
0
def test_loop_run_forever_after_toggle_set_is_running(loop: GLibEventLoop):
    loop.set_is_running(True)
    loop.set_is_running(False)

    idle_add(loop.context, loop.stop)

    loop.run_forever()
Пример #2
0
def test_loop_run_forever_and_stop(loop: GLibEventLoop):
    running_loop_check = True
    always_running_check = True

    num = 10

    def countdown():
        nonlocal num, running_loop_check, always_running_check
        num -= 1

        if asyncio.get_running_loop() is not loop:
            running_loop_check = False

        always_running_check = loop.is_running() and always_running_check

        if num > 0:
            return True
        else:
            loop.stop()
            return False

    # Iterate through context `num` times.

    context = loop.context

    source = idle_add(context, countdown)

    loop.run_forever()

    assert running_loop_check
    assert always_running_check

    assert source.is_destroyed()
    assert not context.pending()
Пример #3
0
def test_loop_run_forever_when_not_owner():
    from aioglib._loop import GLibEventLoop

    context = MockMainContext(is_owner=False)
    loop = GLibEventLoop(context)

    with raises(RuntimeError):
        loop.run_forever()
Пример #4
0
def test_loop_run_forever_releases_context():
    from gi.repository.GLib import MainLoop as MockMainLoop

    mock_context = MockMainContext()
    loop = GLibEventLoop(mock_context)

    MockMainLoop().run.side_effect = loop.stop
    MockMainLoop().is_running.return_value = False

    loop.run_forever()

    assert mock_context.acquire_count == 0
Пример #5
0
def test_loop_run_forever_when_set_is_running(loop: GLibEventLoop):
    loop.set_is_running(True)

    with raises(RuntimeError):
        loop.run_forever()