diff options
| author | 2022-10-29 14:03:59 +0200 | |
|---|---|---|
| committer | 2022-11-25 11:21:15 +0100 | |
| commit | 4f776347163a514abadc7ded95e66a459be03bc9 (patch) | |
| tree | a518ece6a62c939b3c468f2947e82e608300b664 /tests | |
| parent | d5ae7bb13fdb5e855c678ced9b66d26674e08136 (diff) | |
| download | markdown-rs-4f776347163a514abadc7ded95e66a459be03bc9.tar.gz markdown-rs-4f776347163a514abadc7ded95e66a459be03bc9.tar.bz2 markdown-rs-4f776347163a514abadc7ded95e66a459be03bc9.zip  | |
Fix GFM task list checkboxes followed by eol
Closes GH-24.
Diffstat (limited to '')
| -rw-r--r-- | tests/fuzz.rs | 8 | ||||
| -rw-r--r-- | tests/gfm_task_list_item.rs | 60 | 
2 files changed, 67 insertions, 1 deletions
diff --git a/tests/fuzz.rs b/tests/fuzz.rs index d1a87b7..297e6a9 100644 --- a/tests/fuzz.rs +++ b/tests/fuzz.rs @@ -109,5 +109,13 @@ fn fuzz() -> Result<(), String> {          "10: attention in different links (GH-21)"      ); +    assert!( +        matches!( +            to_mdast("* [ ]\na", &Default::default()), +            Ok(mdast::Node::Root(_)) +        ), +        "11: gfm task list items followed by eols (GH-24)" +    ); +      Ok(())  } diff --git a/tests/gfm_task_list_item.rs b/tests/gfm_task_list_item.rs index 638206f..8b3f066 100644 --- a/tests/gfm_task_list_item.rs +++ b/tests/gfm_task_list_item.rs @@ -1,5 +1,5 @@  use markdown::{ -    mdast::{List, ListItem, Node, Paragraph, Root, Text}, +    mdast::{Emphasis, List, ListItem, Node, Paragraph, Root, Text},      to_html, to_html_with_options, to_mdast,      unist::Position,      Options, ParseOptions, @@ -291,5 +291,63 @@ Text.</li>          "should support task list items as `checked` fields on `ListItem`s in mdast"      ); +    assert_eq!( +        to_mdast( +            "* [x]\r\n  a\n* [ ]   b\n* [x]\t \r*c*", +            &ParseOptions::gfm() +        )?, +        Node::Root(Root { +            children: vec![Node::List(List { +                ordered: false, +                spread: false, +                start: None, +                children: vec![ +                    Node::ListItem(ListItem { +                        checked: Some(true), +                        spread: false, +                        children: vec![Node::Paragraph(Paragraph { +                            children: vec![Node::Text(Text { +                                value: "a".into(), +                                position: Some(Position::new(2, 1, 7, 2, 4, 10)) +                            }),], +                            position: Some(Position::new(2, 1, 7, 2, 4, 10)) +                        })], +                        position: Some(Position::new(1, 1, 0, 2, 4, 10)) +                    }), +                    Node::ListItem(ListItem { +                        checked: Some(false), +                        spread: false, +                        children: vec![Node::Paragraph(Paragraph { +                            children: vec![Node::Text(Text { +                                value: "  b".into(), +                                position: Some(Position::new(3, 7, 17, 3, 10, 20)) +                            }),], +                            position: Some(Position::new(3, 7, 17, 3, 10, 20)) +                        })], +                        position: Some(Position::new(3, 1, 11, 3, 10, 20)) +                    }), +                    Node::ListItem(ListItem { +                        checked: Some(true), +                        spread: false, +                        children: vec![Node::Paragraph(Paragraph { +                            children: vec![Node::Emphasis(Emphasis { +                                children: vec![Node::Text(Text { +                                    value: "c".into(), +                                    position: Some(Position::new(5, 2, 30, 5, 3, 31)) +                                }),], +                                position: Some(Position::new(5, 1, 29, 5, 4, 32)) +                            })], +                            position: Some(Position::new(5, 1, 29, 5, 4, 32)) +                        })], +                        position: Some(Position::new(4, 1, 21, 5, 4, 32)) +                    }), +                ], +                position: Some(Position::new(1, 1, 0, 5, 4, 32)) +            })], +            position: Some(Position::new(1, 1, 0, 5, 4, 32)) +        }), +        "should handle lots of whitespace after checkbox, and non-text" +    ); +      Ok(())  }  | 
