Sebastian Thielrefactor07e0f5e4 years agoHistory
111 lines · 2.9 KB · Rust
RawDownload
use std::{borrow::Cow, convert::TryFrom}; use git_config::File;use git_testtools::fixture_path; fn init_config() -> File<'static> {    File::open(fixture_path("multi-core.txt")).unwrap()} #[test]fn value_is_correct() {    let mut git_config = init_config();     let value = git_config.raw_multi_value_mut("core", None, "a").unwrap();    assert_eq!(        &*value.get().unwrap(),        vec![            Cow::<[u8]>::Owned(b"b100".to_vec()),            Cow::<[u8]>::Borrowed(b"d"),            Cow::<[u8]>::Borrowed(b"f"),        ]    );} #[test]fn non_empty_sizes_are_correct() {    let mut git_config = init_config();    assert_eq!(git_config.raw_multi_value_mut("core", None, "a").unwrap().len(), 3);    assert!(!git_config.raw_multi_value_mut("core", None, "a").unwrap().is_empty());} #[test]fn set_value_at_start() {    let mut git_config = init_config();    let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap();    values.set_string(0, "Hello".to_string());    assert_eq!(        git_config.to_string(),        "[core]\n    a=Hello\n    [core]\n        a=d\n        a=f"    );} #[test]fn set_value_at_end() {    let mut git_config = init_config();    let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap();    values.set_string(2, "Hello".to_string());    assert_eq!(        git_config.to_string(),        "[core]\n    a=b\"100\"\n    [core]\n        a=d\n        a=Hello"    );} #[test]fn set_values_all() {    let mut git_config = init_config();    let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap();    values.set_owned_values_all(b"Hello");    assert_eq!(        git_config.to_string(),        "[core]\n    a=Hello\n    [core]\n        a=Hello\n        a=Hello"    );} #[test]fn delete() {    let mut git_config = init_config();    let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap();    values.delete(0);    assert_eq!(        git_config.to_string(),        "[core]\n    \n    [core]\n        a=d\n        a=f",    );} #[test]fn delete_all() {    let mut git_config = init_config();    let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap();    values.delete_all();    assert!(values.get().is_err());    assert_eq!(git_config.to_string(), "[core]\n    \n    [core]\n        \n        ",);} #[test]fn partial_values_are_supported() {    let mut git_config = File::try_from(        r#"[core]            a=b\"100"        [core]            a=d\b            a=f\a"#,    )    .unwrap();    let mut values = git_config.raw_multi_value_mut("core", None, "a").unwrap();     assert_eq!(        &*values.get().unwrap(),        vec![            Cow::<[u8]>::Owned(b"b100".to_vec()),            Cow::<[u8]>::Borrowed(b"db"),            Cow::<[u8]>::Borrowed(b"fa"),        ]    );     values.delete_all();    assert!(values.get().is_err());}