fusible 0.14.1

Electronic linter: a fuse that blows to block firmware code generation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use super::bom::save;

#[test]
fn a_saved_bom_round_trips_and_a_bad_one_writes_nothing() {
    let dir = std::env::temp_dir().join(format!("fusible-bom-{}", std::process::id()));
    std::fs::create_dir_all(&dir).unwrap();
    let path = dir.join("bom.yml");
    let good = r#"{"parts":{"m3":{"quantity":4,"unit_price":0.25}}}"#;
    assert!(save(&path, good).is_ok());
    assert!(std::fs::read_to_string(&path).unwrap().contains("m3"));
    let bad = r#"{"parts":{"m3":{"unit_price":-1}}}"#;
    assert_eq!(save(&path, bad).unwrap_err().0, 400);
    let unknown = r#"{"nope":1}"#;
    assert_eq!(save(&path, unknown).unwrap_err().0, 400);
    std::fs::remove_dir_all(&dir).unwrap();
}