diff --git a/bots/pr/src/main/java/org/openjdk/skara/bots/pr/CheckRun.java b/bots/pr/src/main/java/org/openjdk/skara/bots/pr/CheckRun.java index 7a15c1364..0709073cd 100644 --- a/bots/pr/src/main/java/org/openjdk/skara/bots/pr/CheckRun.java +++ b/bots/pr/src/main/java/org/openjdk/skara/bots/pr/CheckRun.java @@ -654,7 +654,7 @@ private void addSourceBranchWarningComment(List comments) throws IOExce "a branch with the same name as the source branch for this pull request (`" + branch + "`) " + "is present in the [target repository](" + pr.repository().nonTransformedWebUrl() + "). " + "If you eventually integrate this pull request then the branch `" + branch + "` " + - "in your [personal fork](" + pr.sourceRepository().nonTransformedWebUrl() + ") will diverge once you sync " + + "in your [personal fork](" + pr.sourceRepository().get().nonTransformedWebUrl() + ") will diverge once you sync " + "your personal fork with the upstream repository.\n" + "\n" + "To avoid this situation, create a new branch for your changes and reset the `" + branch + "` branch. " + @@ -782,9 +782,11 @@ private void checkStatus() { newLabels.remove("merge-conflict"); } - var branchNames = pr.repository().branches().stream().map(HostedBranch::name).collect(Collectors.toSet()); - if (!pr.repository().url().equals(pr.sourceRepository().url()) && branchNames.contains(pr.sourceRef())) { - addSourceBranchWarningComment(comments); + if (pr.sourceRepository().isPresent()) { + var branchNames = pr.repository().branches().stream().map(HostedBranch::name).collect(Collectors.toSet()); + if (!pr.repository().url().equals(pr.sourceRepository().get().url()) && branchNames.contains(pr.sourceRef())) { + addSourceBranchWarningComment(comments); + } } if (!PullRequestUtils.isMerge(pr) && PullRequestUtils.containsForeignMerge(pr, localRepo)) { diff --git a/bots/tester/src/test/java/org/openjdk/skara/bots/tester/InMemoryPullRequest.java b/bots/tester/src/test/java/org/openjdk/skara/bots/tester/InMemoryPullRequest.java index a4ca46e7d..8a4111a19 100644 --- a/bots/tester/src/test/java/org/openjdk/skara/bots/tester/InMemoryPullRequest.java +++ b/bots/tester/src/test/java/org/openjdk/skara/bots/tester/InMemoryPullRequest.java @@ -96,8 +96,8 @@ public String sourceRef() { } @Override - public HostedRepository sourceRepository() { - return null; + public Optional sourceRepository() { + return Optional.empty(); } @Override diff --git a/cli/src/main/java/org/openjdk/skara/cli/pr/GitPrList.java b/cli/src/main/java/org/openjdk/skara/cli/pr/GitPrList.java index 555d74b3f..3eaba87b7 100644 --- a/cli/src/main/java/org/openjdk/skara/cli/pr/GitPrList.java +++ b/cli/src/main/java/org/openjdk/skara/cli/pr/GitPrList.java @@ -208,7 +208,7 @@ public static void main(String[] args) throws IOException { issues.add(String.join(",", prIssues)); urls.add(pr.webUrl().toString()); - if (pr.sourceRepository().webUrl().equals(uri)) { + if (pr.sourceRepository().isPresent() && pr.sourceRepository().get().webUrl().equals(uri)) { branches.add(pr.sourceRef()); } else { branches.add(""); diff --git a/forge/src/main/java/org/openjdk/skara/forge/PullRequest.java b/forge/src/main/java/org/openjdk/skara/forge/PullRequest.java index 0faa6c2df..2820f82a0 100644 --- a/forge/src/main/java/org/openjdk/skara/forge/PullRequest.java +++ b/forge/src/main/java/org/openjdk/skara/forge/PullRequest.java @@ -88,7 +88,7 @@ public interface PullRequest extends Issue { * Returns the repository the request is created from. * @return */ - HostedRepository sourceRepository(); + Optional sourceRepository(); /** * Returns the name of the ref the request is intended to be merged into. diff --git a/forge/src/main/java/org/openjdk/skara/forge/github/GitHubPullRequest.java b/forge/src/main/java/org/openjdk/skara/forge/github/GitHubPullRequest.java index e12865b27..882484547 100644 --- a/forge/src/main/java/org/openjdk/skara/forge/github/GitHubPullRequest.java +++ b/forge/src/main/java/org/openjdk/skara/forge/github/GitHubPullRequest.java @@ -247,8 +247,12 @@ public String sourceRef() { } @Override - public HostedRepository sourceRepository() { - return new GitHubRepository(host, json.get("head").get("repo").get("full_name").asString()); + public Optional sourceRepository() { + if (json.get("head").get("repo").isNull()) { + return Optional.empty(); + } else { + return Optional.of(new GitHubRepository(host, json.get("head").get("repo").get("full_name").asString())); + } } @Override diff --git a/forge/src/main/java/org/openjdk/skara/forge/gitlab/GitLabMergeRequest.java b/forge/src/main/java/org/openjdk/skara/forge/gitlab/GitLabMergeRequest.java index f780ad920..de77aaf20 100644 --- a/forge/src/main/java/org/openjdk/skara/forge/gitlab/GitLabMergeRequest.java +++ b/forge/src/main/java/org/openjdk/skara/forge/gitlab/GitLabMergeRequest.java @@ -267,9 +267,13 @@ public String sourceRef() { } @Override - public HostedRepository sourceRepository() { - return new GitLabRepository((GitLabHost) repository.forge(), - json.get("source_project_id").asInt()); + public Optional sourceRepository() { + if (json.get("source_project_id").isNull()) { + return Optional.empty(); + } else { + return Optional.of(new GitLabRepository((GitLabHost) repository.forge(), + json.get("source_project_id").asInt())); + } } @Override diff --git a/test/src/main/java/org/openjdk/skara/test/TestPullRequest.java b/test/src/main/java/org/openjdk/skara/test/TestPullRequest.java index 66b9ac29e..352b2d8b9 100644 --- a/test/src/main/java/org/openjdk/skara/test/TestPullRequest.java +++ b/test/src/main/java/org/openjdk/skara/test/TestPullRequest.java @@ -146,8 +146,8 @@ public String sourceRef() { } @Override - public HostedRepository sourceRepository() { - return sourceRepository; + public Optional sourceRepository() { + return Optional.of(sourceRepository); } @Override