def test_exception_handling(error_handling): base_ee = EventEmitter() uplifted_ee = uplift(UpliftedEventEmitter, base_ee, error_handling=error_handling) # Exception handling alwyas prefers uplifted base_error = Exception('base error') uplifted_error = Exception('uplifted error') # Hold my beer base_error_handler = Mock() base_ee._emit_handle_potential_error = base_error_handler # Hold my other beer uplifted_error_handler = Mock() uplifted_ee._emit_handle_potential_error = uplifted_error_handler base_ee.emit('error', base_error) uplifted_ee.emit('error', uplifted_error) if error_handling == 'new': base_error_handler.assert_not_called() uplifted_error_handler.assert_has_calls( [call('error', base_error), call('error', uplifted_error)]) elif error_handling == 'underlying': base_error_handler.assert_has_calls( [call('error', base_error), call('error', uplifted_error)]) uplifted_error_handler.assert_not_called() elif error_handling == 'neither': base_error_handler.assert_called_once_with('error', base_error) uplifted_error_handler.assert_called_once_with('error', uplifted_error) else: raise Exception('unrecognized setting')