197 lines · 5.1 KB · Rust
RawDownload
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"    );    assert!(        Events::from_str(include_str!(            "../../fixtures/clusterfuzz-testcase-minimized-gix-config-parse-6431708583690240"        ))        .is_err(),        "works without hanging - these 400kb take 10s in debug mode right now, but just as long in release mode. With nom all tests ran in below 1s in debug mode"    );} #[test]fn filters_receive_event_refs_for_content_access() {    fn reject_drop_values(event: EventRef<'_>) -> bool {        !matches!(event, EventRef::Value(value) if value == b"drop".as_slice())    }    let events = Events::from_bytes(b"[core]\nkeep = keep\ndrop = drop\n", Some(reject_drop_values))        .expect("content-based filters can inspect event bytes through views");     assert!(        !events            .iter()            .any(|event| matches!(event, EventRef::Value(value) if value == b"drop".as_slice())),        "the filter can reject events by inspecting their value bytes"    );} #[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"#;     let events = Events::from_str(config).unwrap();    assert_eq!(        events.iter().collect::<Vec<_>>(),        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";     fn render_events(events: &Events) -> Vec<u8> {        let mut out = Vec::new();        for event in events.iter() {            event.write_to(&mut out).expect("in-memory writes cannot fail");        }        out    }     assert_eq!(        Events::from_bytes(bytes, None).map(|events| render_events(&events)),        Events::from_bytes(bytes_with_gb18030_bom.as_bytes(), None).map(|events| render_events(&events))    );    assert_eq!(        Events::from_bytes(bytes, None).map(|events| render_events(&events)),        Events::from_bytes(bytes_with_gb18030_bom.as_bytes(), None).map(|events| render_events(&events))    );}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t