insta/content/yaml/vendored/
mod.rs

1//! Copyright 2015, Yuheng Chen. Apache 2 licensed.
2//!
3//! This vendored code used to be yaml-rust.  It's intended to be replaced in
4//! the next major version with a yaml-rust2 which is an actively maintained
5//! version of this.  Is it has different snapshot formats and different
6//! MSRV requirements, we vendor it temporarily.
7
8#![allow(unused)]
9
10pub mod emitter;
11pub mod parser;
12pub mod scanner;
13pub mod yaml;
14
15pub use self::yaml::Yaml;
16
17#[cfg(test)]
18mod tests {
19    use super::*;
20
21    use crate::content::yaml::vendored::emitter::YamlEmitter;
22    use crate::content::yaml::vendored::scanner::ScanError;
23    use crate::content::yaml::vendored::yaml::YamlLoader;
24
25    #[test]
26    fn test_api() {
27        let s = "
28# from yaml-cpp example
29- name: Ogre
30  position: [0, 5, 0]
31  powers:
32    - name: Club
33      damage: 10
34    - name: Fist
35      damage: 8
36- name: Dragon
37  position: [1, 0, 10]
38  powers:
39    - name: Fire Breath
40      damage: 25
41    - name: Claws
42      damage: 15
43- name: Wizard
44  position: [5, -3, 0]
45  powers:
46    - name: Acid Rain
47      damage: 50
48    - name: Staff
49      damage: 3
50";
51        let docs = YamlLoader::load_from_str(s).unwrap();
52        let doc = &docs[0];
53
54        assert_eq!(doc[0]["name"].as_str().unwrap(), "Ogre");
55
56        let mut writer = String::new();
57        {
58            let mut emitter = YamlEmitter::new(&mut writer);
59            emitter.dump(doc).unwrap();
60        }
61
62        assert!(!writer.is_empty());
63    }
64
65    fn try_fail(s: &str) -> Result<Vec<Yaml>, ScanError> {
66        let t = YamlLoader::load_from_str(s)?;
67        Ok(t)
68    }
69
70    #[test]
71    fn test_fail() {
72        let s = "
73# syntax error
74scalar
75key: [1, 2]]
76key1:a2
77";
78        assert!(YamlLoader::load_from_str(s).is_err());
79        assert!(try_fail(s).is_err());
80    }
81}