Skip to content

Commit

Permalink
Added tests
Browse files Browse the repository at this point in the history
  • Loading branch information
antonpirker committed Nov 16, 2024
1 parent 39db548 commit 10d7a49
Show file tree
Hide file tree
Showing 2 changed files with 104 additions and 1 deletion.
2 changes: 1 addition & 1 deletion sentry_sdk/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -1181,7 +1181,7 @@ def merge_stack_frames(frames, full_stack, client_options):
else None
)
if max_stack_frames is not None:
new_frames = new_frames[:max_stack_frames]
new_frames = new_frames[len(new_frames) - max_stack_frames :]

return new_frames

Expand Down
103 changes: 103 additions & 0 deletions tests/test_full_stack_frames.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
import sentry_sdk


def test_full_stack_frames_default(sentry_init, capture_events):
sentry_init()
events = capture_events()

def foo():
try:
bar()
except Exception as e:
sentry_sdk.capture_exception(e)

def bar():
raise Exception("This is a test exception")

foo()

(event,) = events
frames = event["exception"]["values"][0]["stacktrace"]["frames"]

assert len(frames) == 2
assert frames[-1]["function"] == "bar"
assert frames[-2]["function"] == "foo"


def test_full_stack_frames_enabled(sentry_init, capture_events):
sentry_init(
add_full_stack=True,
)
events = capture_events()

def foo():
try:
bar()
except Exception as e:
sentry_sdk.capture_exception(e)

def bar():
raise Exception("This is a test exception")

foo()

(event,) = events
frames = event["exception"]["values"][0]["stacktrace"]["frames"]

assert len(frames) > 2
assert frames[-1]["function"] == "bar"
assert frames[-2]["function"] == "foo"
assert frames[-3]["function"] == "foo"
assert frames[-4]["function"] == "test_full_stack_frames_enabled"


def test_full_stack_frames_enabled_truncated(sentry_init, capture_events):
sentry_init(
add_full_stack=True,
max_stack_frames=3,
)
events = capture_events()

def foo():
try:
bar()
except Exception as e:
sentry_sdk.capture_exception(e)

def bar():
raise Exception("This is a test exception")

foo()

(event,) = events
frames = event["exception"]["values"][0]["stacktrace"]["frames"]

assert len(frames) == 3
assert frames[-1]["function"] == "bar"
assert frames[-2]["function"] == "foo"
assert frames[-3]["function"] == "foo"


def test_full_stack_frames_default_no_truncation_happening(sentry_init, capture_events):
sentry_init(
max_stack_frames=1, # this is ignored if add_full_stack=False (which is the default)
)
events = capture_events()

def foo():
try:
bar()
except Exception as e:
sentry_sdk.capture_exception(e)

def bar():
raise Exception("This is a test exception")

foo()

(event,) = events
frames = event["exception"]["values"][0]["stacktrace"]["frames"]

assert len(frames) == 2
assert frames[-1]["function"] == "bar"
assert frames[-2]["function"] == "foo"

0 comments on commit 10d7a49

Please sign in to comment.