diff --git a/bots/notify/src/main/java/org/openjdk/skara/bots/notify/prbranch/PullRequestBranchNotifier.java b/bots/notify/src/main/java/org/openjdk/skara/bots/notify/prbranch/PullRequestBranchNotifier.java index 062a8e2b3..c5b075722 100644 --- a/bots/notify/src/main/java/org/openjdk/skara/bots/notify/prbranch/PullRequestBranchNotifier.java +++ b/bots/notify/src/main/java/org/openjdk/skara/bots/notify/prbranch/PullRequestBranchNotifier.java @@ -63,14 +63,7 @@ private void deleteBranch(PullRequest pr) { log.info("Pull request pre-integration branch " + PreIntegrations.preIntegrateBranch(pr) + " doesn't exist on remote - ignoring"); return; } - - var hostedRepositoryPool = new HostedRepositoryPool(seedFolder); - try { - var seedRepo = hostedRepositoryPool.seedRepository(pr.repository(), false); - seedRepo.prune(new Branch(PreIntegrations.preIntegrateBranch(pr)), pr.repository().url().toString()); - } catch (IOException e) { - throw new UncheckedIOException(e); - } + pr.repository().deleteBranch(PreIntegrations.preIntegrateBranch(pr)); } @Override diff --git a/bots/notify/src/test/java/org/openjdk/skara/bots/notify/prbranch/PullRequestBranchNotifierTests.java b/bots/notify/src/test/java/org/openjdk/skara/bots/notify/prbranch/PullRequestBranchNotifierTests.java index 33daeaa0f..48e827fb5 100644 --- a/bots/notify/src/test/java/org/openjdk/skara/bots/notify/prbranch/PullRequestBranchNotifierTests.java +++ b/bots/notify/src/test/java/org/openjdk/skara/bots/notify/prbranch/PullRequestBranchNotifierTests.java @@ -131,6 +131,17 @@ void updated(TestInfo testInfo) throws IOException { // Push another change var updatedHash = CheckableRepository.appendAndCommit(localRepo, "Yet another line"); localRepo.push(updatedHash, repo.url(), "source"); + + // Make sure that the push registered + var lastHeadHash = pr.headHash(); + var refreshCount = 0; + do { + pr = repo.pullRequest(pr.id()); + if (refreshCount++ > 100) { + fail("The PR did not update after the new push"); + } + } while (pr.headHash().equals(lastHeadHash)); + TestBotRunner.runPeriodicItems(notifyBot); // The branch should have been updated diff --git a/bots/tester/src/test/java/org/openjdk/skara/bots/tester/InMemoryHostedRepository.java b/bots/tester/src/test/java/org/openjdk/skara/bots/tester/InMemoryHostedRepository.java index f4cf4d88c..90c231356 100644 --- a/bots/tester/src/test/java/org/openjdk/skara/bots/tester/InMemoryHostedRepository.java +++ b/bots/tester/src/test/java/org/openjdk/skara/bots/tester/InMemoryHostedRepository.java @@ -153,6 +153,10 @@ public List branches() { return List.of(); } + @Override + public void deleteBranch(String ref) { + } + @Override public List commitComments(Hash commit) { return List.of(); diff --git a/forge/src/main/java/org/openjdk/skara/forge/HostedRepository.java b/forge/src/main/java/org/openjdk/skara/forge/HostedRepository.java index e8f84e4b6..044c1a3cc 100644 --- a/forge/src/main/java/org/openjdk/skara/forge/HostedRepository.java +++ b/forge/src/main/java/org/openjdk/skara/forge/HostedRepository.java @@ -72,6 +72,7 @@ PullRequest createPullRequest(HostedRepository target, long id(); Hash branchHash(String ref); List branches(); + void deleteBranch(String ref); List commitComments(Hash hash); default List recentCommitComments() { return recentCommitComments(Map.of(), Set.of()); diff --git a/forge/src/main/java/org/openjdk/skara/forge/github/GitHubRepository.java b/forge/src/main/java/org/openjdk/skara/forge/github/GitHubRepository.java index 33360e532..d55d56342 100644 --- a/forge/src/main/java/org/openjdk/skara/forge/github/GitHubRepository.java +++ b/forge/src/main/java/org/openjdk/skara/forge/github/GitHubRepository.java @@ -270,6 +270,12 @@ public List branches() { .collect(Collectors.toList()); } + @Override + public void deleteBranch(String ref) { + request.delete("git/refs/heads/" + ref) + .execute(); + } + private CommitComment toCommitComment(JSONValue o) { var hash = new Hash(o.get("commit_id").asString()); var line = o.get("line").isNull()? -1 : o.get("line").asInt(); diff --git a/forge/src/main/java/org/openjdk/skara/forge/gitlab/GitLabRepository.java b/forge/src/main/java/org/openjdk/skara/forge/gitlab/GitLabRepository.java index bcf64ced6..919868520 100644 --- a/forge/src/main/java/org/openjdk/skara/forge/gitlab/GitLabRepository.java +++ b/forge/src/main/java/org/openjdk/skara/forge/gitlab/GitLabRepository.java @@ -313,6 +313,12 @@ public List branches() { .collect(Collectors.toList()); } + @Override + public void deleteBranch(String ref) { + request.delete("repository/branches/" + URLEncoder.encode(ref, StandardCharsets.US_ASCII)) + .execute(); + } + private CommitComment toCommitComment(Hash hash, JSONValue o) { var line = o.get("line").isNull()? -1 : o.get("line").asInt(); var path = o.get("path").isNull()? null : Path.of(o.get("path").asString()); diff --git a/test/src/main/java/org/openjdk/skara/test/TestHostedRepository.java b/test/src/main/java/org/openjdk/skara/test/TestHostedRepository.java index d649da30e..91ac6df93 100644 --- a/test/src/main/java/org/openjdk/skara/test/TestHostedRepository.java +++ b/test/src/main/java/org/openjdk/skara/test/TestHostedRepository.java @@ -204,6 +204,15 @@ public List branches() { } } + @Override + public void deleteBranch(String ref) { + try { + localRepository.delete(new Branch(ref)); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + @Override public List commitComments(Hash hash) { if (!commitComments.containsKey(hash)) {