Skip to content

chore(integration): pass out of date from backend#119082

Draft
joseph-sentry wants to merge 11 commits into
masterfrom
joey--gh-integration-nudge-be
Draft

chore(integration): pass out of date from backend#119082
joseph-sentry wants to merge 11 commits into
masterfrom
joey--gh-integration-nudge-be

Conversation

@joseph-sentry

@joseph-sentry joseph-sentry commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

like the slack integration we want to have nudges / buttons for the
github integration so users can easily be notified that some installation
is out of date, and so they can update it

part of this is updating the serializer for integrations to pass an
"out of date" field to let the frontend know that the integration needs
to be updated based on logic that runs in the backend that has easy access to
options not exposed through the API

also moving around the slack scope class definition bc it was causing a circular
import issue

logic for commenting on autofix PRs during PR iteration
when tool calls fail potentially due to out of date github app
permissions

logic for passing "warnings" back from group ai autofix GET endpoint
specifically for failed tool calls potentially due to out of date github app
permissions
like the slack integration we want to have nudges / buttons for the
github integration so users can easily be notified that some installation
is out of date, and so they can update it

part of this is updating the serializer for integrations to pass an
"out of date" field to let the frontend know that the integration needs
to be updated based on logic that runs in the backend that has easy access to
options not exposed through the API

also moving around the slack scope class definition bc it was causing a circular
import issue
@joseph-sentry joseph-sentry changed the title Joey gh integration nudge be chore(integration): pass out of date from backend Jul 6, 2026
@github-actions github-actions Bot added the Scope: Backend Automatically applied to PRs that change backend components label Jul 6, 2026
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Backend Test Failures

Failures on 7727bed in this run:

