anza-xtask 0.2.0

Blockchain, Rebuilt for Scale
Documentation
use {serde::Serialize, std::collections::HashMap};

#[derive(Debug, Serialize, PartialEq)]
pub struct Build {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub branch: Option<String>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub commit: Option<String>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub message: Option<String>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub env: Option<HashMap<String, String>>,
}

#[cfg(test)]
mod tests {
    use super::*;
    use crate::buildkite::test_utils::assert_serialized_json;

    #[test]
    fn test_build_serialize_json() {
        assert_serialized_json(
            &Build {
                branch: Some(String::from("${BUILDKITE_BRANCH}")),
                commit: Some(String::from("${BUILDKITE_COMMIT}")),
                message: Some(String::from("${BUILDKITE_MESSAGE}")),
                env: Some(HashMap::from([(
                    String::from("TRIGGERED_BUILDKITE_TAG"),
                    String::from("${BUILDKITE_TAG}"),
                )])),
            },
            r#"{
                "branch": "${BUILDKITE_BRANCH}",
                "commit": "${BUILDKITE_COMMIT}",
                "message": "${BUILDKITE_MESSAGE}",
                "env": {"TRIGGERED_BUILDKITE_TAG": "${BUILDKITE_TAG}"}
            }"#,
        );
    }
}