Merge branch 'master' into add-create-repo-with-template-support

This commit is contained in:
Liam Newman
2020-08-04 16:05:02 -07:00
committed by GitHub
67 changed files with 4873 additions and 27 deletions

View File

@@ -0,0 +1,47 @@
package org.kohsuke.github;
import org.junit.Test;
import java.io.IOException;
import static org.hamcrest.Matchers.*;
public class GHBranchTest extends AbstractGitHubWireMockTest {
private static final String BRANCH_1 = "testBranch1";
private static final String BRANCH_2 = "testBranch2";
private GHRepository repository;
@Test
public void testMergeBranch() throws Exception {
repository = getTempRepository();
String masterHead = repository.getRef("heads/master").getObject().getSha();
createRefAndPostContent(BRANCH_1, masterHead);
createRefAndPostContent(BRANCH_2, masterHead);
GHBranch otherBranch = repository.getBranch(BRANCH_2);
String commitMessage = "merging " + BRANCH_2;
GHCommit mergeCommit = repository.getBranch(BRANCH_1).merge(otherBranch, commitMessage);
assertThat(mergeCommit, notNullValue());
assertThat(mergeCommit.getCommitShortInfo().getMessage(), equalTo(commitMessage));
// Merging commit sha should work
commitMessage = "merging from " + mergeCommit.getSHA1();
GHBranch master = repository.getBranch("master");
mergeCommit = master.merge(mergeCommit.getSHA1(), commitMessage);
assertThat(mergeCommit, notNullValue());
assertThat(mergeCommit.getCommitShortInfo().getMessage(), equalTo(commitMessage));
mergeCommit = master.merge(mergeCommit.getSHA1(), commitMessage);
// Should be null since all changes already merged
assertThat(mergeCommit, nullValue());
}
private void createRefAndPostContent(String branchName, String sha) throws IOException {
String refName = "refs/heads/" + branchName;
repository.createRef(refName, sha);
repository.createContent().content(branchName).message(branchName).path(branchName).branch(branchName).commit();
}
}

View File

