Skip to main content

anza_xtask/buildkite/
build.rs

1use {serde::Serialize, std::collections::HashMap};
2
3#[derive(Debug, Serialize, PartialEq)]
4pub struct Build {
5    #[serde(skip_serializing_if = "Option::is_none")]
6    pub branch: Option<String>,
7
8    #[serde(skip_serializing_if = "Option::is_none")]
9    pub commit: Option<String>,
10
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub message: Option<String>,
13
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub env: Option<HashMap<String, String>>,
16}
17
18#[cfg(test)]
19mod tests {
20    use super::*;
21    use crate::buildkite::test_utils::assert_serialized_json;
22
23    #[test]
24    fn test_build_serialize_json() {
25        assert_serialized_json(
26            &Build {
27                branch: Some(String::from("${BUILDKITE_BRANCH}")),
28                commit: Some(String::from("${BUILDKITE_COMMIT}")),
29                message: Some(String::from("${BUILDKITE_MESSAGE}")),
30                env: Some(HashMap::from([(
31                    String::from("TRIGGERED_BUILDKITE_TAG"),
32                    String::from("${BUILDKITE_TAG}"),
33                )])),
34            },
35            r#"{
36                "branch": "${BUILDKITE_BRANCH}",
37                "commit": "${BUILDKITE_COMMIT}",
38                "message": "${BUILDKITE_MESSAGE}",
39                "env": {"TRIGGERED_BUILDKITE_TAG": "${BUILDKITE_TAG}"}
40            }"#,
41        );
42    }
43}