Пример #1
0
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
Пример #2
0
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)
Пример #3
0
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