@@ -3,6 +3,7 @@ package org.kohsuke.github;
import org.junit.Rule;
import org.junit.Test;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.TimeZone;
@@ -387,7 +388,25 @@ public class GHEventPayloadTest extends AbstractGitHubWireMockTest {
@Payload("check-run")
public void checkRunEvent() throws Exception {
GHEventPayload.CheckRun event = GitHub.offline()
.parseEventPayload(payload.asReader(), GHEventPayload.CheckRun.class);
.parseEventPayload(payload.asReader(mockGitHub::mapToMockGitHub), GHEventPayload.CheckRun.class);
GHCheckRun checkRun = verifyBasicCheckRunEvent(event);
assertThat("pull body not populated offline", checkRun.getPullRequests().get(0).getBody(), nullValue());
assertThat("using offline github", mockGitHub.getRequestCount(), equalTo(0));
gitHub = getGitHubBuilder().withEndpoint(mockGitHub.apiServer().baseUrl()).build();
event = gitHub.parseEventPayload(payload.asReader(mockGitHub::mapToMockGitHub), GHEventPayload.CheckRun.class);
checkRun = verifyBasicCheckRunEvent(event);
int expectedRequestCount = mockGitHub.isUseProxy() ? 3 : 2;
assertThat("pull body should be populated",
checkRun.getPullRequests().get(0).getBody(),
equalTo("This is a pretty simple change that we need to pull into master."));
assertThat("multiple getPullRequests() calls are made, the pull is populated only once",
mockGitHub.getRequestCount(),
equalTo(expectedRequestCount));
}
private GHCheckRun verifyBasicCheckRunEvent(GHEventPayload.CheckRun event) throws IOException {
assertThat(event.getRepository().getName(), is("Hello-World"));
assertThat(event.getRepository().getOwner().getLogin(), is("Codertocat"));
assertThat(event.getAction(), is("created"));
@@ -406,9 +425,9 @@ public class GHEventPayloadTest extends AbstractGitHubWireMockTest {
assertThat(formatter.format(checkRun.getCompletedAt()), is("2019-05-15T20:22:22Z"));
assertThat(checkRun.getConclusion(), is("success"));
assertThat(checkRun.getUrl().toString(),
is("https://api.github.com/repos/Codertocat/Hello-World/check-runs/128620228"));
assertThat(checkRun.getHtmlUrl().toString(), is("https://github.com/Codertocat/Hello-World/runs/128620228"));
assertThat(checkRun.getUrl().toString(), endsWith("/repos/Codertocat/Hello-World/check-runs/128620228"));
assertThat(checkRun.getHtmlUrl().toString(),
endsWith("https://github.com/Codertocat/Hello-World/runs/128620228"));
assertThat(checkRun.getDetailsUrl().toString(), is("https://octocoders.io"));
assertThat(checkRun.getApp().getId(), is(29310L));
assertThat(checkRun.getCheckSuite().getId(), is(118578147L));
@@ -417,18 +436,41 @@ public class GHEventPayloadTest extends AbstractGitHubWireMockTest {
assertThat(checkRun.getOutput().getText(), nullValue());
assertThat(checkRun.getOutput().getAnnotationsCount(), is(0));
assertThat(checkRun.getOutput().getAnnotationsUrl().toString(),
is("https://api.github.com/repos/Codertocat/Hello-World/check-runs/128620228/annotations"));
endsWith("/repos/Codertocat/Hello-World/check-runs/128620228/annotations"));
// Checks the deserialization of sender
assertThat(event.getSender().getId(), is(21031067L));
assertThat(checkRun.getPullRequests(), notNullValue());
assertThat(checkRun.getPullRequests().size(), equalTo(1));
assertThat(checkRun.getPullRequests().get(0).getNumber(), equalTo(2));
return checkRun;
}
@Test
@Payload("check-suite")
public void checkSuiteEvent() throws Exception {
GHEventPayload.CheckSuite event = GitHub.offline()
.parseEventPayload(payload.asReader(), GHEventPayload.CheckSuite.class);
.parseEventPayload(payload.asReader(mockGitHub::mapToMockGitHub), GHEventPayload.CheckSuite.class);
GHCheckSuite checkSuite = verifyBasicCheckSuiteEvent(event);
assertThat("pull body not populated offline", checkSuite.getPullRequests().get(0).getBody(), nullValue());
assertThat("using offline github", mockGitHub.getRequestCount(), equalTo(0));
gitHub = getGitHubBuilder().withEndpoint(mockGitHub.apiServer().baseUrl()).build();
event = gitHub.parseEventPayload(payload.asReader(mockGitHub::mapToMockGitHub),
GHEventPayload.CheckSuite.class);
checkSuite = verifyBasicCheckSuiteEvent(event);
int expectedRequestCount = mockGitHub.isUseProxy() ? 3 : 2;
assertThat("pull body should be populated",
checkSuite.getPullRequests().get(0).getBody(),
equalTo("This is a pretty simple change that we need to pull into master."));
assertThat("multiple getPullRequests() calls are made, the pull is populated only once",
mockGitHub.getRequestCount(),
lessThanOrEqualTo(expectedRequestCount));
}
private GHCheckSuite verifyBasicCheckSuiteEvent(GHEventPayload.CheckSuite event) throws IOException {
assertThat(event.getRepository().getName(), is("Hello-World"));
assertThat(event.getRepository().getOwner().getLogin(), is("Codertocat"));
assertThat(event.getAction(), is("completed"));
@@ -445,7 +487,7 @@ public class GHEventPayloadTest extends AbstractGitHubWireMockTest {
assertThat(checkSuite.getAfter(), is("ec26c3e57ca3a959ca5aad62de7213c562f8c821"));
assertThat(checkSuite.getLatestCheckRunsCount(), is(1));
assertThat(checkSuite.getCheckRunsUrl().toString(),
is("https://api.github.com/repos/Codertocat/Hello-World/check-suites/118578147/check-runs"));
endsWith("/repos/Codertocat/Hello-World/check-suites/118578147/check-runs"));
assertThat(checkSuite.getHeadCommit().getMessage(), is("Update README.md"));
assertThat(checkSuite.getHeadCommit().getId(), is("ec26c3e57ca3a959ca5aad62de7213c562f8c821"));
assertThat(checkSuite.getHeadCommit().getTreeId(), is("31b122c26a97cf9af023e9ddab94a82c6e77b0ea"));
@@ -457,6 +499,11 @@ public class GHEventPayloadTest extends AbstractGitHubWireMockTest {
assertThat(formatter.format(checkSuite.getHeadCommit().getTimestamp()), is("2019-05-15T15:20:30Z"));
assertThat(checkSuite.getApp().getId(), is(29310L));
assertThat(checkSuite.getPullRequests(), notNullValue());
assertThat(checkSuite.getPullRequests().size(), equalTo(1));
assertThat(checkSuite.getPullRequests().get(0).getNumber(), equalTo(2));
return checkSuite;
}
@Test

View File

@@ -70,6 +70,26 @@ public class GHMilestoneTest extends AbstractGitHubWireMockTest {
assertEquals(null, issue.getMilestone());
}
@Test
public void testUnsetMilestoneFromPullRequest() throws IOException {
GHRepository repo = getRepository();
GHMilestone milestone = repo.createMilestone("Unset Test Milestone", "For testUnsetMilestone");
GHPullRequest p = repo.createPullRequest("testUnsetMilestoneFromPullRequest",
"test/stable",
"master",
"## test pull request");
// set the milestone
p.setMilestone(milestone);
p = repo.getPullRequest(p.getNumber()); // force reload
assertEquals(milestone.getNumber(), p.getMilestone().getNumber());
// remove the milestone
p.setMilestone(null);
p = repo.getPullRequest(p.getNumber()); // force reload
assertNull(p.getMilestone());
}
protected GHRepository getRepository() throws IOException {
return getRepository(gitHub);
}