def test_emitter_error_handling(): """Emitter error handling""" em = EventEmitter(type="test_event") em.print_callback_errors = "never" def cb(ev): raise Exception("test") em.ignore_callback_errors = True # first callback fails; second callback still runs. em.connect(record_event) em.connect(cb) record_event.result = None ev = em() record_event.assert_result(event=ev) # this time we should get an exception record_event.result = None em.ignore_callback_errors = False try: em() assert False, "Emission should have raised exception" except Exception as err: if str(err) != "test": raise
def test_emitter_loop(): """Catch emitter loops""" em1 = EventEmitter(type="test_event1") em2 = EventEmitter(type="test_event2") em1.ignore_callback_errors = False em2.ignore_callback_errors = False # cross-connect emitters; when we emit, an exception should be raised # indicating an event loop. em1.connect(em2) em2.connect(em1) with pytest.warns(UserWarning) as record: em1() assert "EventEmitter loop detected!" in str(record[0].message)
def test_emitter_loop(): """Catch emitter loops""" em1 = EventEmitter(type="test_event1") em2 = EventEmitter(type="test_event2") em1.ignore_callback_errors = False em2.ignore_callback_errors = False # cross-connect emitters; when we emit, an exception should be raised # indicating an event loop. em1.connect(em2) em2.connect(em1) try: em1() except RuntimeError as err: if str(err) != "EventEmitter loop detected!": raise err