Example #1
0
 def test_emitter_loop(self):
     """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
Example #2
0
 def test_emitter_error_handling(self):
     """Emitter error handling"""
     em = EventEmitter(type='test_event')
     em.print_callback_errors = False
     def cb(ev):
         raise Exception('test')
     
     # first callback fails; second callback still runs.
     em.connect(self.record_event)
     em.connect(cb)
     self.result = None
     ev = em()
     self.assert_result(event=ev)
     
     # this time we should get an exception
     self.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