anza_xtask/buildkite/
trigger_step.rs1use {super::Build, serde::Serialize};
2
3#[derive(Debug, Serialize, PartialEq)]
4pub struct TriggerStep {
5 #[serde(skip_serializing_if = "String::is_empty")]
6 pub name: String,
7
8 #[serde(skip_serializing_if = "String::is_empty")]
9 pub trigger: String,
10
11 #[serde(skip_serializing_if = "Vec::is_empty")]
12 pub branches: Vec<String>,
13
14 #[serde(rename = "async", skip_serializing_if = "Option::is_none")]
15 pub is_async: Option<bool>,
16
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub soft_fail: Option<bool>,
19
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub build: Option<Build>,
22}
23
24#[cfg(test)]
25mod tests {
26 use {
27 super::*, crate::buildkite::test_utils::assert_serialized_json, std::collections::HashMap,
28 };
29
30 #[test]
31 fn test_trigger_step_serialize_json() {
32 assert_serialized_json(
33 &TriggerStep {
34 name: String::from("Trigger Build on agave-secondary"),
35 trigger: String::from("agave-secondary"),
36 branches: vec![String::from("!pull/*")],
37 is_async: Some(true),
38 soft_fail: Some(true),
39 build: Some(Build {
40 message: Some(String::from("${BUILDKITE_MESSAGE}")),
41 commit: Some(String::from("${BUILDKITE_COMMIT}")),
42 branch: Some(String::from("${BUILDKITE_BRANCH}")),
43 env: Some(HashMap::from([(
44 String::from("TRIGGERED_BUILDKITE_TAG"),
45 String::from("${BUILDKITE_TAG}"),
46 )])),
47 }),
48 },
49 r#"{
50 "name": "Trigger Build on agave-secondary",
51 "trigger": "agave-secondary",
52 "branches": ["!pull/*"],
53 "async": true,
54 "soft_fail": true,
55 "build": {
56 "branch": "${BUILDKITE_BRANCH}",
57 "commit": "${BUILDKITE_COMMIT}",
58 "message": "${BUILDKITE_MESSAGE}",
59 "env": {"TRIGGERED_BUILDKITE_TAG": "${BUILDKITE_TAG}"}
60 }
61 }"#,
62 );
63
64 assert_serialized_json(
65 &TriggerStep {
66 name: String::from("Trigger Build on agave-secondary"),
67 trigger: String::from("agave-secondary"),
68 branches: vec![],
69 is_async: None,
70 soft_fail: None,
71 build: None,
72 },
73 r#"{
74 "name": "Trigger Build on agave-secondary",
75 "trigger": "agave-secondary"
76 }"#,
77 );
78 }
79}