From 8c2c6af0bbc20ff8a4336d9bac4007d2dbfe6143 Mon Sep 17 00:00:00 2001 From: Armen Zambrano G <44410+armenzg@users.noreply.github.com> Date: Wed, 2 Apr 2025 10:43:43 -0400 Subject: [PATCH] fix(auto_source): Handle data property correctly Fixes [SENTRY-3RBQ](https://sentry.sentry.io/issues/6499816788/) --- src/sentry/issues/auto_source_code_config/stacktraces.py | 5 ++++- .../issues/auto_source_code_config/test_stacktraces.py | 9 ++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/sentry/issues/auto_source_code_config/stacktraces.py b/src/sentry/issues/auto_source_code_config/stacktraces.py index d016b73fdafa3f..27d3cefe4c04df 100644 --- a/src/sentry/issues/auto_source_code_config/stacktraces.py +++ b/src/sentry/issues/auto_source_code_config/stacktraces.py @@ -33,7 +33,10 @@ def get_frames_to_process(data: NodeData | dict[str, Any], platform: str) -> lis def _check_not_categorized(frame: dict[str, Any]) -> bool: - return frame.get("data", {}).get("category") is None + data = frame.get("data", {}) + if data: + return "category" not in data + return True def get_stacktraces(data: NodeData | dict[str, Any]) -> list[dict[str, Any]]: diff --git a/tests/sentry/issues/auto_source_code_config/test_stacktraces.py b/tests/sentry/issues/auto_source_code_config/test_stacktraces.py index 7b07af1111a45f..cb79e21eabbb82 100644 --- a/tests/sentry/issues/auto_source_code_config/test_stacktraces.py +++ b/tests/sentry/issues/auto_source_code_config/test_stacktraces.py @@ -73,13 +73,20 @@ def _stacktrace(frames: list[dict[str, Any]]) -> dict[str, Any]: ), pytest.param( [ - # This frame is excluded because it has already been categorized + # These frames are excluded because they have been categorized {"module": "android.app", "in_app": False, "data": {"category": "foo"}}, + {"module": "android.app", "in_app": False, "data": {"category": None}}, + # These frames will be considered since they don't have a category set + {"module": "android.app", "in_app": False, "data": {}}, + {"module": "android.app", "in_app": False, "data": None}, {"module": "com.example.foo", "in_app": False, "data": {}}, {"module": "com.example.bar", "in_app": False}, ], "java", [ + # These will be considered since they don't have a category set + {"module": "android.app", "in_app": False, "data": {}}, + {"module": "android.app", "in_app": False, "data": None}, {"module": "com.example.foo", "in_app": False, "data": {}}, {"module": "com.example.bar", "in_app": False}, ],