Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/sentry/tasks/commit_context.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
from sentry.locks import locks
from sentry.models.commit import Commit
from sentry.models.commitauthor import CommitAuthor
from sentry.models.group import Group
from sentry.models.groupowner import GroupOwner, GroupOwnerType
from sentry.models.options.organization_option import OrganizationOption
from sentry.models.project import Project
Expand Down Expand Up @@ -280,8 +281,10 @@ def process_commit_context(
extra={"organization_id": project.organization_id},
)
repo = Repository.objects.filter(id=commit.repository_id)
group = Group.objects.get_from_cache(id=group_id)
if (
installation is not None
group.level is not logging.INFO # Don't comment on info level issues
and installation is not None
and repo.exists()
and repo.get().provider == "integrations:github"
):
Expand Down
1 change: 1 addition & 0 deletions src/sentry/tasks/integrations/github/pr_comment.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ def get_top_5_issues_by_count(issue_list: list[int], project: Project) -> list[d
Condition(Column("group_id"), Op.IN, issue_list),
Condition(Column("timestamp"), Op.GTE, datetime.now() - timedelta(days=30)),
Condition(Column("timestamp"), Op.LT, datetime.now()),
Condition(Column("level"), Op.NEQ, "info"),
]
)
.set_orderby([OrderBy(Column("event_count"), Direction.DESC)])
Expand Down
71 changes: 71 additions & 0 deletions tests/sentry/tasks/integrations/github/test_pr_comment.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import logging
from datetime import datetime, timedelta, timezone
from unittest.mock import patch

Expand Down Expand Up @@ -267,6 +268,76 @@ def test_over_5_issues(self):
res = get_top_5_issues_by_count(issue_ids, self.project)
assert len(res) == 5

def test_ignore_info_level_issues(self):
group1 = [
self.store_event(
{
"fingerprint": ["group-1"],
"timestamp": iso_format(before_now(days=1)),
"level": logging.INFO,
},
project_id=self.project.id,
)
for _ in range(3)
][0].group.id
group2 = [
self.store_event(
{"fingerprint": ["group-2"], "timestamp": iso_format(before_now(days=1))},
project_id=self.project.id,
)
for _ in range(6)
][0].group.id
group3 = [
self.store_event(
{
"fingerprint": ["group-3"],
"timestamp": iso_format(before_now(days=1)),
"level": logging.INFO,
},
project_id=self.project.id,
)
for _ in range(4)
][0].group.id
res = get_top_5_issues_by_count([group1, group2, group3], self.project)
assert [issue["group_id"] for issue in res] == [group2]

def test_do_not_ignore_other_issues(self):
group1 = [
self.store_event(
{
"fingerprint": ["group-1"],
"timestamp": iso_format(before_now(days=1)),
"level": logging.ERROR,
},
project_id=self.project.id,
)
for _ in range(3)
][0].group.id
group2 = [
self.store_event(
{
"fingerprint": ["group-2"],
"timestamp": iso_format(before_now(days=1)),
"level": logging.INFO,
},
project_id=self.project.id,
)
for _ in range(6)
][0].group.id
group3 = [
self.store_event(
{
"fingerprint": ["group-3"],
"timestamp": iso_format(before_now(days=1)),
"level": logging.DEBUG,
},
project_id=self.project.id,
)
for _ in range(4)
][0].group.id
res = get_top_5_issues_by_count([group1, group2, group3], self.project)
assert [issue["group_id"] for issue in res] == [group3, group1]


@region_silo_test
class TestCommentBuilderQueries(GithubCommentTestCase):
Expand Down
26 changes: 26 additions & 0 deletions tests/sentry/tasks/test_commit_context.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import logging
from datetime import datetime, timedelta
from datetime import timezone as datetime_timezone
from unittest.mock import patch
Expand Down Expand Up @@ -996,6 +997,31 @@ def test_gh_comment_pr_too_old(self, get_jwt, mock_comment_workflow, mock_get_co
assert not mock_comment_workflow.called
assert len(PullRequestCommit.objects.all()) == 0

@patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
@responses.activate
def test_gh_comment_pr_info_level_issue(
self, get_jwt, mock_comment_workflow, mock_get_commit_context
):
"""No comment on pr that's has info level issue"""
mock_get_commit_context.return_value = [self.blame]
self.pull_request.date_added = before_now(days=1)
self.pull_request.save()

self.add_responses()
self.event.group.update(level=logging.INFO)

with self.tasks():
event_frames = get_frame_paths(self.event)
process_commit_context(
event_id=self.event.event_id,
event_platform=self.event.platform,
event_frames=event_frames,
group_id=self.event.group_id,
project_id=self.event.project_id,
)
assert not mock_comment_workflow.called
assert len(PullRequestCommit.objects.all()) == 0

@patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
@responses.activate
def test_gh_comment_repeat_issue(self, get_jwt, mock_comment_workflow, mock_get_commit_context):
Expand Down