2020import org .kohsuke .github .GHWorkflowRun ;
2121import org .kohsuke .github .PagedIterable ;
2222
23+ import io .quarkus .bot .util .GHPullRequests ;
24+
2325/**
2426 * Selects the latest rerunnable workflow runs for a pull request head.
2527 */
@@ -48,8 +50,9 @@ RetestWorkflowSelection selectWorkflowRuns(GHPullRequest pullRequest) throws IOE
4850 private static PullRequestHeadContext pullRequestHeadContext (GHPullRequest pullRequest ) throws IOException {
4951 GHCommitPointer pullRequestHead = pullRequest .getHead ();
5052 GHRepository pullRequestHeadRepository = pullRequestHead .getRepository ();
51- boolean ambiguousPullRequestHead = matchingPullRequestsForHead (pullRequest , pullRequestHead ,
52- pullRequestHeadRepository ).size () > 1 ;
53+ boolean ambiguousPullRequestHead = pullRequestHeadRepository != null
54+ && GHPullRequests .matchingHeadPullRequests (pullRequest .getRepository (), pullRequestHeadRepository ,
55+ pullRequestHead .getRef (), pullRequestHead .getSha (), GHIssueState .ALL ).size () > 1 ;
5356 return new PullRequestHeadContext (pullRequestHead , pullRequestHeadRepository , ambiguousPullRequestHead );
5457 }
5558
@@ -127,7 +130,7 @@ private static boolean matchesPullRequestHead(GHWorkflowRun workflowRun, PullReq
127130 if (!headContext .pullRequestHead ().getRef ().equals (workflowRun .getHeadBranch ())) {
128131 return false ;
129132 }
130- return isSameRepository (headContext .pullRequestHeadRepository (), workflowRun .getHeadRepository ());
133+ return GHPullRequests . isSameRepository (headContext .pullRequestHeadRepository (), workflowRun .getHeadRepository ());
131134 }
132135
133136 private static boolean isAssociatedWithCurrentPullRequest (List <GHPullRequest > associatedPullRequests ,
@@ -221,50 +224,6 @@ private static boolean hasFailedLatestJob(GHWorkflowRun workflowRun) {
221224 return false ;
222225 }
223226
224- private static boolean isSameRepository (GHRepository left , GHRepository right ) {
225- if (left == null || right == null ) {
226- return false ;
227- }
228-
229- String leftFullName = left .getFullName ();
230- String rightFullName = right .getFullName ();
231- if (leftFullName == null || rightFullName == null ) {
232- return false ;
233- }
234-
235- return leftFullName .equals (rightFullName );
236- }
237-
238- private static List <GHPullRequest > matchingPullRequestsForHead (GHPullRequest pullRequest ,
239- GHCommitPointer pullRequestHead ,
240- GHRepository pullRequestHeadRepository ) throws IOException {
241- if (pullRequestHeadRepository == null ) {
242- return List .of (pullRequest );
243- }
244-
245- String fullyQualifiedBranchName = pullRequestHeadRepository .getOwnerName () + ":" + pullRequestHead .getRef ();
246- List <GHPullRequest > matchingPullRequests = new ArrayList <>();
247-
248- for (GHPullRequest candidatePullRequest : pullRequest .getRepository ().queryPullRequests ()
249- .state (GHIssueState .ALL )
250- .head (fullyQualifiedBranchName )
251- .list ()) {
252- if (!pullRequestHead .getRef ().equals (candidatePullRequest .getHead ().getRef ())) {
253- continue ;
254- }
255- if (!pullRequestHead .getSha ().equals (candidatePullRequest .getHead ().getSha ())) {
256- continue ;
257- }
258- if (!isSameRepository (pullRequestHeadRepository , candidatePullRequest .getHead ().getRepository ())) {
259- continue ;
260- }
261-
262- matchingPullRequests .add (candidatePullRequest );
263- }
264-
265- return matchingPullRequests ;
266- }
267-
268227 private static String workflowIdentity (GHWorkflowRun workflowRun , String event ) {
269228 if (workflowRun .getWorkflowId () > 0 ) {
270229 return "workflow-id:" + workflowRun .getWorkflowId () + ":event:" + event ;
@@ -275,7 +234,8 @@ private static String workflowIdentity(GHWorkflowRun workflowRun, String event)
275234 return "workflow-url:" + workflowUrl + ":event:" + event ;
276235 }
277236
278- return event + "::" + workflowRun .getName () + "::" + workflowRun .getRunNumber ();
237+ throw RetestCommandException .unableToInspectWorkflowRuns (
238+ new IllegalStateException ("Workflow run #" + workflowRun .getId () + " is missing workflow identity." ));
279239 }
280240
281241 private record PullRequestHeadContext (GHCommitPointer pullRequestHead , GHRepository pullRequestHeadRepository ,
0 commit comments