Skip to content

Commit aeb4a23

Browse files
mathstufkwrobot
authored andcommitted
Merge topic 'feat/pipelines_test_reports_endpoint'
0982952 Fix missing pub use of pipelines test report structs 9099c47 Add pipelines test_report endpoint Acked-by: Kitware Robot <[email protected]> Tested-by: buildbot <[email protected]> Reviewed-by: Ben Boeckel <[email protected]> Merge-request: !463
2 parents 7115933 + 0982952 commit aeb4a23

File tree

4 files changed

+106
-1
lines changed

4 files changed

+106
-1
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
## Additions
99
* Add `api::projects::repository::commits::refs` endpoint
10+
* Add `api::pipelines::PipelineTestReport` endpoint
1011

1112
# v0.1610.0
1213

src/api/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ These API endpoints have been implemented.
153153
* `GET /projects/:project/pipelines/:pipeline/jobs` `projects/pipelines/jobs.rs`
154154
* `POST /projects/:project/pipelines/:pipeline/retry` `projects/pipelines/retry.rs`
155155
* `GET /projects/:project/pipelines/:pipeline/variables` `projects/pipelines/variables.rs`
156+
* `GET /projects/:project/pipelines/:pipeline/test_report` `projects/pipelines/test_report.rs`
156157
* `GET /projects/:project/pipeline_schedules` `projects/pipeline_schedules/schedules.rs`
157158
* `POST /projects/:project/pipeline_schedules` `projects/pipeline_schedules/create.rs`
158159
* `GET /projects/:project/pipeline_schedules/:id` `projects/pipeline_schedules/schedule.rs`
@@ -432,7 +433,6 @@ instead of having to search the page for missing endpoints.
432433
* `GET /projects/:project/pipeline/latest` https://gitlab.kitware.com/help/api/pipelines.md#get-the-latest-pipeline
433434
* `GET /projects/:project/pipelines/:pipeline/bridges` https://gitlab.kitware.com/help/api/pipelines.md#list-pipeline-bridges
434435
* `PUT /projects/:project/pipelines/:pipeline/metadata` https://gitlab.kitware.com/help/api/pipelines.md#update-pipeline-metadata
435-
* `GET /projects/:project/pipelines/:pipeline/test_report` https://gitlab.kitware.com/help/api/pipelines.md#get-a-pipelines-test-report
436436
* `GET /projects/:project/pipelines/:pipeline/test_report_summary` https://gitlab.kitware.com/help/api/pipelines.md#get-a-pipelines-test-report-summary
437437
* `GET /projects/:project/push_rule` https://gitlab.kitware.com/help/api/projects.md#get-project-push-rules
438438
* `POST /projects/:project/push_rule` https://gitlab.kitware.com/help/api/projects.md#add-project-push-rule

src/api/projects/pipelines.rs

+5
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ mod jobs;
1515
mod pipeline;
1616
mod pipelines;
1717
mod retry;
18+
mod test_report;
1819
mod variables;
1920

2021
pub use self::cancel::CancelPipeline;
@@ -56,3 +57,7 @@ pub use self::retry::RetryPipelineBuilderError;
5657
pub use self::variables::PipelineVariables;
5758
pub use self::variables::PipelineVariablesBuilder;
5859
pub use self::variables::PipelineVariablesBuilderError;
60+
61+
pub use self::test_report::PipelineTestReport;
62+
pub use self::test_report::PipelineTestReportBuilder;
63+
pub use self::test_report::PipelineTestReportBuilderError;
+99
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
2+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
4+
// option. This file may not be copied, modified, or distributed
5+
// except according to those terms.
6+
7+
use derive_builder::Builder;
8+
9+
use crate::api::common::NameOrId;
10+
use crate::api::endpoint_prelude::*;
11+
12+
/// Query for the test report of a pipeline.
13+
#[derive(Debug, Builder, Clone)]
14+
pub struct PipelineTestReport<'a> {
15+
/// The project of the pipelines.
16+
#[builder(setter(into))]
17+
project: NameOrId<'a>,
18+
/// The ID of the pipeline.
19+
pipeline: u64,
20+
}
21+
22+
impl<'a> PipelineTestReport<'a> {
23+
/// Create a builder for the endpoint.
24+
pub fn builder() -> PipelineTestReportBuilder<'a> {
25+
PipelineTestReportBuilder::default()
26+
}
27+
}
28+
29+
impl<'a> Endpoint for PipelineTestReport<'a> {
30+
fn method(&self) -> Method {
31+
Method::GET
32+
}
33+
34+
fn endpoint(&self) -> Cow<'static, str> {
35+
format!(
36+
"projects/{}/pipelines/{}/test_report",
37+
self.project, self.pipeline,
38+
)
39+
.into()
40+
}
41+
}
42+
43+
#[cfg(test)]
44+
mod tests {
45+
use crate::api::projects::pipelines::test_report::{
46+
PipelineTestReport, PipelineTestReportBuilderError,
47+
};
48+
use crate::api::{self, Query};
49+
use crate::test::client::{ExpectedUrl, SingleTestClient};
50+
51+
#[test]
52+
fn project_and_pipeline_are_needed() {
53+
let err = PipelineTestReport::builder().build().unwrap_err();
54+
crate::test::assert_missing_field!(err, PipelineTestReportBuilderError, "project");
55+
}
56+
57+
#[test]
58+
fn project_is_needed() {
59+
let err = PipelineTestReport::builder()
60+
.pipeline(1)
61+
.build()
62+
.unwrap_err();
63+
crate::test::assert_missing_field!(err, PipelineTestReportBuilderError, "project");
64+
}
65+
66+
#[test]
67+
fn pipeline_is_needed() {
68+
let err = PipelineTestReport::builder()
69+
.project(1)
70+
.build()
71+
.unwrap_err();
72+
crate::test::assert_missing_field!(err, PipelineTestReportBuilderError, "pipeline");
73+
}
74+
75+
#[test]
76+
fn project_and_pipeline_are_sufficient() {
77+
PipelineTestReport::builder()
78+
.project(1)
79+
.pipeline(1)
80+
.build()
81+
.unwrap();
82+
}
83+
84+
#[test]
85+
fn endpoint() {
86+
let endpoint = ExpectedUrl::builder()
87+
.endpoint("projects/simple%2Fproject/pipelines/1/test_report")
88+
.build()
89+
.unwrap();
90+
let client = SingleTestClient::new_raw(endpoint, "");
91+
92+
let endpoint = PipelineTestReport::builder()
93+
.project("simple/project")
94+
.pipeline(1)
95+
.build()
96+
.unwrap();
97+
api::ignore(endpoint).query(&client).unwrap();
98+
}
99+
}

0 commit comments

Comments
 (0)