From 777877406f35e52b6510ca25921282103d9db401 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 Jul 2026 11:44:32 +0200 Subject: [PATCH] Run PR reviews synchronously (#785) --- actions/review_pr.py | 2 +- tests/test_first_interaction.py | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/actions/review_pr.py b/actions/review_pr.py index 1d1fb16..d4fb005 100644 --- a/actions/review_pr.py +++ b/actions/review_pr.py @@ -267,7 +267,7 @@ def generate_pr_review( } ], retries=0, - background=True, + # Do not pass background=True; queued background reviews can consume the full 900s poll timeout. ) # Sanitize leaked tool-citation tokens from model output diff --git a/tests/test_first_interaction.py b/tests/test_first_interaction.py index 52a5220..4a2b2a2 100644 --- a/tests/test_first_interaction.py +++ b/tests/test_first_interaction.py @@ -2,6 +2,7 @@ from unittest.mock import MagicMock, patch +from actions import review_pr from actions.first_interaction import get_event_content, get_first_interaction_response, get_relevant_labels @@ -96,3 +97,24 @@ def test_get_first_interaction_response(mock_get_response): assert response == "Thank you for your issue" mock_get_response.assert_called_once() + + +@patch("actions.review_pr.get_response") +def test_generate_pr_review_uses_synchronous_response(mock_get_response): + """Test PR reviews avoid background polling for code diffs.""" + mock_get_response.return_value = {"comments": [], "summary": "LGTM"} + diff = """diff --git a/test.py b/test.py +--- a/test.py ++++ b/test.py +@@ -1 +1 @@ +-old = True ++old = False +""" + + review = review_pr.generate_pr_review("ultralytics/actions", diff, "Test PR", "") + + assert review["summary"] == "LGTM" + mock_get_response.assert_called_once() + kwargs = mock_get_response.call_args.kwargs + assert "background" not in kwargs + assert kwargs["tools"][0]["type"] == "web_search"