'Observer raises an exception during fan out: a failure is logged, but
not re-raised.  Life goes on.'

def test_observerRaises(self):

    event = dict(foo=1, bar=2)
    exception = RuntimeError('ARGH!    EVIL    DEATH!')
    events = []
    def observer(event):
        shouldRaise = (not events)
        events.append(event)
        if shouldRaise:
            raise exception
    collector = []
    publisher = LogPublisher(observer, collector.append)
    publisher(event)
    self.assertIn(event, events)
    errors = [e['log_failure'] for e in collector if ('log_failure' in e)]
    self.assertEqual(len(errors), 1)
    self.assertIs(errors[0].value, exception)
    self.assertEqual(len(events), 1)
