diff --git a/pom.xml b/pom.xml
index 478e0fbffc..5333aaf838 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
github-api
- 1.49
+ 1.50
GitHub API for Java
http://github-api.kohsuke.org/
GitHub API for Java
@@ -16,7 +16,7 @@
scm:git:git@github.com/kohsuke/${project.artifactId}.git
scm:git:ssh://git@github.com/kohsuke/${project.artifactId}.git
http://${project.artifactId}.kohsuke.org/
- github-api-1.49
+ HEAD
@@ -61,7 +61,7 @@
junit
junit
- 3.8.1
+ 4.11
test
diff --git a/src/main/java/org/kohsuke/github/GHContent.java b/src/main/java/org/kohsuke/github/GHContent.java
index adc1285ed9..61c474fa6f 100644
--- a/src/main/java/org/kohsuke/github/GHContent.java
+++ b/src/main/java/org/kohsuke/github/GHContent.java
@@ -9,7 +9,7 @@
*
* @author Alexandre COLLIGNON
*/
-public final class GHContent {
+public class GHContent {
private GHRepository owner;
private String type;
diff --git a/src/main/java/org/kohsuke/github/GHHook.java b/src/main/java/org/kohsuke/github/GHHook.java
index fa797db933..aca2b6dc01 100644
--- a/src/main/java/org/kohsuke/github/GHHook.java
+++ b/src/main/java/org/kohsuke/github/GHHook.java
@@ -34,7 +34,7 @@ public String getName() {
public EnumSet getEvents() {
EnumSet s = EnumSet.noneOf(GHEvent.class);
for (String e : events)
- Enum.valueOf(GHEvent.class,e.toUpperCase(Locale.ENGLISH));
+ s.add(Enum.valueOf(GHEvent.class,e.toUpperCase(Locale.ENGLISH)));
return s;
}
diff --git a/src/main/java/org/kohsuke/github/GHIssue.java b/src/main/java/org/kohsuke/github/GHIssue.java
index dfd73dc785..e83176ace5 100644
--- a/src/main/java/org/kohsuke/github/GHIssue.java
+++ b/src/main/java/org/kohsuke/github/GHIssue.java
@@ -190,7 +190,7 @@ public void assignTo(GHUser user) throws IOException {
}
public void setLabels(String... labels) throws IOException {
- edit("assignee",labels);
+ edit("labels",labels);
}
/**
diff --git a/src/main/java/org/kohsuke/github/GHMilestone.java b/src/main/java/org/kohsuke/github/GHMilestone.java
index e32f13843b..86efca5d04 100644
--- a/src/main/java/org/kohsuke/github/GHMilestone.java
+++ b/src/main/java/org/kohsuke/github/GHMilestone.java
@@ -1,5 +1,6 @@
package org.kohsuke.github;
+import java.io.IOException;
import java.util.Date;
import java.util.Locale;
@@ -65,6 +66,21 @@ public GHMilestoneState getState() {
return Enum.valueOf(GHMilestoneState.class, state.toUpperCase(Locale.ENGLISH));
}
+ /**
+ * Closes this issue.
+ */
+ public void close() throws IOException {
+ edit("state", "closed");
+ }
+
+ private void edit(String key, Object value) throws IOException {
+ new Requester(root)._with(key, value).method("PATCH").to(getApiRoute());
+ }
+
+ protected String getApiRoute() {
+ return "/repos/"+owner.getOwnerName()+"/"+owner.getName()+"/milestones/"+number;
+ }
+
public GHMilestone wrap(GHRepository repo) {
this.owner = repo;
this.root = repo.root;
diff --git a/src/main/java/org/kohsuke/github/GHMyself.java b/src/main/java/org/kohsuke/github/GHMyself.java
index 70e732ac9e..c770f0449e 100644
--- a/src/main/java/org/kohsuke/github/GHMyself.java
+++ b/src/main/java/org/kohsuke/github/GHMyself.java
@@ -45,7 +45,7 @@ public List getPublicKeys() throws IOException {
}
/**
- * Returns the read-only list of all the pulic verified keys of the current user.
+ * Returns the read-only list of all the public verified keys of the current user.
*
* Differently from the getPublicKeys() method, the retrieval of the user's
* verified public keys does not require any READ/WRITE OAuth Scope to the
diff --git a/src/main/java/org/kohsuke/github/GHOrganization.java b/src/main/java/org/kohsuke/github/GHOrganization.java
index ec899c0538..b354d486dd 100644
--- a/src/main/java/org/kohsuke/github/GHOrganization.java
+++ b/src/main/java/org/kohsuke/github/GHOrganization.java
@@ -1,7 +1,6 @@
package org.kohsuke.github;
import java.io.IOException;
-import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -78,26 +77,44 @@ public void publicize(GHUser u) throws IOException {
}
/**
- * All the members of this organization.
+ * @deprecated use {@link #listMembers()}
*/
public List getMembers() throws IOException {
- return new AbstractList() {
- // these are shallow objects with only some limited values filled out
- // TODO: it's better to allow objects to fill themselves in later when missing values are requested
- final GHUser[] shallow = root.retrieve().to("/orgs/" + login + "/members", GHUser[].class);
-
- @Override
- public GHUser get(int index) {
- try {
- return root.getUser(shallow[index].getLogin());
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
+ return listMembers().asList();
+ }
+
+ /**
+ * All the members of this organization.
+ */
+ public PagedIterable listMembers() throws IOException {
+ return listMembers("members");
+ }
+
+ /**
+ * All the public members of this organization.
+ */
+ public PagedIterable listPublicMembers() throws IOException {
+ return listMembers("public_members");
+ }
+
+ private PagedIterable listMembers(String suffix) throws IOException {
+ return listMembers(suffix, null);
+ }
+
+ public PagedIterable listMembersWithFilter(String filter) throws IOException {
+ return listMembers("members", filter);
+ }
- @Override
- public int size() {
- return shallow.length;
+ private PagedIterable listMembers(final String suffix, final String filter) throws IOException {
+ return new PagedIterable() {
+ public PagedIterator iterator() {
+ String filterParams = (filter == null) ? "" : ("?filter=" + filter);
+ return new PagedIterator(root.retrieve().asIterator(String.format("/orgs/%s/%s%s", login, suffix, filterParams), GHUser[].class)) {
+ @Override
+ protected void wrapUp(GHUser[] users) {
+ GHUser.wrap(users, root);
+ }
+ };
}
};
}
@@ -173,4 +190,26 @@ protected void wrapUp(GHEventInfo[] page) {
}
};
}
+
+ /**
+ * Lists up all the repositories using the specified page size.
+ *
+ * @param pageSize size for each page of items returned by GitHub. Maximum page size is 100.
+ *
+ * Unlike {@link #getRepositories()}, this does not wait until all the repositories are returned.
+ */
+ @Override
+ public PagedIterable listRepositories(final int pageSize) {
+ return new PagedIterable() {
+ public PagedIterator iterator() {
+ return new PagedIterator(root.retrieve().asIterator("/orgs/" + login + "/repos?per_page=" + pageSize, GHRepository[].class)) {
+ @Override
+ protected void wrapUp(GHRepository[] page) {
+ for (GHRepository c : page)
+ c.wrap(root);
+ }
+ };
+ }
+ };
+ }
}
diff --git a/src/main/java/org/kohsuke/github/GHPullRequest.java b/src/main/java/org/kohsuke/github/GHPullRequest.java
index a8105eb97c..c01753988c 100644
--- a/src/main/java/org/kohsuke/github/GHPullRequest.java
+++ b/src/main/java/org/kohsuke/github/GHPullRequest.java
@@ -191,18 +191,30 @@ private void populate() throws IOException {
/**
* Retrieves all the commits associated to this pull request.
*/
- public PagedIterable listCommits() {
- return new PagedIterable() {
- public PagedIterator iterator() {
- return new PagedIterator(root.retrieve().asIterator(
- String.format("%s/commits", getApiURL().getPath()),
- GHPullRequestCommitDetail[].class)) {
- @Override
- protected void wrapUp(GHPullRequestCommitDetail[] page) {
- }
+ public PagedIterable listCommits() {
+ return new PagedIterable() {
+ public PagedIterator iterator() {
+ return new PagedIterator(root.retrieve().asIterator(
+ String.format("%s/commits", getApiURL().getPath()),
+ GHPullRequestCommitDetail[].class)) {
+ @Override
+ protected void wrapUp(GHPullRequestCommitDetail[] page) {
+ }
+ };
+ }
};
- }
- };
- }
+ }
+
+ /**
+ * Merge this pull request.
+ *
+ * The equivalent of the big green "Merge pull request" button.
+ *
+ * @param msg
+ * Commit message. If null, the default one will be used.
+ */
+ public void merge(String msg) throws IOException {
+ new Requester(root).method("PUT").with("commit_message",msg).to(getApiRoute()+"/merge");
+ }
}
diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java
index c1146f8e4b..6a6b93ae73 100644
--- a/src/main/java/org/kohsuke/github/GHRepository.java
+++ b/src/main/java/org/kohsuke/github/GHRepository.java
@@ -23,8 +23,10 @@
*/
package org.kohsuke.github;
+import com.fasterxml.jackson.annotation.JsonProperty;
import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
+import javax.xml.bind.DatatypeConverter;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.net.URL;
@@ -42,7 +44,6 @@
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
-import javax.xml.bind.DatatypeConverter;
import static java.util.Arrays.*;
@@ -59,7 +60,9 @@ public class GHRepository {
private String url; // this is the API url
private String html_url; // this is the UI
private GHUser owner; // not fully populated. beware.
- private boolean has_issues, has_wiki, fork, _private, has_downloads;
+ private boolean has_issues, has_wiki, fork, has_downloads;
+ @JsonProperty("private")
+ private boolean _private;
private int watchers,forks,open_issues,size;
private String created_at, pushed_at;
private Map milestones = new HashMap();
@@ -147,6 +150,13 @@ public List getIssues(GHIssueState state) throws IOException {
return listIssues(state).asList();
}
+ public List getIssues(GHIssueState state, GHMilestone milestone) throws IOException {
+ return Arrays.asList(GHIssue.wrap(root.retrieve()
+ .to(String.format("/repos/%s/%s/issues?state=%s&milestone=%s", owner.login, name,
+ state.toString().toLowerCase(), milestone == null ? "none" : "" + milestone.getNumber()),
+ GHIssue[].class), this));
+ }
+
/**
* Lists up all the issues in this repository.
*/
diff --git a/src/main/java/org/kohsuke/github/GHTeam.java b/src/main/java/org/kohsuke/github/GHTeam.java
index 55b2917958..c578130fa6 100644
--- a/src/main/java/org/kohsuke/github/GHTeam.java
+++ b/src/main/java/org/kohsuke/github/GHTeam.java
@@ -49,6 +49,18 @@ public Set getMembers() throws IOException {
return new HashSet(Arrays.asList(GHUser.wrap(org.root.retrieve().to(api("/members"), GHUser[].class), org.root)));
}
+ /**
+ * Checks if this team has the specified user as a member.
+ */
+ public boolean hasMember(GHUser user) {
+ try {
+ org.root.retrieve().to("/teams/" + id + "/members/" + user.getLogin());
+ return true;
+ } catch (IOException ignore) {
+ return false;
+ }
+ }
+
public Map getRepositories() throws IOException {
GHRepository[] repos = org.root.retrieve().to(api("/repos"), GHRepository[].class);
Map m = new TreeMap();
diff --git a/src/main/java/org/kohsuke/github/GHUser.java b/src/main/java/org/kohsuke/github/GHUser.java
index 42ec16c5cd..55c528e3b1 100644
--- a/src/main/java/org/kohsuke/github/GHUser.java
+++ b/src/main/java/org/kohsuke/github/GHUser.java
@@ -76,6 +76,13 @@ public boolean isMemberOf(GHOrganization org) {
return org.hasMember(this);
}
+ /**
+ * Returns true if this user belongs to the specified team.
+ */
+ public boolean isMemberOf(GHTeam team) {
+ return team.hasMember(this);
+ }
+
/**
* Returns true if this user belongs to the specified organization as a public member.
*/
diff --git a/src/test/java/Foo.java b/src/test/java/Foo.java
index 95e13f8182..f5a88a34ae 100644
--- a/src/test/java/Foo.java
+++ b/src/test/java/Foo.java
@@ -7,7 +7,6 @@
*/
public class Foo {
public static void main(String[] args) throws Exception {
- System.out.println(GitHub.connect().createToken(
- Arrays.asList("user", "repo", "delete_repo", "notifications", "gist"), "GitHub API", null).getToken());
+ System.out.println(GitHub.connect().getOrganization("cloudbees").getRepository("grandcentral").isPrivate());
}
}
diff --git a/src/test/java/org/kohsuke/AppTest.java b/src/test/java/org/kohsuke/AppTest.java
index 0b8177657c..2847c0f8ec 100644
--- a/src/test/java/org/kohsuke/AppTest.java
+++ b/src/test/java/org/kohsuke/AppTest.java
@@ -1,15 +1,30 @@
package org.kohsuke;
-import junit.framework.TestCase;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.Test;
+import org.kohsuke.github.GHBranch;
import org.kohsuke.github.GHCommit;
import org.kohsuke.github.GHCommit.File;
import org.kohsuke.github.GHCommitComment;
+import org.kohsuke.github.GHCommitState;
import org.kohsuke.github.GHCommitStatus;
import org.kohsuke.github.GHEvent;
import org.kohsuke.github.GHEventInfo;
import org.kohsuke.github.GHEventPayload;
import org.kohsuke.github.GHHook;
-import org.kohsuke.github.GHBranch;
import org.kohsuke.github.GHIssue;
import org.kohsuke.github.GHIssueComment;
import org.kohsuke.github.GHIssueState;
@@ -25,43 +40,51 @@
import org.kohsuke.github.GitHub;
import org.kohsuke.github.PagedIterable;
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.Set;
-import java.util.List;
-
/**
* Unit test for simple App.
*/
-public class AppTest extends TestCase {
+public class AppTest {
private GitHub gitHub;
- @Override
+ @Before
public void setUp() throws Exception {
- super.setUp();
gitHub = GitHub.connect();
}
+ private String getTestRepositoryName() throws IOException {
+ return getUser().getLogin() + "/github-api-test";
+ }
+
+ @Test
public void testRepoCRUD() throws Exception {
- GHRepository existing = gitHub.getMyself().getRepository("github-api-test");
- if (existing!=null)
- existing.delete();
- GHRepository r = gitHub.createRepository("github-api-test", "a test repository", "http://github-api.kohsuke.org/", true);
+ String targetName = "github-api-test-rename2";
+
+ deleteRepository("github-api-test-rename");
+ deleteRepository(targetName);
+ GHRepository r = gitHub.createRepository("github-api-test-rename", "a test repository", "http://github-api.kohsuke.org/", true);
r.enableIssueTracker(false);
r.enableDownloads(false);
r.enableWiki(false);
- r.renameTo("github-api-test2");
- gitHub.getMyself().getRepository("github-api-test2").delete();
+ r.renameTo(targetName);
+ getUser().getRepository(targetName).delete();
+ }
+
+ private void deleteRepository(final String name) throws IOException {
+ GHRepository repository = getUser().getRepository(name);
+ if(repository != null) {
+ repository.delete();
+ }
}
+ @Test
public void testCredentialValid() throws IOException {
assertTrue(gitHub.isCredentialValid());
- assertFalse(GitHub.connect("totally", "bogus").isCredentialValid());
+ GitHub connect = GitHub.connect("totally", "bogus");
+ assertFalse(connect.isCredentialValid());
}
+ @Test
public void testIssueWithNoComment() throws IOException {
GHRepository repository = gitHub.getRepository("kohsuke/test");
List v = repository.getIssue(4).getComments();
@@ -73,31 +96,103 @@ public void testIssueWithNoComment() throws IOException {
assertTrue(v.size() == 3);
}
+ @Test
public void testCreateIssue() throws IOException {
- GHUser u = gitHub.getUser("kohsuke");
- GHRepository r = u.getRepository("test");
- GHMilestone someMilestone = r.listMilestones(GHIssueState.CLOSED).iterator().next();
- GHIssue o = r.createIssue("testing").body("this is body").assignee(u).label("bug").label("question").milestone(someMilestone).create();
- System.out.println(o.getUrl());
+ GHUser u = getUser();
+ GHRepository repository = getTestRepository();
+ GHMilestone milestone = repository.createMilestone(System.currentTimeMillis() + "", "Test Milestone");
+ GHIssue o = repository.createIssue("testing")
+ .body("this is body")
+ .assignee(u)
+ .label("bug")
+ .label("question")
+ .milestone(milestone)
+ .create();
+ assertNotNull(o);
o.close();
}
+ @Test
public void testGetIssues() throws Exception {
List closedIssues = gitHub.getUser("kohsuke").getRepository("github-api").getIssues(GHIssueState.CLOSED);
// prior to using PagedIterable GHRepository.getIssues(GHIssueState) would only retrieve 30 issues
assertTrue(closedIssues.size() > 30);
}
+
+ private GHRepository getTestRepository() throws IOException {
+ GHRepository repository;
+ try {
+ repository = gitHub.getRepository(getTestRepositoryName());
+ } catch (IOException e) {
+ repository = gitHub.createRepository("github-api-test", "A test repository for testing" +
+ "the github-api project", "http://github-api.kohsuke.org/", true);
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException e1) {
+ throw new RuntimeException(e.getMessage(), e);
+ }
+ repository.enableIssueTracker(true);
+ repository.enableDownloads(true);
+ repository.enableWiki(true);
+ }
+ return repository;
+ }
+
+ private GHUser getUser() {
+ try {
+ return gitHub.getMyself();
+ } catch (IOException e) {
+ throw new RuntimeException(e.getMessage(), e);
+ }
+ }
+
+ @Test
+ public void testListIssues() throws IOException {
+ GHUser u = getUser();
+ GHRepository repository = getTestRepository();
+
+ GHMilestone milestone = repository.createMilestone(System.currentTimeMillis() + "", "Test Milestone");
+ milestone.close();
+ GHIssue unhomed = null;
+ GHIssue homed = null;
+ try {
+ unhomed = repository.createIssue("testing").body("this is body")
+ .assignee(u)
+ .label("bug")
+ .label("question")
+ .create();
+ assertEquals(unhomed.getNumber(), repository.getIssues(GHIssueState.OPEN, null).get(0).getNumber());
+ homed = repository.createIssue("testing").body("this is body")
+ .assignee(u)
+ .label("bug")
+ .label("question")
+ .milestone(milestone)
+ .create();
+ assertEquals(homed.getNumber(), repository.getIssues(GHIssueState.OPEN, milestone).get(0).getNumber());
+ } finally {
+ if (unhomed != null) {
+ unhomed.close();
+ }
+ if (homed != null) {
+ homed.close();
+ }
+ }
+ }
+
+ @Test
public void testRateLimit() throws IOException {
System.out.println(gitHub.getRateLimit());
}
+ @Test
public void testMyOrganizations() throws IOException {
Map org = gitHub.getMyOrganizations();
assertFalse(org.keySet().contains(null));
System.out.println(org);
}
+ @Test
public void testFetchPullRequest() throws Exception {
GHRepository r = gitHub.getOrganization("jenkinsci").getRepository("jenkins");
assertEquals("master",r.getMasterBranch());
@@ -105,8 +200,9 @@ public void testFetchPullRequest() throws Exception {
r.getPullRequests(GHIssueState.OPEN);
}
+ @Test
public void testFetchPullRequestAsList() throws Exception {
- GHRepository r = gitHub.getOrganization("symfony").getRepository("symfony-docs");
+ GHRepository r = gitHub.getRepository("kohsuke/github-api");
assertEquals("master", r.getMasterBranch());
PagedIterable i = r.listPullRequests(GHIssueState.CLOSED);
List prs = i.asList();
@@ -114,50 +210,56 @@ public void testFetchPullRequestAsList() throws Exception {
assertTrue(prs.size() > 0);
}
+ @Test
public void testRepoPermissions() throws Exception {
+ kohsuke();
GHRepository r = gitHub.getOrganization("jenkinsci").getRepository("jenkins");
assertTrue(r.hasPullAccess());
- r = gitHub.getOrganization("github").getRepository("tire");
+ r = gitHub.getOrganization("github").getRepository("hub");
assertFalse(r.hasAdminAccess());
}
+ @Test
public void testGetMyself() throws Exception {
GHMyself me = gitHub.getMyself();
- System.out.println(me);
- GHUser u = gitHub.getUser("kohsuke2");
- System.out.println(u);
- for (List lst : me.iterateRepositories(100)) {
- for (GHRepository r : lst) {
- System.out.println(r.getPushedAt());
- }
- }
+ assertNotNull(me);
+ assertNotNull(gitHub.getUser("kohsuke2"));
+ PagedIterable ghRepositories = me.listRepositories();
+ assertTrue(ghRepositories.iterator().hasNext());
}
+ @Test
public void testPublicKeys() throws Exception {
List keys = gitHub.getMyself().getPublicKeys();
- System.out.println(keys);
+ assertFalse(keys.isEmpty());
}
- public void tryOrgFork() throws Exception {
- gitHub.getUser("kohsuke").getRepository("rubywm").forkTo(gitHub.getOrganization("jenkinsci"));
+ @Test
+ public void testOrgFork() throws Exception {
+ kohsuke();
+ getUser().getRepository("rubywm").forkTo(gitHub.getOrganization("jenkinsci"));
}
- public void tryGetTeamsForRepo() throws Exception {
- Set o = gitHub.getOrganization("jenkinsci").getRepository("rubywm").getTeams();
- System.out.println(o);
+ @Test
+ public void testGetTeamsForRepo() throws Exception {
+ kohsuke();
+ assertEquals(1,gitHub.getOrganization("stapler").getRepository("stapler").getTeams().size());
}
+ @Test
public void testMembership() throws Exception {
Set members = gitHub.getOrganization("jenkinsci").getRepository("violations-plugin").getCollaboratorNames();
System.out.println(members.contains("kohsuke"));
}
+ @Test
public void testMemberOrgs() throws Exception {
Set o = gitHub.getUser("kohsuke").getOrganizations();
System.out.println(o);
}
+ @Test
public void testCommit() throws Exception {
GHCommit commit = gitHub.getUser("jenkinsci").getRepository("jenkins").getCommit("08c1c9970af4d609ae754fbe803e06186e3206f7");
System.out.println(commit);
@@ -170,6 +272,7 @@ public void testCommit() throws Exception {
assertEquals("changelog.html", f.getFileName());
}
+ @Test
public void testListCommits() throws Exception {
List sha1 = new ArrayList();
for (GHCommit c : gitHub.getUser("kohsuke").getRepository("empty-commit").listCommits()) {
@@ -180,12 +283,14 @@ public void testListCommits() throws Exception {
assertEquals(1,sha1.size());
}
+ @Test
public void testBranches() throws Exception {
Map b =
gitHub.getUser("jenkinsci").getRepository("jenkins").getBranches();
System.out.println(b);
}
+ @Test
public void testCommitComment() throws Exception {
GHRepository r = gitHub.getUser("jenkinsci").getRepository("jenkins");
PagedIterable comments = r.listCommitComments();
@@ -196,6 +301,7 @@ public void testCommitComment() throws Exception {
}
}
+ @Test
public void testCreateCommitComment() throws Exception {
GHCommit commit = gitHub.getUser("kohsuke").getRepository("sandbox-ant").getCommit("8ae38db0ea5837313ab5f39d43a6f73de3bd9000");
GHCommitComment c = commit.createComment("[testing](http://kohsuse.org/)");
@@ -205,7 +311,9 @@ public void testCreateCommitComment() throws Exception {
c.delete();
}
+ @Test
public void tryHook() throws Exception {
+ kohsuke();
GHRepository r = gitHub.getMyself().getRepository("test2");
GHHook hook = r.createWebHook(new URL("http://www.google.com/"));
System.out.println(hook);
@@ -214,6 +322,7 @@ public void tryHook() throws Exception {
h.delete();
}
+ @Test
public void testEventApi() throws Exception {
for (GHEventInfo ev : gitHub.getEvents()) {
System.out.println(ev);
@@ -225,6 +334,7 @@ public void testEventApi() throws Exception {
}
}
+ @Test
public void testApp() throws IOException {
System.out.println(gitHub.getMyself().getEmails());
@@ -313,7 +423,9 @@ private void testPostCommitHook(GitHub gitHub) throws IOException {
System.out.println(hooks);
}
+ @Test
public void testOrgRepositories() throws IOException {
+ kohsuke();
GHOrganization j = gitHub.getOrganization("jenkinsci");
long start = System.currentTimeMillis();
Map repos = j.getRepositories();
@@ -321,7 +433,9 @@ public void testOrgRepositories() throws IOException {
System.out.printf("%d repositories in %dms\n",repos.size(),end-start);
}
+ @Test
public void testOrganization() throws IOException {
+ kohsuke();
GHOrganization j = gitHub.getOrganization("jenkinsci");
GHTeam t = j.getTeams().get("Core Developers");
@@ -330,24 +444,30 @@ public void testOrganization() throws IOException {
// t.add(labs.getRepository("xyz"));
}
+ @Test
public void testCommitStatus() throws Exception {
- GHRepository r = gitHub.getUser("kohsuke").getRepository("test");
+ GHRepository r = gitHub.getRepository("kohsuke/github-api");
+
GHCommitStatus state;
-// state = r.createCommitStatus("edacdd76b06c5f3f0697a22ca75803169f25f296", GHCommitState.FAILURE, "http://jenkins-ci.org/", "oops!");
- List lst = r.listCommitStatuses("edacdd76b06c5f3f0697a22ca75803169f25f296").asList();
+// state = r.createCommitStatus("ecbfdd7315ef2cf04b2be7f11a072ce0bd00c396", GHCommitState.FAILURE, "http://kohsuke.org/", "testing!");
+
+ List lst = r.listCommitStatuses("ecbfdd7315ef2cf04b2be7f11a072ce0bd00c396").asList();
state = lst.get(0);
System.out.println(state);
- assertEquals("oops!",state.getDescription());
- assertEquals("http://jenkins-ci.org/",state.getTargetUrl());
+ assertEquals("testing!",state.getDescription());
+ assertEquals("http://kohsuke.org/",state.getTargetUrl());
}
+ @Test
public void testCommitShortInfo() throws Exception {
- GHCommit commit = gitHub.getUser("kohsuke").getRepository("test").getCommit("c77360d6f2ff2c2e6dd11828ad5dccf72419fa1b");
+ GHRepository r = gitHub.getRepository("kohsuke/github-api");
+ GHCommit commit = r.getCommit("86a2e245aa6d71d54923655066049d9e21a15f23");
assertEquals(commit.getCommitShortInfo().getAuthor().getName(), "Kohsuke Kawaguchi");
- assertEquals(commit.getCommitShortInfo().getMessage(), "Added a file");
+ assertEquals(commit.getCommitShortInfo().getMessage(), "doc");
}
+ @Test
public void testPullRequestPopulate() throws Exception {
GHRepository r = gitHub.getUser("kohsuke").getRepository("github-api");
GHPullRequest p = r.getPullRequest(17);
@@ -355,15 +475,21 @@ public void testPullRequestPopulate() throws Exception {
assertNotNull(u.getName());
}
+ @Test
public void testCheckMembership() throws Exception {
+ kohsuke();
GHOrganization j = gitHub.getOrganization("jenkinsci");
GHUser kohsuke = gitHub.getUser("kohsuke");
- GHUser a = gitHub.getUser("a");
+ GHUser b = gitHub.getUser("b");
assertTrue(j.hasMember(kohsuke));
- assertFalse(j.hasMember(a));
+ assertFalse(j.hasMember(b));
assertTrue(j.hasPublicMember(kohsuke));
- assertFalse(j.hasPublicMember(a));
+ assertFalse(j.hasPublicMember(b));
+ }
+
+ private void kohsuke() {
+ Assume.assumeTrue(getUser().getLogin().equals("kohsuke"));
}
}
diff --git a/src/test/java/org/kohsuke/LifecycleTest.java b/src/test/java/org/kohsuke/LifecycleTest.java
index 16299f9d41..c248ec4db8 100644
--- a/src/test/java/org/kohsuke/LifecycleTest.java
+++ b/src/test/java/org/kohsuke/LifecycleTest.java
@@ -31,11 +31,12 @@ public void setUp() throws Exception {
gitHub = GitHub.connect();
}
- public void testCreateRepository() throws IOException, GitAPIException {
+ public void testCreateRepository() throws IOException, GitAPIException, InterruptedException {
GHMyself myself = gitHub.getMyself();
GHRepository repository = myself.getRepository("github-api-test");
if (repository != null) {
repository.delete();
+ Thread.sleep(1000);
}
repository = gitHub.createRepository("github-api-test",
"a test repository used to test kohsuke's github-api", "http://github-api.kohsuke.org/", true);