use git_config::parse::Events; use super::*; #[test] fn fuzz() { assert!( Events::from_str("[]A=\\\\\r\\\n\n").is_err(), "empty sections are not allowed, and it won't crash either" ); } #[test] #[rustfmt::skip] fn complex() { let config = r#"[user] email = code@eddie.sh name = Foo Bar [core] autocrlf = input [push] default = simple [commit] gpgsign = true [gpg] program = gpg [url "ssh://git@github.com/"] insteadOf = "github://" [url "ssh://git@git.eddie.sh/edward/"] insteadOf = "gitea://" [pull] ff = only [init] defaultBranch = master"#; assert_eq!( Events::from_str(config) .unwrap() .into_iter() .collect::>(), vec![ section::header_event("user", None), newline(), whitespace(" "), name("email"), whitespace(" "), separator(), whitespace(" "), value("code@eddie.sh"), newline(), whitespace(" "), name("name"), whitespace(" "), separator(), whitespace(" "), value("Foo Bar"), newline(), section::header_event("core", None), newline(), whitespace(" "), name("autocrlf"), whitespace(" "), separator(), whitespace(" "), value("input"), newline(), section::header_event("push", None), newline(), whitespace(" "), name("default"), whitespace(" "), separator(), whitespace(" "), value("simple"), newline(), section::header_event("commit", None), newline(), whitespace(" "), name("gpgsign"), whitespace(" "), separator(), whitespace(" "), value("true"), newline(), section::header_event("gpg", None), newline(), whitespace(" "), name("program"), whitespace(" "), separator(), whitespace(" "), value("gpg"), newline(), section::header_event("url", "ssh://git@github.com/"), newline(), whitespace(" "), name("insteadOf"), whitespace(" "), separator(), whitespace(" "), value("\"github://\""), newline(), section::header_event("url", "ssh://git@git.eddie.sh/edward/"), newline(), whitespace(" "), name("insteadOf"), whitespace(" "), separator(), whitespace(" "), value("\"gitea://\""), newline(), section::header_event("pull", None), newline(), whitespace(" "), name("ff"), whitespace(" "), separator(), whitespace(" "), value("only"), newline(), section::header_event("init", None), newline(), whitespace(" "), name("defaultBranch"), whitespace(" "), separator(), whitespace(" "), value("master"), ] ); } #[test] fn skips_bom() { let bytes = b" [core] a = 1 "; let bytes_with_gb18030_bom = "\u{feff} [core] a = 1 "; assert_eq!( Events::from_bytes(bytes, None), Events::from_bytes(bytes_with_gb18030_bom.as_bytes(), None) ); assert_eq!( Events::from_bytes_owned(bytes, None), Events::from_bytes_owned(bytes_with_gb18030_bom.as_bytes(), None) ); }