Skip to content

Commit b8f00bc

Browse files
committed
Adjust GHCheckRun so that status and conclusion are returned as enums
Provide bridge methods for compatibility.
1 parent 042038f commit b8f00bc

5 files changed

Lines changed: 52 additions & 13 deletions

File tree

src/main/java/org/kohsuke/github/GHCheckRun.java

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package org.kohsuke.github;
22

33
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
45
import edu.umd.cs.findbugs.annotations.NonNull;
56
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
7+
import org.kohsuke.github.GHWorkflowRun.Conclusion;
8+
import org.kohsuke.github.GHWorkflowRun.Status;
9+
import org.kohsuke.github.internal.EnumUtils;
610
import org.kohsuke.github.internal.Previews;
711

812
import java.io.IOException;
@@ -11,6 +15,7 @@
1115
import java.util.Collections;
1216
import java.util.Date;
1317
import java.util.List;
18+
import java.util.Locale;
1419

1520
/**
1621
* Represents a check run.
@@ -80,12 +85,27 @@ GHPullRequest[] wrap() {
8085
* @return Status of the check run
8186
* @see Status
8287
*/
83-
public String getStatus() {
88+
@WithBridgeMethods(value = String.class, adapterMethod = "statusAsStr")
89+
public Status getStatus() {
90+
return Status.from(status);
91+
}
92+
93+
@SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", justification = "Bridge method of getStatus")
94+
private Object statusAsStr(Status status, Class type) {
8495
return status;
8596
}
8697

8798
public static enum Status {
88-
QUEUED, IN_PROGRESS, COMPLETED
99+
QUEUED, IN_PROGRESS, COMPLETED, UNKNOWN;
100+
101+
public static Status from(String value) {
102+
return EnumUtils.getEnum(Status.class, value, Status.UNKNOWN);
103+
}
104+
105+
@Override
106+
public String toString() {
107+
return name().toLowerCase(Locale.ROOT);
108+
}
89109
}
90110

91111
/**
@@ -94,7 +114,13 @@ public static enum Status {
94114
* @return Status of the check run
95115
* @see Conclusion
96116
*/
97-
public String getConclusion() {
117+
@WithBridgeMethods(value = String.class, adapterMethod = "conclusionAsStr")
118+
public Conclusion getConclusion() {
119+
return Conclusion.from(conclusion);
120+
}
121+
122+
@SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", justification = "Bridge method of getConclusion")
123+
private Object conclusionAsStr(Conclusion conclusion, Class type) {
98124
return conclusion;
99125
}
100126

@@ -105,7 +131,16 @@ public String getConclusion() {
105131
* Parameters - <code>conclusion</code></a>.
106132
*/
107133
public static enum Conclusion {
108-
SUCCESS, FAILURE, NEUTRAL, CANCELLED, TIMED_OUT, ACTION_REQUIRED, SKIPPED
134+
ACTION_REQUIRED, CANCELLED, FAILURE, NEUTRAL, SUCCESS, SKIPPED, STALE, TIMED_OUT, UNKNOWN;
135+
136+
public static Conclusion from(String value) {
137+
return EnumUtils.getEnum(Conclusion.class, value, Conclusion.UNKNOWN);
138+
}
139+
140+
@Override
141+
public String toString() {
142+
return name().toLowerCase(Locale.ROOT);
143+
}
109144
}
110145

111146
/**

src/test/java/org/kohsuke/github/EnumTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ public class EnumTest extends AbstractGitHubWireMockTest {
1414
@Test
1515
public void touchEnums() {
1616
assertThat(GHCheckRun.AnnotationLevel.values().length, equalTo(3));
17-
assertThat(GHCheckRun.Conclusion.values().length, equalTo(7));
18-
assertThat(GHCheckRun.Status.values().length, equalTo(3));
17+
assertThat(GHCheckRun.Conclusion.values().length, equalTo(9));
18+
assertThat(GHCheckRun.Status.values().length, equalTo(4));
1919

2020
assertThat(GHCommentAuthorAssociation.values().length, equalTo(7));
2121

src/test/java/org/kohsuke/github/GHCheckRunBuilderTest.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
package org.kohsuke.github;
2626

2727
import org.junit.Test;
28+
import org.kohsuke.github.GHCheckRun.Status;
2829

2930
import java.io.IOException;
3031
import java.util.Date;
@@ -59,7 +60,7 @@ public void createCheckRun() throws Exception {
5960
.withCaption("Princess Unikitty")))
6061
.add(new GHCheckRunBuilder.Action("Help", "what I need help with", "doit"))
6162
.create();
62-
assertEquals("completed", checkRun.getStatus());
63+
assertEquals(Status.COMPLETED, checkRun.getStatus());
6364
assertEquals(1, checkRun.getOutput().getAnnotationsCount());
6465
assertEquals(1424883286, checkRun.getId());
6566
assertEquals("Hello Text!", checkRun.getOutput().getText());
@@ -79,7 +80,7 @@ public void createCheckRunManyAnnotations() throws Exception {
7980
.withConclusion(GHCheckRun.Conclusion.SUCCESS)
8081
.add(output)
8182
.create();
82-
assertEquals("completed", checkRun.getStatus());
83+
assertEquals(Status.COMPLETED, checkRun.getStatus());
8384
assertEquals("Big Run", checkRun.getOutput().getTitle());
8485
assertEquals("Lots of stuff here »", checkRun.getOutput().getSummary());
8586
assertEquals(101, checkRun.getOutput().getAnnotationsCount());
@@ -94,7 +95,7 @@ public void createCheckRunNoAnnotations() throws Exception {
9495
.withConclusion(GHCheckRun.Conclusion.NEUTRAL)
9596
.add(new GHCheckRunBuilder.Output("Quick note", "nothing more to see here"))
9697
.create();
97-
assertEquals("completed", checkRun.getStatus());
98+
assertEquals(Status.COMPLETED, checkRun.getStatus());
9899
assertEquals(0, checkRun.getOutput().getAnnotationsCount());
99100
assertEquals(1424883957, checkRun.getId());
100101
}
@@ -105,7 +106,7 @@ public void createPendingCheckRun() throws Exception {
105106
.createCheckRun("outstanding", "89a9ae301e35e667756034fdc933b1fc94f63fc1")
106107
.withStatus(GHCheckRun.Status.IN_PROGRESS)
107108
.create();
108-
assertEquals("in_progress", checkRun.getStatus());
109+
assertEquals(Status.IN_PROGRESS, checkRun.getStatus());
109110
assertNull(checkRun.getConclusion());
110111
assertEquals(1424883451, checkRun.getId());
111112
}

src/test/java/org/kohsuke/github/GHEventPayloadTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import org.junit.Rule;
44
import org.junit.Test;
5+
import org.kohsuke.github.GHCheckRun.Conclusion;
6+
import org.kohsuke.github.GHCheckRun.Status;
57

68
import java.io.IOException;
79
import java.text.SimpleDateFormat;
@@ -563,7 +565,7 @@ private GHCheckRun verifyBasicCheckRunEvent(GHEventPayload.CheckRun event) throw
563565
GHCheckRun checkRun = event.getCheckRun();
564566
assertThat(checkRun.getName(), is("Octocoders-linter"));
565567
assertThat(checkRun.getHeadSha(), is("ec26c3e57ca3a959ca5aad62de7213c562f8c821"));
566-
assertThat(checkRun.getStatus(), is("completed"));
568+
assertThat(checkRun.getStatus(), is(Status.COMPLETED));
567569
assertThat(checkRun.getNodeId(), is("MDg6Q2hlY2tSdW4xMjg2MjAyMjg="));
568570
assertThat(checkRun.getExternalId(), is(""));
569571

@@ -572,7 +574,7 @@ private GHCheckRun verifyBasicCheckRunEvent(GHEventPayload.CheckRun event) throw
572574
assertThat(formatter.format(checkRun.getStartedAt()), is("2019-05-15T15:21:12Z"));
573575
assertThat(formatter.format(checkRun.getCompletedAt()), is("2019-05-15T20:22:22Z"));
574576

575-
assertThat(checkRun.getConclusion(), is("success"));
577+
assertThat(checkRun.getConclusion(), is(Conclusion.SUCCESS));
576578
assertThat(checkRun.getUrl().toString(), endsWith("/repos/Codertocat/Hello-World/check-runs/128620228"));
577579
assertThat(checkRun.getHtmlUrl().toString(),
578580
endsWith("https://github.com/Codertocat/Hello-World/runs/128620228"));

src/test/java/org/kohsuke/github/GHRepositoryTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.fasterxml.jackson.databind.JsonMappingException;
44
import org.apache.commons.io.IOUtils;
55
import org.junit.Test;
6+
import org.kohsuke.github.GHCheckRun.Conclusion;
67

78
import java.io.ByteArrayInputStream;
89
import java.io.FileNotFoundException;
@@ -743,7 +744,7 @@ public void getCheckRuns() throws Exception {
743744
// Check if the checkruns are all succeeded and if we got all of them
744745
int checkRunsCount = 0;
745746
for (GHCheckRun checkRun : checkRuns) {
746-
assertThat(checkRun.getConclusion(), equalTo("success"));
747+
assertThat(checkRun.getConclusion(), equalTo(Conclusion.SUCCESS));
747748
checkRunsCount++;
748749
}
749750
assertThat(checkRunsCount, equalTo(expectedCount));

0 commit comments

Comments
 (0)