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}