def test_should_construct_critical_error_from_base_exception_and_valid_input_parameters(): valid_input_parameters = ("hola", 2) error = CriticalError( Exception("my_trace"), input_parameters=valid_input_parameters ) assert error.message == "Exception: my_trace" assert "Input Parameters: {'param_1': 'hola', 'param_2': 2}" in error.__repr__()
def test_should_capture_an_exception_with_additional_context(): expected_trace = "my_trace" expected_raised_exception = RuntimeError(expected_trace) def inner(): raise expected_raised_exception @meiga def method(): try: inner() except Exception as exception: raise CriticalError( exception=exception, executor="executor", traceback=traceback.format_exc(), ) result = method() assert_failure( result, value_is_instance_of=CriticalError, value_is_equal_to=CriticalError(expected_raised_exception), ) assert result.value.executor == "executor" assert "Traceback" in result.value.traceback assert "File" in result.value.traceback assert "Traceback" in str(result)
def method(): try: inner() except Exception as exception: raise CriticalError( exception=exception, executor="executor", traceback=traceback.format_exc(), )
def test_should_capture_an_exception_during_runtime(): expected_raised_exception = RuntimeError("my_trace") def inner(): raise expected_raised_exception @meiga def method(): try: inner() except Exception as exception: raise CriticalError(exception) result = method() assert_failure( result, value_is_instance_of=CriticalError, value_is_equal_to=CriticalError(expected_raised_exception), )
def wrapper(*args, **kwargs): @meiga def run_event_handler(*args, **kwargs) -> Result: return func(*args, **kwargs) self._check_logger() self._check_notifier() event: Event = args[0] log_message = LogMessage(layer="event_handler", operation=f"{func.__name__}") self.logger.log( DEBUG, log_message.set_message({ "event": event.event_name, "body": event.to_json() }), ) try: result = run_event_handler(*args, **kwargs) except Exception as exception: result = Failure( CriticalError( exception=exception, input_parameters=kwargs if len(kwargs) > 0 else args, executor=f"{func.__name__} (Event Handler)", traceback=traceback.format_exc(), )) self.logger.log(DEBUG, log_message.set_message({"result": result})) self.notify(result) return result
def method(): try: inner() except Exception as exception: raise CriticalError(exception)
def test_should_construct_critical_error_from_runtime_error_exception(): error = CriticalError(RuntimeError("my_trace")) assert error.message == "RuntimeError: my_trace"
def test_should_construct_critical_error_from_base_exception(): error = CriticalError(Exception("my_trace")) assert error.message == "Exception: my_trace"