def test_add_writer_multiple_calls(self, glib_loop): import os rfd, wfd = os.pipe() timeout_occurred = False expected_i = 10 i = 0 def callback(): nonlocal i i += 1 if i == expected_i: glib_loop.stop() def timeout(): nonlocal timeout_occurred timeout_occurred = True glib_loop.stop() try: glib_loop.add_writer(wfd, callback) glib_loop.call_later(0.1, timeout) glib_loop.run_forever() finally: os.close(rfd) os.close(wfd) assert not timeout_occurred assert i == expected_i
def test_default_signal_handling(glib_loop): import os import signal glib_loop.call_later(0.01, os.kill, os.getpid(), signal.SIGINT) with pytest.raises(KeyboardInterrupt): glib_loop.run_forever()
def test_signal_handling_with_multiple_invocations(glib_loop): import os import signal glib_loop.call_later(0.01, os.kill, os.getpid(), signal.SIGINT) with pytest.raises(KeyboardInterrupt): glib_loop.run_forever() glib_loop.run_until_complete(asyncio.sleep(0))
def run_test(fd): import asyncio from gi.repository import GLib fut = asyncio.Future(loop=glib_loop) fut.add_done_callback(lambda r: remover(fd)) glib_loop.add_writer(fd, callback, fut) glib_loop.call_later(0.1, timeout) glib_loop.run_forever() assert not timeout_occurred assert removed
def test_add_signal_handler(self, glib_loop): import os import signal called = False def handler(): nonlocal called called = True glib_loop.stop() glib_loop.add_signal_handler(signal.SIGHUP, handler) assert signal.SIGHUP in glib_loop._sighandlers glib_loop.call_later(0.01, os.kill, os.getpid(), signal.SIGHUP) glib_loop.run_forever() assert called, 'signal handler didnt fire'
def test_add_signal_handler(self, glib_loop): import os import signal called = False def handler(): nonlocal called called = True glib_loop.stop() glib_loop.add_signal_handler(signal.SIGHUP, handler) assert signal.SIGHUP in glib_loop._sighandlers glib_loop.call_later(0.01, os.kill, os.getpid(), signal.SIGHUP) glib_loop.run_forever() assert called, "signal handler didnt fire"
def test_call_later_no_coroutine(self, glib_loop): with pytest.raises(TypeError): glib_loop.call_later(1, no_op_coro)
def test_call_later_no_coroutine(self, glib_loop): async def coro(): pass with pytest.raises(TypeError): glib_loop.call_later(1, coro)