oci_runtime_spec/
lib.rs

1#[macro_use]
2extern crate serde_derive;
3
4#[macro_use]
5extern crate derive_builder;
6
7pub mod spec;
8
9#[cfg(test)]
10mod tests {
11    use crate::spec::*;
12    use glob::glob;
13    use serde_json;
14    use std::fs::File;
15
16    #[test]
17    fn builder() -> Result<(), String> {
18        ConfigSchemaBuilder::default()
19            .oci_version("1.0.0")
20            .process(
21                ProcessBuilder::default()
22                    .args(vec!["sleep".to_string(), "1".to_string()])
23                    .cwd("/root")
24                    .build()?,
25            )
26            .build()?;
27        Ok(())
28    }
29
30    #[test]
31    fn config_good() {
32        let mut count = 0;
33        for entry in glob("../runtime-spec/schema/test/config/good/*.json").unwrap() {
34            let entry = entry.unwrap();
35            let msg = format!("good file {}", &entry.display());
36            let json = File::open(&entry).expect(&format!("opening {}", &msg));
37            let _config: ConfigSchema =
38                serde_json::from_reader(&json).expect(&format!("parsing {:?}", &msg));
39            count += 1;
40        }
41        assert_eq!(4, count);
42    }
43
44    #[test]
45    fn config_bad() {
46        let mut count = 0;
47        for entry in glob("../runtime-spec/schema/test/config/bad/*.json").unwrap() {
48            let entry = entry.unwrap();
49            let msg = format!("bad file {}", &entry.display());
50            let json = File::open(&entry).expect(&format!("opening {}", &msg));
51            let res: Result<ConfigSchema, serde_json::Error> = serde_json::from_reader(&json);
52            res.expect_err(&format!("should not parse {:?}", &msg));
53            count += 1;
54        }
55        assert_eq!(2, count);
56    }
57    #[test]
58    fn state_good() {
59        let mut count = 0;
60        for entry in glob("../runtime-spec/schema/test/state/good/*.json").unwrap() {
61            let entry = entry.unwrap();
62            let msg = format!("good file {}", &entry.display());
63            let json = File::open(&entry).expect(&format!("opening {}", &msg));
64            let _state: StateSchema =
65                serde_json::from_reader(&json).expect(&format!("parsing {:?}", &msg));
66            count += 1;
67        }
68        assert_eq!(1, count);
69    }
70
71    #[test]
72    fn state_bad() {
73        let mut count = 0;
74        for entry in glob("../runtime-spec/schema/test/state/bad/*.json").unwrap() {
75            let entry = entry.unwrap();
76            let msg = format!("bad file {}", &entry.display());
77            let json = File::open(&entry).expect(&format!("opening {}", &msg));
78            let res: Result<StateSchema, serde_json::Error> = serde_json::from_reader(&json);
79            res.expect_err(&format!("should not parse {:?}", &msg));
80            count += 1;
81        }
82        assert_eq!(1, count);
83    }
84}