use markdown::{ mdast::{Html, Node, Paragraph, Root, Text}, to_html, to_html_with_options, to_mdast, unist::Position, CompileOptions, Constructs, Options, ParseOptions, }; use pretty_assertions::assert_eq; #[test] fn html_text() -> Result<(), String> { let danger = Options { compile: CompileOptions { allow_dangerous_html: true, allow_dangerous_protocol: true, ..Default::default() }, ..Default::default() }; assert_eq!( to_html("a c"), "
a <b> c
", "should encode dangerous html by default" ); assert_eq!( to_html_with_options("Foo
<33> <__>
", "should not support nonconforming tag names" ); assert_eq!( to_html_with_options("", &danger)?, "<a h*#ref="hi">
", "should not support nonconforming attribute names" ); assert_eq!( to_html_with_options(" ", &danger)?, "<a href="hi'> <a href=hi'>
", "should not support nonconforming attribute values" ); assert_eq!( to_html_with_options("< a><\nfoo>< a><\nfoo><bar/ >\n<foo bar=baz\nbim!bop />
", "should not support nonconforming whitespace" ); assert_eq!( to_html_with_options("", &danger)?, "<a href='bar'title=title>
", "should not support missing whitespace" ); assert_eq!( to_html_with_options("", &danger)?, "</a href="foo">
", "should not support closing tags w/ attributes" ); assert_eq!( to_html_with_options("foo ", &danger)?, "foo
", "should support comments" ); assert_eq!( to_html_with_options("foo ", &danger)?, "foo <!-- not a comment -- two hyphens -->
", "should not support comments w/ two dashes inside" ); assert_eq!( to_html_with_options("foo foo -->", &danger)?, "foo <!--> foo -->
", "should not support nonconforming comments (1)" ); assert_eq!( to_html_with_options("foo ", &danger)?, "foo <!-- foo--->
", "should not support nonconforming comments (2)" ); assert_eq!( to_html_with_options("foo ", &danger)?, "foo
", "should support instructions" ); assert_eq!( to_html_with_options("foo ", &danger)?, "foo
", "should support declarations" ); assert_eq!( to_html_with_options("foo &<]]>", &danger)?, "foo &<]]>
", "should support cdata" ); assert_eq!( to_html_with_options("foo ", &danger)?, "", "should support (ignore) character references" ); assert_eq!( to_html_with_options("foo ", &danger)?, "", "should not support character escapes (1)" ); assert_eq!( to_html_with_options("", &danger)?, "<a href=""">
", "should not support character escapes (2)" ); // Extra: assert_eq!( to_html_with_options("foo ", &danger)?, "foo <!1>
", "should not support non-comment, non-cdata, and non-named declaration" ); assert_eq!( to_html_with_options("foo ", &danger)?, "foo <!-not enough!-->
", "should not support comments w/ not enough dashes" ); assert_eq!( to_html_with_options("foo ", &danger)?, "foo
", "should support comments that start w/ a dash, if it’s not followed by a greater than" ); assert_eq!( to_html_with_options("foo ", &danger)?, "foo <!--->
", "should not support comments that start w/ `->`" ); assert_eq!( to_html_with_options("foo ", &danger)?, "foo
", "should support `->` in a comment" ); assert_eq!( to_html_with_options("foo