diff --git a/bots/mlbridge/src/main/java/org/openjdk/skara/bots/mlbridge/ReviewArchive.java b/bots/mlbridge/src/main/java/org/openjdk/skara/bots/mlbridge/ReviewArchive.java index fe62f1785..9994b114f 100644 --- a/bots/mlbridge/src/main/java/org/openjdk/skara/bots/mlbridge/ReviewArchive.java +++ b/bots/mlbridge/src/main/java/org/openjdk/skara/bots/mlbridge/ReviewArchive.java @@ -137,7 +137,7 @@ private List generateArchiveItems(List sentEmails, Repositor // Check if we're at a revision not previously reported var baseHash = PullRequestUtils.baseHash(pr, localRepo); - if (!baseHash.equals(lastBase) || !pr.headHash().equals(lastHead)) { + if (!pr.isDraft() && (!baseHash.equals(lastBase) || !pr.headHash().equals(lastHead))) { if (generated.isEmpty()) { var first = ArchiveItem.from(pr, localRepo, hostUserToEmailAuthor, issueTracker, issuePrefix, webrevGenerator, webrevNotification, pr.createdAt(), pr.updatedAt(), baseHash, pr.headHash(), subjectPrefix, threadPrefix); generated.add(first); diff --git a/bots/mlbridge/src/test/java/org/openjdk/skara/bots/mlbridge/MailingListBridgeBotTests.java b/bots/mlbridge/src/test/java/org/openjdk/skara/bots/mlbridge/MailingListBridgeBotTests.java index 3e45c924b..f8f9e2bcf 100644 --- a/bots/mlbridge/src/test/java/org/openjdk/skara/bots/mlbridge/MailingListBridgeBotTests.java +++ b/bots/mlbridge/src/test/java/org/openjdk/skara/bots/mlbridge/MailingListBridgeBotTests.java @@ -3625,6 +3625,36 @@ void notArchiveDraftPR(TestInfo testInfo) throws IOException { assertEquals(5, archiveContainsCount(archiveFolder.path(), "RFR: 1234: This is a pull request")); assertEquals(1, archiveContainsCount(archiveFolder.path(), "This is a comment before making")); assertEquals(1, archiveContainsCount(archiveFolder.path(), "This is a comment after making")); + + // Push a new commit before making it as draft. + var secondHash = CheckableRepository.appendAndCommit(localRepo, "Second change", "Change msg"); + localRepo.push(secondHash, author.url(), "edit", true); + + // Make it as draft again. + pr.makeDraft(); + + // Push a new commit after making it as draft. + var thirdHash = CheckableRepository.appendAndCommit(localRepo, "Third change", "Change msg"); + localRepo.push(thirdHash, author.url(), "edit", true); + + // Run another archive pass. + TestBotRunner.runPeriodicItems(mlBot); + + // The archive shouldn't contain any new commit. + Repository.materialize(archiveFolder.path(), archive.url(), "master"); + assertEquals(5, archiveContainsCount(archiveFolder.path(), "RFR: 1234: This is a pull request")); + assertFalse(archiveContains(archiveFolder.path(), "RFR: 1234: This is a pull request \\[v2\\]")); + + // Make it as not draft again. + pr.makeNotDraft(); + + // Run another archive pass. + TestBotRunner.runPeriodicItems(mlBot); + + // The archive should now contain all the comments. + Repository.materialize(archiveFolder.path(), archive.url(), "master"); + assertEquals(6, archiveContainsCount(archiveFolder.path(), "RFR: 1234: This is a pull request")); + assertEquals(1, archiveContainsCount(archiveFolder.path(), "RFR: 1234: This is a pull request \\[v2\\]")); } }