tests/sentry/issues/endpoints/test_group_integration_details.py::GroupIntegrationDetailsTest::test_simple_get_linklog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/issues/endpoints/test_group_integration_details.py:82: in test_simple_get_link
    assert response.data == {
E   AssertionError: assert {'accountType...d': '80', ...} == {'accountType...d': '80', ...}
E     
E     Omitting 9 identical items, use -vv to show
E     Left contains 1 more item:
E     �[0m{�[33m'�[39;49;00m�[33moutOfDate�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m}�[90m�[39;49;00m
E     
E     Full diff:
E     �[0m�[90m �[39;49;00m {�[90m�[39;49;00m
E     �[90m �[39;49;00m     'accountType': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m     'domainName': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m     'icon': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m     'id': '80',�[90m�[39;49;00m
E     �[90m �[39;49;00m     'linkIssueConfig': [�[90m�[39;49;00m
E     �[90m �[39;49;00m         {�[90m�[39;49;00m
E     �[90m �[39;49;00m             'default': '',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'label': 'Issue',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'name': 'externalIssue',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'type': 'string',�[90m�[39;49;00m
E     �[90m �[39;49;00m         },�[90m�[39;49;00m
E     �[90m �[39;49;00m         {�[90m�[39;49;00m
E     �[90m �[39;49;00m             'choices': [�[90m�[39;49;00m
E     �[90m �[39;49;00m                 (�[90m�[39;49;00m
E     �[90m �[39;49;00m                     '1',�[90m�[39;49;00m
E     �[90m �[39;49;00m                     'Project 1',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 ),�[90m�[39;49;00m
E     �[90m �[39;49;00m                 (�[90m�[39;49;00m
E     �[90m �[39;49;00m                     '2',�[90m�[39;49;00m
E     �[90m �[39;49;00m                     'Project 2',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 ),�[90m�[39;49;00m
E     �[90m �[39;49;00m             ],�[90m�[39;49;00m
E     �[90m �[39;49;00m             'label': 'Project',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'name': 'project',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'type': 'select',�[90m�[39;49;00m
E     �[90m �[39;49;00m         },�[90m�[39;49;00m
E     �[90m �[39;49;00m     ],�[90m�[39;49;00m
E     �[90m �[39;49;00m     'name': 'Example',�[90m�[39;49;00m
E     �[92m+     'outOfDate': None,�[39;49;00m�[90m�[39;49;00m
E     �[90m �[39;49;00m     'provider': {�[90m�[39;49;00m
E     �[90m �[39;49;00m         'aspects': {},�[90m�[39;49;00m
E     �[90m �[39;49;00m         'canAdd': True,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'canDisable': False,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'features': [�[90m�[39;49;00m
E     �[90m �[39;49;00m             'commits',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'issue-basic',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'stacktrace-link',�[90m�[39;49;00m
E     �[90m �[39;49;00m         ],�[90m�[39;49;00m
E     �[90m �[39;49;00m         'key': 'example',�[90m�[39;49;00m
... (6 more lines)
tests/sentry/issues/endpoints/test_project_stacktrace_link.py::ProjectStacktraceLinkTest::test_config_and_source_urllog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/issues/endpoints/test_project_stacktrace_link.py:193: in test_config_and_source_url
    assert response.data["integrations"] == [serialized_integration(self.integration)]
E   AssertionError: assert [{'accountTyp...': '87', ...}] == [{'accountTyp...': '87', ...}]
E     
E     At index 0 diff: �[0m{�[33m'�[39;49;00m�[33mid�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33m87�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33micon�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mdomainName�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33maccountType�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mscopes�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33moutOfDate�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mstatus�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mactive�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mprovider�[39;49;00m�[33m'�[39;49;00m: {�[33m'�[39;49;00m�[33mkey�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mslug�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mcanAdd�[39;49;00m�[33m'�[39;49;00m: �[94mTrue�[39;49;00m, �[33m'�[39;49;00m�[33mcanDisable�[39;49;00m�[33m'�[39;49;00m: �[94mFalse�[39;49;00m, �[33m'�[39;49;00m�[33mfeatures�[39;49;00m�[33m'�[39;49;00m: [�[33m'�[39;49;00m�[33mcommits�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33missue-basic�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mstacktrace-link�[39;49;00m�[33m'�[39;49;00m], �[33m'�[39;49;00m�[33maspects�[39;49;00m�[33m'�[39;49;00m: {}}}�[90m�[39;49;00m != �[0m{�[33m'�[39;49;00m�[33maccountType�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mdomainName�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33micon�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mid�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33m87�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mprovider�[39;49;00m�[33m'�[39;49;00m: {�[33m'�[39;49;00m�[33maspects�[39;49;00m�[33m'�[39;49;00m: {}, �[33m'�[39;49;00m�[33mcanAdd�[39;49;00m�[33m'�[39;49;00m: �[94mTrue�[39;49;00m, �[33m'�[39;49;00m�[33mcanDisable�[39;49;00m�[33m'�[39;49;00m: �[94mFalse�[39;49;00m, �[33m'�[39;49;00m�[33mfeatures�[39;49;00m�[33m'�[39;49;00m: [�[33m'�[39;49;00m�[33mcommits�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33missue-basic�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mstacktrace-link�[39;49;00m�[33m'�[39;49;00m], �[33m'�[39;49;00m�[33mkey�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mslug�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m}, �[33m'�[39;49;00m�[33mscopes�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mstatus�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mactive�[39;49;00m�[33m'�[39;49;00m}�[90m�[39;49;00m
E     
E     Full diff:
E     �[0m�[90m �[39;49;00m [�[90m�[39;49;00m
E     �[90m �[39;49;00m     {�[90m�[39;49;00m
E     �[90m �[39;49;00m         'accountType': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'domainName': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'icon': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'id': '87',�[90m�[39;49;00m
E     �[90m �[39;49;00m         'name': 'Example',�[90m�[39;49;00m
E     �[92m+         'outOfDate': None,�[39;49;00m�[90m�[39;49;00m
E     �[90m �[39;49;00m         'provider': {�[90m�[39;49;00m
E     �[90m �[39;49;00m             'aspects': {},�[90m�[39;49;00m
E     �[90m �[39;49;00m             'canAdd': True,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'canDisable': False,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'features': [�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'commits',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'issue-basic',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'stacktrace-link',�[90m�[39;49;00m
E     �[90m �[39;49;00m             ],�[90m�[39;49;00m
E     �[90m �[39;49;00m             'key': 'example',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'name': 'Example',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'slug': 'example',�[90m�[39;49;00m
E     �[90m �[39;49;00m         },�[90m�[39;49;00m
E     �[90m �[39;49;00m         'scopes': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'status': 'active',�[90m�[39;49;00m
E     �[90m �[39;49;00m     },�[90m�[39;49;00m
E     �[90m �[39;49;00m ]�[90m�[39;49;00m
tests/sentry/integrations/api/serializers/models/test_integration.py::IntegrationSerializerTest::test_non_github_provider_has_null_out_of_datelog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/integrations/api/serializers/models/test_integration.py:23: in test_non_github_provider_has_null_out_of_date
    assert result["outOfDate"] is None
E   assert True is None
tests/sentry/issues/endpoints/test_group_integration_details.py::GroupIntegrationDetailsTest::test_simple_get_createlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/issues/endpoints/test_group_integration_details.py:125: in test_simple_get_create
    assert response.data == {
E   assert {'accountType...n': None, ...} == {'accountType...n': None, ...}
E     
E     Omitting 9 identical items, use -vv to show
E     Left contains 1 more item:
E     �[0m{�[33m'�[39;49;00m�[33moutOfDate�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m}�[90m�[39;49;00m
E     
E     Full diff:
E     �[0m�[90m �[39;49;00m {�[90m�[39;49;00m
E     �[90m �[39;49;00m     'accountType': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m     'createIssueConfig': [�[90m�[39;49;00m
E     �[90m �[39;49;00m         {�[90m�[39;49;00m
E     �[90m �[39;49;00m             'default': 'message',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'label': 'Title',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'name': 'title',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'required': True,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'type': 'string',�[90m�[39;49;00m
E     �[90m �[39;49;00m         },�[90m�[39;49;00m
E     �[90m �[39;49;00m         {�[90m�[39;49;00m
E     �[90m �[39;49;00m             'autosize': True,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'default': 'Sentry Issue: '�[90m�[39;49;00m
E     �[90m �[39;49;00m             '[BAR-1](http://testserver/organizations/baz/issues/18/?referrer=example_integration)\n'�[90m�[39;49;00m
E     �[90m �[39;49;00m             '\n'�[90m�[39;49;00m
E     �[90m �[39;49;00m             '```\n'�[90m�[39;49;00m
E     �[90m �[39;49;00m             'Stacktrace (most recent call first):\n'�[90m�[39;49;00m
E     �[90m �[39;49;00m             '\n'�[90m�[39;49;00m
E     �[90m �[39;49;00m             '  File "sentry/models/foo.py", line 29, in build_msg\n'�[90m�[39;49;00m
E     �[90m �[39;49;00m             '    string_max_length=self.string_max_length)\n'�[90m�[39;49;00m
E     �[90m �[39;49;00m             '\n'�[90m�[39;49;00m
E     �[90m �[39;49;00m             'message\n'�[90m�[39;49;00m
E     �[90m �[39;49;00m             '```',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'label': 'Description',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'maxRows': 10,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'name': 'description',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'type': 'textarea',�[90m�[39;49;00m
E     �[90m �[39;49;00m         },�[90m�[39;49;00m
E     �[90m �[39;49;00m         {�[90m�[39;49;00m
E     �[90m �[39;49;00m             'choices': [�[90m�[39;49;00m
E     �[90m �[39;49;00m                 (�[90m�[39;49;00m
E     �[90m �[39;49;00m                     '1',�[90m�[39;49;00m
E     �[90m �[39;49;00m                     'Project 1',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 ),�[90m�[39;49;00m
E     �[90m �[39;49;00m                 (�[90m�[39;49;00m
E     �[90m �[39;49;00m                     '2',�[90m�[39;49;00m
E     �[90m �[39;49;00m                     'Project 2',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 ),�[90m�[39;49;00m
E     �[90m �[39;49;00m             ],�[90m�[39;49;00m
E     �[90m �[39;49;00m             'label': 'Project',�[90m�[39;49;00m
... (25 more lines)
tests/sentry/issues/endpoints/test_project_stacktrace_link.py::ProjectStacktraceLinkTest::test_file_not_found_errorlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/issues/endpoints/test_project_stacktrace_link.py:164: in test_file_not_found_error
    assert response.data["integrations"] == [serialized_integration(self.integration)]
E   AssertionError: assert [{'accountTyp...': '98', ...}] == [{'accountTyp...': '98', ...}]
E     
E     At index 0 diff: �[0m{�[33m'�[39;49;00m�[33mid�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33m98�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33micon�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mdomainName�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33maccountType�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mscopes�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33moutOfDate�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mstatus�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mactive�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mprovider�[39;49;00m�[33m'�[39;49;00m: {�[33m'�[39;49;00m�[33mkey�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mslug�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mcanAdd�[39;49;00m�[33m'�[39;49;00m: �[94mTrue�[39;49;00m, �[33m'�[39;49;00m�[33mcanDisable�[39;49;00m�[33m'�[39;49;00m: �[94mFalse�[39;49;00m, �[33m'�[39;49;00m�[33mfeatures�[39;49;00m�[33m'�[39;49;00m: [�[33m'�[39;49;00m�[33mcommits�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33missue-basic�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mstacktrace-link�[39;49;00m�[33m'�[39;49;00m], �[33m'�[39;49;00m�[33maspects�[39;49;00m�[33m'�[39;49;00m: {}}}�[90m�[39;49;00m != �[0m{�[33m'�[39;49;00m�[33maccountType�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mdomainName�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33micon�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mid�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33m98�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mprovider�[39;49;00m�[33m'�[39;49;00m: {�[33m'�[39;49;00m�[33maspects�[39;49;00m�[33m'�[39;49;00m: {}, �[33m'�[39;49;00m�[33mcanAdd�[39;49;00m�[33m'�[39;49;00m: �[94mTrue�[39;49;00m, �[33m'�[39;49;00m�[33mcanDisable�[39;49;00m�[33m'�[39;49;00m: �[94mFalse�[39;49;00m, �[33m'�[39;49;00m�[33mfeatures�[39;49;00m�[33m'�[39;49;00m: [�[33m'�[39;49;00m�[33mcommits�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33missue-basic�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mstacktrace-link�[39;49;00m�[33m'�[39;49;00m], �[33m'�[39;49;00m�[33mkey�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mslug�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m}, �[33m'�[39;49;00m�[33mscopes�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mstatus�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mactive�[39;49;00m�[33m'�[39;49;00m}�[90m�[39;49;00m
E     
E     Full diff:
E     �[0m�[90m �[39;49;00m [�[90m�[39;49;00m
E     �[90m �[39;49;00m     {�[90m�[39;49;00m
E     �[90m �[39;49;00m         'accountType': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'domainName': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'icon': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'id': '98',�[90m�[39;49;00m
E     �[90m �[39;49;00m         'name': 'Example',�[90m�[39;49;00m
E     �[92m+         'outOfDate': None,�[39;49;00m�[90m�[39;49;00m
E     �[90m �[39;49;00m         'provider': {�[90m�[39;49;00m
E     �[90m �[39;49;00m             'aspects': {},�[90m�[39;49;00m
E     �[90m �[39;49;00m             'canAdd': True,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'canDisable': False,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'features': [�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'commits',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'issue-basic',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'stacktrace-link',�[90m�[39;49;00m
E     �[90m �[39;49;00m             ],�[90m�[39;49;00m
E     �[90m �[39;49;00m             'key': 'example',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'name': 'Example',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'slug': 'example',�[90m�[39;49;00m
E     �[90m �[39;49;00m         },�[90m�[39;49;00m
E     �[90m �[39;49;00m         'scopes': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'status': 'active',�[90m�[39;49;00m
E     �[90m �[39;49;00m     },�[90m�[39;49;00m
E     �[90m �[39;49;00m ]�[90m�[39;49;00m
tests/sentry/issues/endpoints/test_project_stacktrace_link.py::ProjectStacktraceLinkTest::test_stack_root_mismatch_errorlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/issues/endpoints/test_project_stacktrace_link.py:180: in test_stack_root_mismatch_error
    assert response.data["integrations"] == [serialized_integration(self.integration)]
E   AssertionError: assert [{'accountTyp...: '104', ...}] == [{'accountTyp...: '104', ...}]
E     
E     At index 0 diff: �[0m{�[33m'�[39;49;00m�[33mid�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33m104�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33micon�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mdomainName�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33maccountType�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mscopes�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33moutOfDate�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mstatus�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mactive�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mprovider�[39;49;00m�[33m'�[39;49;00m: {�[33m'�[39;49;00m�[33mkey�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mslug�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mcanAdd�[39;49;00m�[33m'�[39;49;00m: �[94mTrue�[39;49;00m, �[33m'�[39;49;00m�[33mcanDisable�[39;49;00m�[33m'�[39;49;00m: �[94mFalse�[39;49;00m, �[33m'�[39;49;00m�[33mfeatures�[39;49;00m�[33m'�[39;49;00m: [�[33m'�[39;49;00m�[33mcommits�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33missue-basic�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mstacktrace-link�[39;49;00m�[33m'�[39;49;00m], �[33m'�[39;49;00m�[33maspects�[39;49;00m�[33m'�[39;49;00m: {}}}�[90m�[39;49;00m != �[0m{�[33m'�[39;49;00m�[33maccountType�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mdomainName�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33micon�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mid�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33m104�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mprovider�[39;49;00m�[33m'�[39;49;00m: {�[33m'�[39;49;00m�[33maspects�[39;49;00m�[33m'�[39;49;00m: {}, �[33m'�[39;49;00m�[33mcanAdd�[39;49;00m�[33m'�[39;49;00m: �[94mTrue�[39;49;00m, �[33m'�[39;49;00m�[33mcanDisable�[39;49;00m�[33m'�[39;49;00m: �[94mFalse�[39;49;00m, �[33m'�[39;49;00m�[33mfeatures�[39;49;00m�[33m'�[39;49;00m: [�[33m'�[39;49;00m�[33mcommits�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33missue-basic�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mstacktrace-link�[39;49;00m�[33m'�[39;49;00m], �[33m'�[39;49;00m�[33mkey�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mslug�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m}, �[33m'�[39;49;00m�[33mscopes�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mstatus�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mactive�[39;49;00m�[33m'�[39;49;00m}�[90m�[39;49;00m
E     
E     Full diff:
E     �[0m�[90m �[39;49;00m [�[90m�[39;49;00m
E     �[90m �[39;49;00m     {�[90m�[39;49;00m
E     �[90m �[39;49;00m         'accountType': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'domainName': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'icon': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'id': '104',�[90m�[39;49;00m
E     �[90m �[39;49;00m         'name': 'Example',�[90m�[39;49;00m
E     �[92m+         'outOfDate': None,�[39;49;00m�[90m�[39;49;00m
E     �[90m �[39;49;00m         'provider': {�[90m�[39;49;00m
E     �[90m �[39;49;00m             'aspects': {},�[90m�[39;49;00m
E     �[90m �[39;49;00m             'canAdd': True,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'canDisable': False,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'features': [�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'commits',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'issue-basic',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'stacktrace-link',�[90m�[39;49;00m
E     �[90m �[39;49;00m             ],�[90m�[39;49;00m
E     �[90m �[39;49;00m             'key': 'example',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'name': 'Example',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'slug': 'example',�[90m�[39;49;00m
E     �[90m �[39;49;00m         },�[90m�[39;49;00m
E     �[90m �[39;49;00m         'scopes': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'status': 'active',�[90m�[39;49;00m
E     �[90m �[39;49;00m     },�[90m�[39;49;00m
E     �[90m �[39;49;00m ]�[90m�[39;49;00m
tests/sentry/issues/endpoints/test_group_integrations.py::GroupIntegrationsTest::test_simple_getlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/issues/endpoints/test_group_integrations.py:29: in test_simple_get
    assert response.data[0] == {
E   AssertionError: assert {'accountType...n': None, ...} == {'accountType...n': None, ...}
E     
E     Omitting 9 identical items, use -vv to show
E     Left contains 1 more item:
E     �[0m{�[33m'�[39;49;00m�[33moutOfDate�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m}�[90m�[39;49;00m
E     
E     Full diff:
E     �[0m�[90m �[39;49;00m {�[90m�[39;49;00m
E     �[90m �[39;49;00m     'accountType': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m     'domainName': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m     'externalIssues': [�[90m�[39;49;00m
E     �[90m �[39;49;00m         {�[90m�[39;49;00m
E     �[90m �[39;49;00m             'description': 'this is an example description',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'displayName': 'display name: APP-123',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'id': '17',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'key': 'APP-123',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'title': 'this is an example title',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'url': 'https://example/issues/APP-123',�[90m�[39;49;00m
E     �[90m �[39;49;00m         },�[90m�[39;49;00m
E     �[90m �[39;49;00m     ],�[90m�[39;49;00m
E     �[90m �[39;49;00m     'icon': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m     'id': '113',�[90m�[39;49;00m
E     �[90m �[39;49;00m     'name': 'Example',�[90m�[39;49;00m
E     �[92m+     'outOfDate': None,�[39;49;00m�[90m�[39;49;00m
E     �[90m �[39;49;00m     'provider': {�[90m�[39;49;00m
E     �[90m �[39;49;00m         'aspects': {},�[90m�[39;49;00m
E     �[90m �[39;49;00m         'canAdd': True,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'canDisable': False,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'features': [�[90m�[39;49;00m
E     �[90m �[39;49;00m             'commits',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'issue-basic',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'stacktrace-link',�[90m�[39;49;00m
E     �[90m �[39;49;00m         ],�[90m�[39;49;00m
E     �[90m �[39;49;00m         'key': 'example',�[90m�[39;49;00m
E     �[90m �[39;49;00m         'name': 'Example',�[90m�[39;49;00m
E     �[90m �[39;49;00m         'slug': 'example',�[90m�[39;49;00m
E     �[90m �[39;49;00m     },�[90m�[39;49;00m
E     �[90m �[39;49;00m     'scopes': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m     'status': 'active',�[90m�[39;49;00m
E     �[90m �[39;49;00m }�[90m�[39;49;00m
tests/sentry/issues/endpoints/test_project_stacktrace_link.py::ProjectStacktraceLinkTest::test_file_no_stack_root_matchlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/issues/endpoints/test_project_stacktrace_link.py:211: in test_file_no_stack_root_match
    assert response.data["integrations"] == [serialized_integration(self.integration)]
E   AssertionError: assert [{'accountTyp...: '119', ...}] == [{'accountTyp...: '119', ...}]
E     
E     At index 0 diff: �[0m{�[33m'�[39;49;00m�[33mid�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33m119�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33micon�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mdomainName�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33maccountType�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mscopes�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33moutOfDate�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mstatus�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mactive�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mprovider�[39;49;00m�[33m'�[39;49;00m: {�[33m'�[39;49;00m�[33mkey�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mslug�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mcanAdd�[39;49;00m�[33m'�[39;49;00m: �[94mTrue�[39;49;00m, �[33m'�[39;49;00m�[33mcanDisable�[39;49;00m�[33m'�[39;49;00m: �[94mFalse�[39;49;00m, �[33m'�[39;49;00m�[33mfeatures�[39;49;00m�[33m'�[39;49;00m: [�[33m'�[39;49;00m�[33mcommits�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33missue-basic�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mstacktrace-link�[39;49;00m�[33m'�[39;49;00m], �[33m'�[39;49;00m�[33maspects�[39;49;00m�[33m'�[39;49;00m: {}}}�[90m�[39;49;00m != �[0m{�[33m'�[39;49;00m�[33maccountType�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mdomainName�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33micon�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mid�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33m119�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mprovider�[39;49;00m�[33m'�[39;49;00m: {�[33m'�[39;49;00m�[33maspects�[39;49;00m�[33m'�[39;49;00m: {}, �[33m'�[39;49;00m�[33mcanAdd�[39;49;00m�[33m'�[39;49;00m: �[94mTrue�[39;49;00m, �[33m'�[39;49;00m�[33mcanDisable�[39;49;00m�[33m'�[39;49;00m: �[94mFalse�[39;49;00m, �[33m'�[39;49;00m�[33mfeatures�[39;49;00m�[33m'�[39;49;00m: [�[33m'�[39;49;00m�[33mcommits�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33missue-basic�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mstacktrace-link�[39;49;00m�[33m'�[39;49;00m], �[33m'�[39;49;00m�[33mkey�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mslug�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m}, �[33m'�[39;49;00m�[33mscopes�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mstatus�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mactive�[39;49;00m�[33m'�[39;49;00m}�[90m�[39;49;00m
E     
E     Full diff:
E     �[0m�[90m �[39;49;00m [�[90m�[39;49;00m
E     �[90m �[39;49;00m     {�[90m�[39;49;00m
E     �[90m �[39;49;00m         'accountType': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'domainName': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'icon': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'id': '119',�[90m�[39;49;00m
E     �[90m �[39;49;00m         'name': 'Example',�[90m�[39;49;00m
E     �[92m+         'outOfDate': None,�[39;49;00m�[90m�[39;49;00m
E     �[90m �[39;49;00m         'provider': {�[90m�[39;49;00m
E     �[90m �[39;49;00m             'aspects': {},�[90m�[39;49;00m
E     �[90m �[39;49;00m             'canAdd': True,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'canDisable': False,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'features': [�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'commits',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'issue-basic',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'stacktrace-link',�[90m�[39;49;00m
E     �[90m �[39;49;00m             ],�[90m�[39;49;00m
E     �[90m �[39;49;00m             'key': 'example',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'name': 'Example',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'slug': 'example',�[90m�[39;49;00m
E     �[90m �[39;49;00m         },�[90m�[39;49;00m
E     �[90m �[39;49;00m         'scopes': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'status': 'active',�[90m�[39;49;00m
E     �[90m �[39;49;00m     },�[90m�[39;49;00m
E     �[90m �[39;49;00m ]�[90m�[39;49;00m
tests/sentry/issues/endpoints/test_project_stacktrace_link.py::ProjectStacktraceLinkTest::test_no_configslog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/issues/endpoints/test_project_stacktrace_link.py:148: in test_no_configs
    assert response.data == {
E   AssertionError: assert {'config': No...rceUrl': None} == {'config': No...rceUrl': None}
E     
E     Omitting 3 identical items, use -vv to show
E     Differing items:
E     �[0m{�[33m'�[39;49;00m�[33mintegrations�[39;49;00m�[33m'�[39;49;00m: [{�[33m'�[39;49;00m�[33maccountType�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mdomainName�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33micon�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mid�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33m125�[39;49;00m�[33m'�[39;49;00m, ...}]}�[90m�[39;49;00m != �[0m{�[33m'�[39;49;00m�[33mintegrations�[39;49;00m�[33m'�[39;49;00m: [{�[33m'�[39;49;00m�[33maccountType�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mdomainName�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33micon�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mid�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33m125�[39;49;00m�[33m'�[39;49;00m, ...}]}�[90m�[39;49;00m
E     
E     Full diff:
E     �[0m�[90m �[39;49;00m {�[90m�[39;49;00m
E     �[90m �[39;49;00m     'config': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m     'error': 'no_code_mappings_for_project',�[90m�[39;49;00m
E     �[90m �[39;49;00m     'integrations': [�[90m�[39;49;00m
E     �[90m �[39;49;00m         {�[90m�[39;49;00m
E     �[90m �[39;49;00m             'accountType': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'domainName': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'icon': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'id': '125',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'name': 'Example',�[90m�[39;49;00m
E     �[92m+             'outOfDate': None,�[39;49;00m�[90m�[39;49;00m
E     �[90m �[39;49;00m             'provider': {�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'aspects': {},�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'canAdd': True,�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'canDisable': False,�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'features': [�[90m�[39;49;00m
E     �[90m �[39;49;00m                     'commits',�[90m�[39;49;00m
E     �[90m �[39;49;00m                     'issue-basic',�[90m�[39;49;00m
E     �[90m �[39;49;00m                     'stacktrace-link',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 ],�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'key': 'example',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'name': 'Example',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'slug': 'example',�[90m�[39;49;00m
E     �[90m �[39;49;00m             },�[90m�[39;49;00m
E     �[90m �[39;49;00m             'scopes': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'status': 'active',�[90m�[39;49;00m
E     �[90m �[39;49;00m         },�[90m�[39;49;00m
E     �[90m �[39;49;00m     ],�[90m�[39;49;00m
E     �[90m �[39;49;00m     'sourceUrl': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m }�[90m�[39;49;00m
tests/sentry/issues/endpoints/test_project_stacktrace_link.py::ProjectStacktraceLinkTestMobile::test_cocoa_failed_stack_root_mismatchlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/issues/endpoints/test_project_stacktrace_link.py:340: in test_cocoa_failed_stack_root_mismatch
    assert response.data["integrations"] == [serialized_integration(self.integration)]
E   AssertionError: assert [{'accountTyp...: '133', ...}] == [{'accountTyp...: '133', ...}]
E     
E     At index 0 diff: �[0m{�[33m'�[39;49;00m�[33mid�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33m133�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33micon�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mdomainName�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33maccountType�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mscopes�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33moutOfDate�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mstatus�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mactive�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mprovider�[39;49;00m�[33m'�[39;49;00m: {�[33m'�[39;49;00m�[33mkey�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mslug�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mcanAdd�[39;49;00m�[33m'�[39;49;00m: �[94mTrue�[39;49;00m, �[33m'�[39;49;00m�[33mcanDisable�[39;49;00m�[33m'�[39;49;00m: �[94mFalse�[39;49;00m, �[33m'�[39;49;00m�[33mfeatures�[39;49;00m�[33m'�[39;49;00m: [�[33m'�[39;49;00m�[33mcommits�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33missue-basic�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mstacktrace-link�[39;49;00m�[33m'�[39;49;00m], �[33m'�[39;49;00m�[33maspects�[39;49;00m�[33m'�[39;49;00m: {}}}�[90m�[39;49;00m != �[0m{�[33m'�[39;49;00m�[33maccountType�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mdomainName�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33micon�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mid�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33m133�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mprovider�[39;49;00m�[33m'�[39;49;00m: {�[33m'�[39;49;00m�[33maspects�[39;49;00m�[33m'�[39;49;00m: {}, �[33m'�[39;49;00m�[33mcanAdd�[39;49;00m�[33m'�[39;49;00m: �[94mTrue�[39;49;00m, �[33m'�[39;49;00m�[33mcanDisable�[39;49;00m�[33m'�[39;49;00m: �[94mFalse�[39;49;00m, �[33m'�[39;49;00m�[33mfeatures�[39;49;00m�[33m'�[39;49;00m: [�[33m'�[39;49;00m�[33mcommits�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33missue-basic�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mstacktrace-link�[39;49;00m�[33m'�[39;49;00m], �[33m'�[39;49;00m�[33mkey�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mslug�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m}, �[33m'�[39;49;00m�[33mscopes�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mstatus�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mactive�[39;49;00m�[33m'�[39;49;00m}�[90m�[39;49;00m
E     
E     Full diff:
E     �[0m�[90m �[39;49;00m [�[90m�[39;49;00m
E     �[90m �[39;49;00m     {�[90m�[39;49;00m
E     �[90m �[39;49;00m         'accountType': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'domainName': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'icon': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'id': '133',�[90m�[39;49;00m
E     �[90m �[39;49;00m         'name': 'Example',�[90m�[39;49;00m
E     �[92m+         'outOfDate': None,�[39;49;00m�[90m�[39;49;00m
E     �[90m �[39;49;00m         'provider': {�[90m�[39;49;00m
E     �[90m �[39;49;00m             'aspects': {},�[90m�[39;49;00m
E     �[90m �[39;49;00m             'canAdd': True,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'canDisable': False,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'features': [�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'commits',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'issue-basic',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'stacktrace-link',�[90m�[39;49;00m
E     �[90m �[39;49;00m             ],�[90m�[39;49;00m
E     �[90m �[39;49;00m             'key': 'example',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'name': 'Example',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'slug': 'example',�[90m�[39;49;00m
E     �[90m �[39;49;00m         },�[90m�[39;49;00m
E     �[90m �[39;49;00m         'scopes': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'status': 'active',�[90m�[39;49;00m
E     �[90m �[39;49;00m     },�[90m�[39;49;00m
E     �[90m �[39;49;00m ]�[90m�[39;49;00m
tests/sentry/issues/endpoints/test_project_stacktrace_link.py::ProjectStacktraceLinkTestMobile::test_munge_android_failed_stack_root_mismatchlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/issues/endpoints/test_project_stacktrace_link.py:271: in test_munge_android_failed_stack_root_mismatch
    assert response.data["integrations"] == [serialized_integration(self.integration)]
E   AssertionError: assert [{'accountTyp...: '140', ...}] == [{'accountTyp...: '140', ...}]
E     
E     At index 0 diff: �[0m{�[33m'�[39;49;00m�[33mid�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33m140�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33micon�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mdomainName�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33maccountType�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mscopes�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33moutOfDate�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mstatus�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mactive�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mprovider�[39;49;00m�[33m'�[39;49;00m: {�[33m'�[39;49;00m�[33mkey�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mslug�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mcanAdd�[39;49;00m�[33m'�[39;49;00m: �[94mTrue�[39;49;00m, �[33m'�[39;49;00m�[33mcanDisable�[39;49;00m�[33m'�[39;49;00m: �[94mFalse�[39;49;00m, �[33m'�[39;49;00m�[33mfeatures�[39;49;00m�[33m'�[39;49;00m: [�[33m'�[39;49;00m�[33mcommits�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33missue-basic�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mstacktrace-link�[39;49;00m�[33m'�[39;49;00m], �[33m'�[39;49;00m�[33maspects�[39;49;00m�[33m'�[39;49;00m: {}}}�[90m�[39;49;00m != �[0m{�[33m'�[39;49;00m�[33maccountType�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mdomainName�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33micon�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mid�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33m140�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mprovider�[39;49;00m�[33m'�[39;49;00m: {�[33m'�[39;49;00m�[33maspects�[39;49;00m�[33m'�[39;49;00m: {}, �[33m'�[39;49;00m�[33mcanAdd�[39;49;00m�[33m'�[39;49;00m: �[94mTrue�[39;49;00m, �[33m'�[39;49;00m�[33mcanDisable�[39;49;00m�[33m'�[39;49;00m: �[94mFalse�[39;49;00m, �[33m'�[39;49;00m�[33mfeatures�[39;49;00m�[33m'�[39;49;00m: [�[33m'�[39;49;00m�[33mcommits�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33missue-basic�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mstacktrace-link�[39;49;00m�[33m'�[39;49;00m], �[33m'�[39;49;00m�[33mkey�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mname�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mExample�[39;49;00m�[33m'�[39;49;00m, �[33m'�[39;49;00m�[33mslug�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mexample�[39;49;00m�[33m'�[39;49;00m}, �[33m'�[39;49;00m�[33mscopes�[39;49;00m�[33m'�[39;49;00m: �[94mNone�[39;49;00m, �[33m'�[39;49;00m�[33mstatus�[39;49;00m�[33m'�[39;49;00m: �[33m'�[39;49;00m�[33mactive�[39;49;00m�[33m'�[39;49;00m}�[90m�[39;49;00m
E     
E     Full diff:
E     �[0m�[90m �[39;49;00m [�[90m�[39;49;00m
E     �[90m �[39;49;00m     {�[90m�[39;49;00m
E     �[90m �[39;49;00m         'accountType': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'domainName': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'icon': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'id': '140',�[90m�[39;49;00m
E     �[90m �[39;49;00m         'name': 'Example',�[90m�[39;49;00m
E     �[92m+         'outOfDate': None,�[39;49;00m�[90m�[39;49;00m
E     �[90m �[39;49;00m         'provider': {�[90m�[39;49;00m
E     �[90m �[39;49;00m             'aspects': {},�[90m�[39;49;00m
E     �[90m �[39;49;00m             'canAdd': True,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'canDisable': False,�[90m�[39;49;00m
E     �[90m �[39;49;00m             'features': [�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'commits',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'issue-basic',�[90m�[39;49;00m
E     �[90m �[39;49;00m                 'stacktrace-link',�[90m�[39;49;00m
E     �[90m �[39;49;00m             ],�[90m�[39;49;00m
E     �[90m �[39;49;00m             'key': 'example',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'name': 'Example',�[90m�[39;49;00m
E     �[90m �[39;49;00m             'slug': 'example',�[90m�[39;49;00m
E     �[90m �[39;49;00m         },�[90m�[39;49;00m
E     �[90m �[39;49;00m         'scopes': None,�[90m�[39;49;00m
E     �[90m �[39;49;00m         'status': 'active',�[90m�[39;49;00m
E     �[90m �[39;49;00m     },�[90m�[39;49;00m
E     �[90m �[39;49;00m ]�[90m�[39;49;00m

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Scope: Backend Automatically applied to PRs that change backend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant