Skip to main content

updatehub_package_schema/definitions/
truncate.rs

1// Copyright (C) 2019 O.S. Systems Sofware LTDA
2//
3// SPDX-License-Identifier: Apache-2.0
4
5use serde::Deserialize;
6
7/// True if the file pointed to by the `target_path` should be open in
8/// truncate mode (erase content before writing).
9#[derive(Clone, PartialEq, Eq, Debug, Deserialize)]
10pub struct Truncate(pub bool);
11
12impl Default for Truncate {
13    fn default() -> Self {
14        Truncate(true)
15    }
16}
17
18#[cfg(test)]
19mod test {
20    use super::*;
21    use pretty_assertions::assert_eq;
22    use serde_json::json;
23
24    #[derive(Debug, PartialEq, Eq, Deserialize)]
25    struct Payload {
26        #[serde(default)]
27        truncate: Truncate,
28    }
29
30    #[test]
31    fn deserialize() {
32        assert_eq!(
33            serde_json::from_value::<Payload>(json!({ "truncate": false })).ok(),
34            Some(Payload { truncate: Truncate(false) })
35        );
36    }
37
38    #[test]
39    fn default() {
40        assert_eq!(
41            serde_json::from_value::<Payload>(json!({})).ok(),
42            Some(Payload { truncate: Truncate(true) })
43        );
44    }
45}