diff --git a/bots/pr/src/main/java/org/openjdk/skara/bots/pr/CheckWorkItem.java b/bots/pr/src/main/java/org/openjdk/skara/bots/pr/CheckWorkItem.java index ab38f1c62..3ee2da507 100644 --- a/bots/pr/src/main/java/org/openjdk/skara/bots/pr/CheckWorkItem.java +++ b/bots/pr/src/main/java/org/openjdk/skara/bots/pr/CheckWorkItem.java @@ -146,6 +146,11 @@ public void run(Path scratchPath) { // Filter out the active reviews var activeReviews = PullRequestInstance.filterActiveReviews(allReviews); if (!currentCheckValid(census, comments, activeReviews, labels)) { + if (labels.contains("integrated")) { + log.info("Skipping check of integrated PR"); + return; + } + try { var prInstance = new PullRequestInstance(scratchPath.resolve("pr"), pr); CheckRun.execute(this, pr, prInstance, comments, allReviews, activeReviews, labels, census, blockingLabels); diff --git a/bots/pr/src/main/java/org/openjdk/skara/bots/pr/CommandWorkItem.java b/bots/pr/src/main/java/org/openjdk/skara/bots/pr/CommandWorkItem.java index 24fcf2e30..c4105751d 100644 --- a/bots/pr/src/main/java/org/openjdk/skara/bots/pr/CommandWorkItem.java +++ b/bots/pr/src/main/java/org/openjdk/skara/bots/pr/CommandWorkItem.java @@ -22,7 +22,6 @@ */ package org.openjdk.skara.bots.pr; -import org.openjdk.skara.bot.WorkItem; import org.openjdk.skara.host.*; import java.io.*; @@ -137,8 +136,12 @@ private void processCommand(PullRequest pr, CensusInstance censusInstance, Path public void run(Path scratchPath) { log.info("Looking for merge commands"); - var comments = pr.getComments(); + if (pr.getLabels().contains("integrated")) { + log.info("Skip checking for commands in integrated PR"); + return; + } + var comments = pr.getComments(); var unprocessedCommands = findCommandComments(comments); if (unprocessedCommands.isEmpty()) { log.fine("No new merge commands found, stopping further processing"); diff --git a/bots/pr/src/main/java/org/openjdk/skara/bots/pr/IntegrateCommand.java b/bots/pr/src/main/java/org/openjdk/skara/bots/pr/IntegrateCommand.java index 3de48f48b..12633062c 100644 --- a/bots/pr/src/main/java/org/openjdk/skara/bots/pr/IntegrateCommand.java +++ b/bots/pr/src/main/java/org/openjdk/skara/bots/pr/IntegrateCommand.java @@ -110,6 +110,7 @@ public void handle(PullRequest pr, CensusInstance censusInstance, Path scratchPa prInstance.localRepo().push(rebasedHash.get(), pr.repository().getUrl(), pr.getTargetRef()); pr.setState(PullRequest.State.CLOSED); pr.addLabel("integrated"); + pr.removeLabel("ready"); } } catch (Exception e) { diff --git a/bots/pr/src/main/java/org/openjdk/skara/bots/pr/SponsorCommand.java b/bots/pr/src/main/java/org/openjdk/skara/bots/pr/SponsorCommand.java index fb1a0d383..0b3c29b84 100644 --- a/bots/pr/src/main/java/org/openjdk/skara/bots/pr/SponsorCommand.java +++ b/bots/pr/src/main/java/org/openjdk/skara/bots/pr/SponsorCommand.java @@ -80,6 +80,8 @@ public void handle(PullRequest pr, CensusInstance censusInstance, Path scratchPa prInstance.localRepo().push(rebasedHash.get(), pr.repository().getUrl(), pr.getTargetRef()); pr.setState(PullRequest.State.CLOSED); pr.addLabel("integrated"); + pr.removeLabel("sponsor"); + pr.removeLabel("ready"); } } catch (IOException e) { log.throwing("SponsorCommand", "handle", e); diff --git a/bots/pr/src/test/java/org/openjdk/skara/bots/pr/IntegrateTests.java b/bots/pr/src/test/java/org/openjdk/skara/bots/pr/IntegrateTests.java index ac8f18c4e..c59b89d97 100644 --- a/bots/pr/src/test/java/org/openjdk/skara/bots/pr/IntegrateTests.java +++ b/bots/pr/src/test/java/org/openjdk/skara/bots/pr/IntegrateTests.java @@ -43,9 +43,11 @@ void simpleMerge(TestInfo testInfo) throws IOException { var author = credentials.getHostedRepository(); var integrator = credentials.getHostedRepository(); + var reviewer = credentials.getHostedRepository(); var censusBuilder = credentials.getCensusBuilder() .addCommitter(author.host().getCurrentUserDetails().id()) - .addReviewer(integrator.host().getCurrentUserDetails().id()); + .addReviewer(integrator.host().getCurrentUserDetails().id()) + .addReviewer(reviewer.host().getCurrentUserDetails().id()); var mergeBot = new PullRequestBot(integrator, censusBuilder.build(), "master"); // Populate the projects repository @@ -88,6 +90,9 @@ void simpleMerge(TestInfo testInfo) throws IOException { assertEquals("Generated Committer 1", headCommit.committer().name()); assertEquals("integrationcommitter1@openjdk.java.net", headCommit.committer().email()); assertTrue(pr.getLabels().contains("integrated")); + + // Ready label should have been removed + assertFalse(pr.getLabels().contains("ready")); } } diff --git a/bots/pr/src/test/java/org/openjdk/skara/bots/pr/SponsorTests.java b/bots/pr/src/test/java/org/openjdk/skara/bots/pr/SponsorTests.java index 59685f7f3..0c819b9b7 100644 --- a/bots/pr/src/test/java/org/openjdk/skara/bots/pr/SponsorTests.java +++ b/bots/pr/src/test/java/org/openjdk/skara/bots/pr/SponsorTests.java @@ -111,6 +111,8 @@ private void runSponsortest(TestInfo testInfo, boolean isAuthor) throws IOExcept assertEquals("Generated Reviewer 1", headCommit.committer().name()); assertEquals("integrationreviewer1@openjdk.java.net", headCommit.committer().email()); assertTrue(pr.getLabels().contains("integrated")); + assertFalse(pr.getLabels().contains("ready")); + assertFalse(pr.getLabels().contains("sponsor")); } } @@ -303,11 +305,12 @@ void sponsorAfterChanges(TestInfo testInfo) throws IOException { // Flag it as ready for integration again pr.addComment("/integrate"); TestBotRunner.runPeriodicItems(mergeBot); + assertTrue(pr.getLabels().contains("sponsor")); // It should now be possible to sponsor reviewerPr.addComment("/sponsor"); TestBotRunner.runPeriodicItems(mergeBot); - assertTrue(pr.getLabels().contains("sponsor")); + assertFalse(pr.getLabels().contains("sponsor")); // The bot should have pushed the commit var pushed = pr.getComments().stream()