def test_format_frames__huge_var(): try: a = "A" * MAX_VARS_SIZE # noqa F841 1 / 0 except Exception: frames = format_frames(inspect.trace()) assert frames[0]["variables"]["a"] == "A" * MAX_VAR_LEN + "...[too long]"
def test_format_frames__max_recursion(): def func(): a = "A" # noqa func() try: e = "E" # noqa func() except RecursionError: frames = format_frames(inspect.trace()) assert frames[0]["function"] == "func"
def test_format_frames__pass_max_vars_size(): def func(): for i in range(MAX_VARS_SIZE * 2): exec(f"a{i} = 'A'") 1 / 0 try: func() except Exception: frames = format_frames(inspect.trace()) assert len(frames[0]["variables"]) < MAX_VARS_SIZE assert len(frames[0]["variables"]) > 0
def add_exception_event(self, exception: Exception, frames_infos: List[inspect.FrameInfo]) -> None: if self.function_span: message = exception.args[0] if exception.args else None if not isinstance(message, str): message = str(message) self.function_span["error"] = { "type": exception.__class__.__name__, "message": message, "stacktrace": traceback.format_exc(), "frames": format_frames(frames_infos) if Configuration.verbose else [], }
def test_format_frames__check_all_keys_and_values(): def func(): a = "A" # noqa 1 / 0 try: func() except Exception: frames = format_frames(inspect.trace()) assert frames[0] == { "function": "func", "fileName": __file__, "variables": { "a": "A" }, "lineno": frames[1]["lineno"] - 3, }
def test_format_frames(): def func_a(): a = "A" # noqa func_b() def func_b(): one = 1 zero = 0 one / zero try: e = "E" # noqa func_a() except Exception: frames = format_frames(inspect.trace()) assert frames[0]["function"] == "func_b" assert frames[0]["variables"] == {"one": "1", "zero": "0"} assert frames[1]["function"] == "func_a" assert frames[1]["variables"]["a"] == "A" assert frames[2]["function"] == "test_format_frames" assert frames[2]["variables"]["e"] == "E"