diff --git a/gitlab4j-api/src/main/java/org/gitlab4j/api/PipelineApi.java b/gitlab4j-api/src/main/java/org/gitlab4j/api/PipelineApi.java index d43e3d28d..90826adc5 100644 --- a/gitlab4j-api/src/main/java/org/gitlab4j/api/PipelineApi.java +++ b/gitlab4j-api/src/main/java/org/gitlab4j/api/PipelineApi.java @@ -14,6 +14,7 @@ import org.gitlab4j.api.models.PipelineFilter; import org.gitlab4j.api.models.PipelineSchedule; import org.gitlab4j.api.models.PipelineStatus; +import org.gitlab4j.api.models.TestReportSummary; import org.gitlab4j.api.models.Trigger; import org.gitlab4j.api.models.Variable; import org.gitlab4j.models.Constants; @@ -794,6 +795,28 @@ public void deletePipelineScheduleVariable(Object projectIdOrPath, Long pipeline key); } + /** + * Get the test report summary for a pipeline. + * + *
GET /projects/:id/pipelines/:pipeline_id/test_report_summary
+ *
+ * @param projectIdOrPath projectIdOrPath the project in the form of an Long(ID), String(path), or Project instance, required
+ * @param pipelineId the pipeline ID
+ * @return the test report summary for the pipeline
+ */
+ public TestReportSummary getTestReportSummaryForPipeline(Object projectIdOrPath, long pipelineId)
+ throws GitLabApiException {
+ Response response = get(
+ Response.Status.OK,
+ null,
+ "projects",
+ getProjectIdOrPath(projectIdOrPath),
+ "pipelines",
+ pipelineId,
+ "test_report_summary");
+ return response.readEntity(TestReportSummary.class);
+ }
+
/**
* Get a list of the project pipeline triggers for the specified project.
*
diff --git a/gitlab4j-api/src/test/java/org/gitlab4j/api/TestPipelineApi.java b/gitlab4j-api/src/test/java/org/gitlab4j/api/TestPipelineApi.java
index af681133d..d28c198bc 100644
--- a/gitlab4j-api/src/test/java/org/gitlab4j/api/TestPipelineApi.java
+++ b/gitlab4j-api/src/test/java/org/gitlab4j/api/TestPipelineApi.java
@@ -22,6 +22,7 @@
import org.gitlab4j.api.models.Project;
import org.gitlab4j.api.models.RepositoryFile;
import org.gitlab4j.api.models.RepositoryFileResponse;
+import org.gitlab4j.api.models.TestReportSummary;
import org.gitlab4j.api.models.Trigger;
import org.gitlab4j.api.models.Variable;
import org.gitlab4j.models.Constants;
@@ -401,4 +402,12 @@ public void testGetBridges() throws GitLabApiException {
.collect(Collectors.toSet());
assertNotNull(bridges);
}
+
+ @Test
+ @Disabled("disable till 'Move the test infrastructure to Testcontainers #925'")
+ public void testGetTestReportSummary() throws GitLabApiException {
+ TestReportSummary testReportSummary =
+ gitLabApi.getPipelineApi().getTestReportSummaryForPipeline(testProject, 4L);
+ assertNotNull(testReportSummary);
+ }
}
diff --git a/gitlab4j-models/src/main/java/org/gitlab4j/api/models/TestReportStats.java b/gitlab4j-models/src/main/java/org/gitlab4j/api/models/TestReportStats.java
new file mode 100644
index 000000000..7e04d8867
--- /dev/null
+++ b/gitlab4j-models/src/main/java/org/gitlab4j/api/models/TestReportStats.java
@@ -0,0 +1,78 @@
+package org.gitlab4j.api.models;
+
+import java.io.Serializable;
+
+import org.gitlab4j.models.utils.JacksonJson;
+
+public class TestReportStats implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ private Long time;
+ private Long count;
+ private Long success;
+ private Long failed;
+ private Long skipped;
+ private Long error;
+ private String suiteError;
+
+ public Long getTime() {
+ return time;
+ }
+
+ public void setTime(Long time) {
+ this.time = time;
+ }
+
+ public Long getCount() {
+ return count;
+ }
+
+ public void setCount(Long count) {
+ this.count = count;
+ }
+
+ public Long getSuccess() {
+ return success;
+ }
+
+ public void setSuccess(Long success) {
+ this.success = success;
+ }
+
+ public Long getFailed() {
+ return failed;
+ }
+
+ public void setFailed(Long failed) {
+ this.failed = failed;
+ }
+
+ public Long getSkipped() {
+ return skipped;
+ }
+
+ public void setSkipped(Long skipped) {
+ this.skipped = skipped;
+ }
+
+ public Long getError() {
+ return error;
+ }
+
+ public void setError(Long error) {
+ this.error = error;
+ }
+
+ public String getSuiteError() {
+ return suiteError;
+ }
+
+ public void setSuiteError(String suiteError) {
+ this.suiteError = suiteError;
+ }
+
+ @Override
+ public String toString() {
+ return (JacksonJson.toJsonString(this));
+ }
+}
diff --git a/gitlab4j-models/src/main/java/org/gitlab4j/api/models/TestReportSummary.java b/gitlab4j-models/src/main/java/org/gitlab4j/api/models/TestReportSummary.java
new file mode 100644
index 000000000..bb46201ee
--- /dev/null
+++ b/gitlab4j-models/src/main/java/org/gitlab4j/api/models/TestReportSummary.java
@@ -0,0 +1,34 @@
+package org.gitlab4j.api.models;
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.gitlab4j.models.utils.JacksonJson;
+
+public class TestReportSummary implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ private TestReportStats total;
+ private List