From ce5ae13bf649c1371ecf18be6cb95cf84a918a20 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Mon, 6 Jan 2014 08:56:38 -0800 Subject: [PATCH 01/23] [maven-release-plugin] prepare for next development iteration --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 478e0fbffc..757d13ddca 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ github-api - 1.49 + 1.50-SNAPSHOT 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 From fee02a3d16aa835c2f1e606897e4bd08e51ba7d5 Mon Sep 17 00:00:00 2001 From: Ryan Kennedy Date: Wed, 22 Jan 2014 09:56:06 -0800 Subject: [PATCH 02/23] Support paging when fetching organization members Organization members are a paged list in the V3 GitHub API. Previously the code would fetch only the first page of ~30 members and return that. This change switches the return to a PagedIterable so clients can fetch the entire organization's member list. --- .../org/kohsuke/github/GHOrganization.java | 26 ++++++------------- 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GHOrganization.java b/src/main/java/org/kohsuke/github/GHOrganization.java index ec899c0538..5d0eb7cd63 100644 --- a/src/main/java/org/kohsuke/github/GHOrganization.java +++ b/src/main/java/org/kohsuke/github/GHOrganization.java @@ -80,24 +80,14 @@ public void publicize(GHUser u) throws IOException { /** * All the members of this organization. */ - 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); - } - } - - @Override - public int size() { - return shallow.length; + public PagedIterable getMembers() throws IOException { + return new PagedIterable() { + public PagedIterator iterator() { + return new PagedIterator(root.retrieve().asIterator(String.format("/orgs/%s/members", login), GHUser[].class)) { + @Override + protected void wrapUp(GHUser[] page) { + } + }; } }; } From 628034ae8cf0800a755c30080e70f217d91b2103 Mon Sep 17 00:00:00 2001 From: lindseydew Date: Tue, 11 Feb 2014 18:07:01 +0000 Subject: [PATCH 03/23] add a filter param to the get members method --- src/main/java/org/kohsuke/github/GHOrganization.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GHOrganization.java b/src/main/java/org/kohsuke/github/GHOrganization.java index 5d0eb7cd63..0be7350711 100644 --- a/src/main/java/org/kohsuke/github/GHOrganization.java +++ b/src/main/java/org/kohsuke/github/GHOrganization.java @@ -81,9 +81,15 @@ public void publicize(GHUser u) throws IOException { * All the members of this organization. */ public PagedIterable getMembers() throws IOException { + return getMembersWithFilter(null); + } + + public PagedIterable getMembersWithFilter(final String filter) throws IOException { + return new PagedIterable() { public PagedIterator iterator() { - return new PagedIterator(root.retrieve().asIterator(String.format("/orgs/%s/members", login), GHUser[].class)) { + String filterParams = (filter == null) ? "" : ("?filter=" + filter); + return new PagedIterator(root.retrieve().asIterator(String.format("/orgs/%s/members%s", login, filterParams), GHUser[].class)) { @Override protected void wrapUp(GHUser[] page) { } @@ -91,7 +97,6 @@ protected void wrapUp(GHUser[] page) { } }; } - /** * Conceals the membership. */ From d145ad8f47741ca390ba10b3320ac3ac41f48c95 Mon Sep 17 00:00:00 2001 From: vanjikumaran Date: Mon, 24 Feb 2014 17:00:11 +0530 Subject: [PATCH 04/23] Created new method to automate the merge --- src/main/java/org/kohsuke/github/GHRepository.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java index c1146f8e4b..43ea4e78a1 100644 --- a/src/main/java/org/kohsuke/github/GHRepository.java +++ b/src/main/java/org/kohsuke/github/GHRepository.java @@ -822,4 +822,15 @@ public boolean equals(Object obj) { String getApiTailUrl(String tail) { return "/repos/" + owner.login + "/" + name +'/'+tail; } + + /** + * Merge a pull request(Automating the Merge button). + * + * @return + * Merged repository that belong to you. + */ + public GHRepository mergePullRequest(int id) throws IOException { + + return new Requester(root).method("PUT").to("/repos/" + owner.login + "/" + name +"/"+ id+ "/merge", GHRepository.class).wrap(root); + } } From caac294e79b5e1076781965a679ed346a554be8a Mon Sep 17 00:00:00 2001 From: Luca Milanesio Date: Fri, 28 Feb 2014 17:45:36 +0000 Subject: [PATCH 05/23] BugFix when listing repositories of a GitHub Organisation Repositories of a GitHub Organisation are under /orgs/:org/repos as documented at: http://developer.github.com/v3/repos/#list-organization-repositories We need then to override the GHPerson implementation which would have just returned the user's repositories. --- .../org/kohsuke/github/GHOrganization.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/java/org/kohsuke/github/GHOrganization.java b/src/main/java/org/kohsuke/github/GHOrganization.java index ec899c0538..419a075536 100644 --- a/src/main/java/org/kohsuke/github/GHOrganization.java +++ b/src/main/java/org/kohsuke/github/GHOrganization.java @@ -173,4 +173,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); + } + }; + } + }; + } } From efbf98751dcc72556c995d419c8d862856888a77 Mon Sep 17 00:00:00 2001 From: Matt Farmer Date: Fri, 7 Mar 2014 22:14:21 -0500 Subject: [PATCH 06/23] Un-finalize GHContent. GHContent was declared as a final class, which makes it impossible to mock with libraries like Mockito. --- src/main/java/org/kohsuke/github/GHContent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; From 893152cdf352d07333ad20c76d6ecdec7c457fc2 Mon Sep 17 00:00:00 2001 From: Roberto Tyley Date: Sat, 8 Mar 2014 16:05:33 +0000 Subject: [PATCH 07/23] Fix GHIssue.setLabels() - *don't* set 'assignee' instead! --- src/main/java/org/kohsuke/github/GHIssue.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); } /** From b1d37e4848faef364371fce68f881dc98f4500b0 Mon Sep 17 00:00:00 2001 From: Roberto Tyley Date: Wed, 12 Mar 2014 21:46:14 +0000 Subject: [PATCH 08/23] Support the check-user-team-membership API call http://developer.github.com/v3/orgs/teams/#get-team-member --- src/main/java/org/kohsuke/github/GHTeam.java | 12 ++++++++++++ src/main/java/org/kohsuke/github/GHUser.java | 7 +++++++ 2 files changed, 19 insertions(+) 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. */ From 9930e7bb93b46532fb19a6ed79ea36944c1858d6 Mon Sep 17 00:00:00 2001 From: Roberto Tyley Date: Thu, 13 Mar 2014 22:04:45 +0000 Subject: [PATCH 09/23] Add org public-members call, to complement the full members list http://developer.github.com/v3/orgs/members/#public-members-list --- .../org/kohsuke/github/GHOrganization.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GHOrganization.java b/src/main/java/org/kohsuke/github/GHOrganization.java index 0be7350711..dedc9e2748 100644 --- a/src/main/java/org/kohsuke/github/GHOrganization.java +++ b/src/main/java/org/kohsuke/github/GHOrganization.java @@ -81,15 +81,29 @@ public void publicize(GHUser u) throws IOException { * All the members of this organization. */ public PagedIterable getMembers() throws IOException { - return getMembersWithFilter(null); + return getMembers("members"); } - public PagedIterable getMembersWithFilter(final String filter) throws IOException { + /** + * All the public members of this organization. + */ + public PagedIterable getPublicMembers() throws IOException { + return getMembers("public_members"); + } + + private PagedIterable getMembers(String suffix) throws IOException { + return getMembers(suffix, null); + } + + public PagedIterable getMembersWithFilter(String filter) throws IOException { + return getMembers("members", filter); + } + private PagedIterable getMembers(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/members%s", login, filterParams), GHUser[].class)) { + return new PagedIterator(root.retrieve().asIterator(String.format("/orgs/%s/%s%s", login, suffix, filterParams), GHUser[].class)) { @Override protected void wrapUp(GHUser[] page) { } @@ -97,6 +111,7 @@ protected void wrapUp(GHUser[] page) { } }; } + /** * Conceals the membership. */ From d29ea97948f56025e05b766e8b64382447c804e0 Mon Sep 17 00:00:00 2001 From: Roberto Tyley Date: Fri, 14 Mar 2014 09:22:15 +0000 Subject: [PATCH 10/23] Fix org.getMembers() to 'wrap' returned users for post-populating This fixes an issue introduced with PR #66 in commit fee02a3d16 - the `getMembers()` method switched to using paging, but lost the code that populated the users with a full set of values. This commit just applies 'wrapping' to all users returned, so that methods like `user.getCreatedAt()` can be called on returned users without throwing a NullPointerException - the reference to 'root' allows the user objects to populate themselves. --- src/main/java/org/kohsuke/github/GHOrganization.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/kohsuke/github/GHOrganization.java b/src/main/java/org/kohsuke/github/GHOrganization.java index dedc9e2748..f040518466 100644 --- a/src/main/java/org/kohsuke/github/GHOrganization.java +++ b/src/main/java/org/kohsuke/github/GHOrganization.java @@ -105,7 +105,8 @@ 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[] page) { + protected void wrapUp(GHUser[] users) { + GHUser.wrap(users, root); } }; } From cd5ab1ae9befb444912a53ee9d93d48f9a507fd4 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Tue, 18 Mar 2014 11:52:00 -0700 Subject: [PATCH 11/23] need to populate enum --- src/main/java/org/kohsuke/github/GHHook.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; } From 071aea397bb11de99e6a9216a1e9067f7ad71de0 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Fri, 28 Mar 2014 09:35:37 -0700 Subject: [PATCH 12/23] Keep the original signature intact for backward compatibility --- .../org/kohsuke/github/GHOrganization.java | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GHOrganization.java b/src/main/java/org/kohsuke/github/GHOrganization.java index f040518466..cf8aac6e75 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; @@ -77,29 +76,36 @@ public void publicize(GHUser u) throws IOException { root.retrieve().method("PUT").to("/orgs/" + login + "/public_members/" + u.getLogin(), null); } + /** + * @deprecated use {@link #listMembers()} + */ + public List getMembers() throws IOException { + return listMembers().asList(); + } + /** * All the members of this organization. */ - public PagedIterable getMembers() throws IOException { - return getMembers("members"); + public PagedIterable listMembers() throws IOException { + return listMembers("members"); } /** * All the public members of this organization. */ - public PagedIterable getPublicMembers() throws IOException { - return getMembers("public_members"); + public PagedIterable listPublicMembers() throws IOException { + return listMembers("public_members"); } - private PagedIterable getMembers(String suffix) throws IOException { - return getMembers(suffix, null); + private PagedIterable listMembers(String suffix) throws IOException { + return listMembers(suffix, null); } - public PagedIterable getMembersWithFilter(String filter) throws IOException { - return getMembers("members", filter); + public PagedIterable listMembersWithFilter(String filter) throws IOException { + return listMembers("members", filter); } - private PagedIterable getMembers(final String suffix, final String filter) throws IOException { + private PagedIterable listMembers(final String suffix, final String filter) throws IOException { return new PagedIterable() { public PagedIterator iterator() { String filterParams = (filter == null) ? "" : ("?filter=" + filter); From 37c58bffba6d25a95c98376638024492fa5127ee Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Fri, 28 Mar 2014 09:37:11 -0700 Subject: [PATCH 13/23] indentation fix --- .../org/kohsuke/github/GHPullRequest.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GHPullRequest.java b/src/main/java/org/kohsuke/github/GHPullRequest.java index a8105eb97c..0fa74962ef 100644 --- a/src/main/java/org/kohsuke/github/GHPullRequest.java +++ b/src/main/java/org/kohsuke/github/GHPullRequest.java @@ -191,18 +191,18 @@ 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) { + } + }; + } }; - } - }; - } + } } From 21a54e23332f98dcb30f379003bdbd2894172b5c Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Fri, 28 Mar 2014 09:40:55 -0700 Subject: [PATCH 14/23] The parent commit appears to be totally untested. The placement of the method makes no sense, and the API route is wrong. The parameter is missing, and the expected response type is wrong. --- src/main/java/org/kohsuke/github/GHPullRequest.java | 12 ++++++++++++ src/main/java/org/kohsuke/github/GHRepository.java | 11 ----------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GHPullRequest.java b/src/main/java/org/kohsuke/github/GHPullRequest.java index 0fa74962ef..c01753988c 100644 --- a/src/main/java/org/kohsuke/github/GHPullRequest.java +++ b/src/main/java/org/kohsuke/github/GHPullRequest.java @@ -205,4 +205,16 @@ 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 43ea4e78a1..c1146f8e4b 100644 --- a/src/main/java/org/kohsuke/github/GHRepository.java +++ b/src/main/java/org/kohsuke/github/GHRepository.java @@ -822,15 +822,4 @@ public boolean equals(Object obj) { String getApiTailUrl(String tail) { return "/repos/" + owner.login + "/" + name +'/'+tail; } - - /** - * Merge a pull request(Automating the Merge button). - * - * @return - * Merged repository that belong to you. - */ - public GHRepository mergePullRequest(int id) throws IOException { - - return new Requester(root).method("PUT").to("/repos/" + owner.login + "/" + name +"/"+ id+ "/merge", GHRepository.class).wrap(root); - } } From 6a903d65a75bb821a01b3ecd2ee9e4443d0f157c Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Fri, 28 Mar 2014 09:47:27 -0700 Subject: [PATCH 15/23] Fixed a bug in the databinding of the 'private' field. Luca pointed out this bug in https://github.com/lucamilanesio/github-api/commit/ae7a616e928e0646ea50e77b1792f835f93817f2 --- src/main/java/org/kohsuke/github/GHRepository.java | 7 +++++-- src/test/java/Foo.java | 3 +-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java index c1146f8e4b..05f88a9f27 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(); 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()); } } From a74cfd453a2f58a9edf70a78fbd24f23f9ddd42d Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Fri, 28 Mar 2014 09:57:04 -0700 Subject: [PATCH 16/23] Added support for getting issues by milestone and state. rework AppTest to work better for people other than kohsuke This patch was originally from @evanchooly. Reworked to avoid whitespace changes. --- pom.xml | 2 +- .../java/org/kohsuke/github/GHMilestone.java | 16 ++ .../java/org/kohsuke/github/GHMyself.java | 2 +- .../java/org/kohsuke/github/GHRepository.java | 7 + src/test/java/org/kohsuke/AppTest.java | 206 ++++++++++++++---- 5 files changed, 190 insertions(+), 43 deletions(-) diff --git a/pom.xml b/pom.xml index 757d13ddca..ded8c0e87c 100644 --- a/pom.xml +++ b/pom.xml @@ -61,7 +61,7 @@ junit junit - 3.8.1 + 4.11 test 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/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java index 05f88a9f27..6a6b93ae73 100644 --- a/src/main/java/org/kohsuke/github/GHRepository.java +++ b/src/main/java/org/kohsuke/github/GHRepository.java @@ -150,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/test/java/org/kohsuke/AppTest.java b/src/test/java/org/kohsuke/AppTest.java index 0b8177657c..25cd9f29d9 100644 --- a/src/test/java/org/kohsuke/AppTest.java +++ b/src/test/java/org/kohsuke/AppTest.java @@ -1,6 +1,21 @@ 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; @@ -9,7 +24,6 @@ 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 +39,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 +95,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 +199,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,7 +209,9 @@ 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()); @@ -122,42 +219,46 @@ public void testRepoPermissions() throws Exception { 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(); + assertFalse(gitHub.getOrganization("jenkinsci").getRepository("rubywm").getTeams().isEmpty()); } + @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 +271,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 +282,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 +300,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 +310,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 +321,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 +333,7 @@ public void testEventApi() throws Exception { } } + @Test public void testApp() throws IOException { System.out.println(gitHub.getMyself().getEmails()); @@ -313,7 +422,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 +432,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,8 +443,10 @@ public void testOrganization() throws IOException { // t.add(labs.getRepository("xyz")); } + @Test public void testCommitStatus() throws Exception { - GHRepository r = gitHub.getUser("kohsuke").getRepository("test"); + kohsuke(); + GHRepository r = getTestRepository(); GHCommitStatus state; // state = r.createCommitStatus("edacdd76b06c5f3f0697a22ca75803169f25f296", GHCommitState.FAILURE, "http://jenkins-ci.org/", "oops!"); @@ -342,12 +457,15 @@ public void testCommitStatus() throws Exception { assertEquals("http://jenkins-ci.org/",state.getTargetUrl()); } + @Test public void testCommitShortInfo() throws Exception { - GHCommit commit = gitHub.getUser("kohsuke").getRepository("test").getCommit("c77360d6f2ff2c2e6dd11828ad5dccf72419fa1b"); + kohsuke(); + GHCommit commit = getTestRepository().getCommit("c77360d6f2ff2c2e6dd11828ad5dccf72419fa1b"); assertEquals(commit.getCommitShortInfo().getAuthor().getName(), "Kohsuke Kawaguchi"); assertEquals(commit.getCommitShortInfo().getMessage(), "Added a file"); } + @Test public void testPullRequestPopulate() throws Exception { GHRepository r = gitHub.getUser("kohsuke").getRepository("github-api"); GHPullRequest p = r.getPullRequest(17); @@ -355,7 +473,9 @@ 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"); @@ -366,4 +486,8 @@ public void testCheckMembership() throws Exception { assertTrue(j.hasPublicMember(kohsuke)); assertFalse(j.hasPublicMember(a)); } + + private void kohsuke() { + Assume.assumeTrue(getUser().getLogin().equals("kohsuke")); + } } From 2feda55eb7c6f821395b3668c5ee8cbd26edef12 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Fri, 28 Mar 2014 10:01:59 -0700 Subject: [PATCH 17/23] looks like we need to pick another user here --- src/test/java/org/kohsuke/AppTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/org/kohsuke/AppTest.java b/src/test/java/org/kohsuke/AppTest.java index 25cd9f29d9..836e34b04a 100644 --- a/src/test/java/org/kohsuke/AppTest.java +++ b/src/test/java/org/kohsuke/AppTest.java @@ -478,13 +478,13 @@ 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() { From 48179694951df837a8e0ba1928143de42ec3c567 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Fri, 28 Mar 2014 10:06:50 -0700 Subject: [PATCH 18/23] fixed a broken test --- src/test/java/org/kohsuke/AppTest.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/test/java/org/kohsuke/AppTest.java b/src/test/java/org/kohsuke/AppTest.java index 836e34b04a..efd4686415 100644 --- a/src/test/java/org/kohsuke/AppTest.java +++ b/src/test/java/org/kohsuke/AppTest.java @@ -19,6 +19,7 @@ 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; @@ -445,16 +446,17 @@ public void testOrganization() throws IOException { @Test public void testCommitStatus() throws Exception { - kohsuke(); - GHRepository r = getTestRepository(); + 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 From 10bafce217f6019173af24a3174c3ebf33977540 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Fri, 28 Mar 2014 10:08:08 -0700 Subject: [PATCH 19/23] fixed a test --- src/test/java/org/kohsuke/AppTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/org/kohsuke/AppTest.java b/src/test/java/org/kohsuke/AppTest.java index efd4686415..7f79d2de3a 100644 --- a/src/test/java/org/kohsuke/AppTest.java +++ b/src/test/java/org/kohsuke/AppTest.java @@ -461,10 +461,10 @@ public void testCommitStatus() throws Exception { @Test public void testCommitShortInfo() throws Exception { - kohsuke(); - GHCommit commit = getTestRepository().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 From e13b1ffc4867077005c2c2feb6a661a754c775f8 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Fri, 28 Mar 2014 10:11:15 -0700 Subject: [PATCH 20/23] looks like the 'tire' repository is gone --- src/test/java/org/kohsuke/AppTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/kohsuke/AppTest.java b/src/test/java/org/kohsuke/AppTest.java index 7f79d2de3a..9b7a254800 100644 --- a/src/test/java/org/kohsuke/AppTest.java +++ b/src/test/java/org/kohsuke/AppTest.java @@ -216,7 +216,7 @@ public void testRepoPermissions() throws Exception { 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()); } From 0261f1262fc1cfc30d69aec024628d59e25b9878 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Fri, 28 Mar 2014 10:57:11 -0700 Subject: [PATCH 21/23] fixed a test case --- src/test/java/org/kohsuke/AppTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/kohsuke/AppTest.java b/src/test/java/org/kohsuke/AppTest.java index 9b7a254800..2847c0f8ec 100644 --- a/src/test/java/org/kohsuke/AppTest.java +++ b/src/test/java/org/kohsuke/AppTest.java @@ -244,7 +244,7 @@ public void testOrgFork() throws Exception { @Test public void testGetTeamsForRepo() throws Exception { kohsuke(); - assertFalse(gitHub.getOrganization("jenkinsci").getRepository("rubywm").getTeams().isEmpty()); + assertEquals(1,gitHub.getOrganization("stapler").getRepository("stapler").getTeams().size()); } @Test From 320cf0fea2788b13214297550e97bc63ffc0fcad Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Fri, 28 Mar 2014 10:58:18 -0700 Subject: [PATCH 22/23] Seeing a failure to create --- src/test/java/org/kohsuke/LifecycleTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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); From c6fdae3b3c0e10968f53e5bd4783e9d586958748 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Fri, 28 Mar 2014 10:59:47 -0700 Subject: [PATCH 23/23] [maven-release-plugin] prepare release github-api-1.50 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ded8c0e87c..5333aaf838 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ github-api - 1.50-SNAPSHOT + 1.50 GitHub API for Java http://github-api.kohsuke.org/ GitHub API for Java