From a3d3fe4ada81897f8529fb47584971193fb750d7 Mon Sep 17 00:00:00 2001 From: kerry Date: Wed, 16 Sep 2026 23:57:44 +0000 Subject: [PATCH] fix(ci): pin the auto-merge request to the evaluated head sha Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- .github/scripts/auto_merge_price_sync.py | 11 +++++------ tests/test_litellm/test_auto_merge_price_sync.py | 7 +++++++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/scripts/auto_merge_price_sync.py b/.github/scripts/auto_merge_price_sync.py index 2541a59812b..b0b8cb472e0 100644 --- a/.github/scripts/auto_merge_price_sync.py +++ b/.github/scripts/auto_merge_price_sync.py @@ -418,13 +418,12 @@ def _gather_inputs( ) +def merge_request_body(pr: PullRequest) -> dict[str, str]: + return {"merge_method": "merge", "commit_title": f"{pr.title} (#{pr.number})", "sha": pr.head_sha} + + def _merge(token: str, repo: str, pr: PullRequest) -> None: - status, _ = _request_allow_fail( - token, - "PUT", - f"/repos/{repo}/pulls/{pr.number}/merge", - {"merge_method": "merge", "commit_title": f"{pr.title} (#{pr.number})"}, - ) + status, _ = _request_allow_fail(token, "PUT", f"/repos/{repo}/pulls/{pr.number}/merge", merge_request_body(pr)) if status in (200, 405, 409): print(f"auto-merge-price-sync: PR #{pr.number} merge call returned {status}") return diff --git a/tests/test_litellm/test_auto_merge_price_sync.py b/tests/test_litellm/test_auto_merge_price_sync.py index 5f54483ccc0..cc174e801cf 100644 --- a/tests/test_litellm/test_auto_merge_price_sync.py +++ b/tests/test_litellm/test_auto_merge_price_sync.py @@ -300,6 +300,13 @@ def test_superseded_changes_requested_merges() -> None: assert verdict.merge +def test_merge_request_pins_evaluated_head_sha() -> None: + body: Final = merger.merge_request_body(_pr(number=7, title="sync prices")) + assert body["sha"] == HEAD_SHA + assert body["merge_method"] == "merge" + assert body["commit_title"] == "sync prices (#7)" + + def test_classifier_cost_map_set_runs() -> None: assert merger._classify(["model_prices_and_context_window.json", "tests/test_litellm/test_x.py"]) == "run"