aboutsummaryrefslogtreecommitdiffstats
path: root/tests/html_text.rs
diff options
context:
space:
mode:
authorLibravatar Titus Wormer <tituswormer@gmail.com>2022-09-07 15:53:06 +0200
committerLibravatar Titus Wormer <tituswormer@gmail.com>2022-09-07 15:53:06 +0200
commit1d92666865b35341e076efbefddf6e73b5e1542e (patch)
tree11c05985ec7679f73473e7ea2c769465698e2f08 /tests/html_text.rs
parente6018e52ee6ad9a8f8a0672b75bf515faf74af1f (diff)
downloadmarkdown-rs-1d92666865b35341e076efbefddf6e73b5e1542e.tar.gz
markdown-rs-1d92666865b35341e076efbefddf6e73b5e1542e.tar.bz2
markdown-rs-1d92666865b35341e076efbefddf6e73b5e1542e.zip
Add support for recoverable syntax errors
Diffstat (limited to 'tests/html_text.rs')
-rw-r--r--tests/html_text.rs138
1 files changed, 70 insertions, 68 deletions
diff --git a/tests/html_text.rs b/tests/html_text.rs
index 988ebbc..8fdbbd2 100644
--- a/tests/html_text.rs
+++ b/tests/html_text.rs
@@ -3,7 +3,7 @@ use micromark::{micromark, micromark_with_options, Constructs, Options};
use pretty_assertions::assert_eq;
#[test]
-fn html_text() {
+fn html_text() -> Result<(), String> {
let danger = Options {
allow_dangerous_html: true,
..Options::default()
@@ -16,19 +16,19 @@ fn html_text() {
);
assert_eq!(
- micromark_with_options("<a><bab><c2c>", &danger),
+ micromark_with_options("<a><bab><c2c>", &danger)?,
"<p><a><bab><c2c></p>",
"should support opening tags"
);
assert_eq!(
- micromark_with_options("<a/><b2/>", &danger),
+ micromark_with_options("<a/><b2/>", &danger)?,
"<p><a/><b2/></p>",
"should support self-closing tags"
);
assert_eq!(
- micromark_with_options("<a /><b2\ndata=\"foo\" >", &danger),
+ micromark_with_options("<a /><b2\ndata=\"foo\" >", &danger)?,
"<p><a /><b2\ndata=\"foo\" ></p>",
"should support whitespace in tags"
);
@@ -37,170 +37,170 @@ fn html_text() {
micromark_with_options(
"<a foo=\"bar\" bam = 'baz <em>\"</em>'\n_boolean zoop:33=zoop:33 />",
&danger
- ),
+ )?,
"<p><a foo=\"bar\" bam = 'baz <em>\"</em>'\n_boolean zoop:33=zoop:33 /></p>",
"should support attributes on tags"
);
assert_eq!(
- micromark_with_options("Foo <responsive-image src=\"foo.jpg\" />", &danger),
+ micromark_with_options("Foo <responsive-image src=\"foo.jpg\" />", &danger)?,
"<p>Foo <responsive-image src=\"foo.jpg\" /></p>",
"should support non-html tags"
);
assert_eq!(
- micromark_with_options("<33> <__>", &danger),
+ micromark_with_options("<33> <__>", &danger)?,
"<p>&lt;33&gt; &lt;__&gt;</p>",
"should not support nonconforming tag names"
);
assert_eq!(
- micromark_with_options("<a h*#ref=\"hi\">", &danger),
+ micromark_with_options("<a h*#ref=\"hi\">", &danger)?,
"<p>&lt;a h*#ref=&quot;hi&quot;&gt;</p>",
"should not support nonconforming attribute names"
);
assert_eq!(
- micromark_with_options("<a href=\"hi'> <a href=hi'>", &danger),
+ micromark_with_options("<a href=\"hi'> <a href=hi'>", &danger)?,
"<p>&lt;a href=&quot;hi'&gt; &lt;a href=hi'&gt;</p>",
"should not support nonconforming attribute values"
);
assert_eq!(
- micromark_with_options("< a><\nfoo><bar/ >\n<foo bar=baz\nbim!bop />", &danger),
+ micromark_with_options("< a><\nfoo><bar/ >\n<foo bar=baz\nbim!bop />", &danger)?,
"<p>&lt; a&gt;&lt;\nfoo&gt;&lt;bar/ &gt;\n&lt;foo bar=baz\nbim!bop /&gt;</p>",
"should not support nonconforming whitespace"
);
assert_eq!(
- micromark_with_options("<a href='bar'title=title>", &danger),
+ micromark_with_options("<a href='bar'title=title>", &danger)?,
"<p>&lt;a href='bar'title=title&gt;</p>",
"should not support missing whitespace"
);
assert_eq!(
- micromark_with_options("</a></foo >", &danger),
+ micromark_with_options("</a></foo >", &danger)?,
"<p></a></foo ></p>",
"should support closing tags"
);
assert_eq!(
- micromark_with_options("</a href=\"foo\">", &danger),
+ micromark_with_options("</a href=\"foo\">", &danger)?,
"<p>&lt;/a href=&quot;foo&quot;&gt;</p>",
"should not support closing tags w/ attributes"
);
assert_eq!(
- micromark_with_options("foo <!-- this is a\ncomment - with hyphen -->", &danger),
+ micromark_with_options("foo <!-- this is a\ncomment - with hyphen -->", &danger)?,
"<p>foo <!-- this is a\ncomment - with hyphen --></p>",
"should support comments"
);
assert_eq!(
- micromark_with_options("foo <!-- not a comment -- two hyphens -->", &danger),
+ micromark_with_options("foo <!-- not a comment -- two hyphens -->", &danger)?,
"<p>foo &lt;!-- not a comment -- two hyphens --&gt;</p>",
"should not support comments w/ two dashes inside"
);
assert_eq!(
- micromark_with_options("foo <!--> foo -->", &danger),
+ micromark_with_options("foo <!--> foo -->", &danger)?,
"<p>foo &lt;!--&gt; foo --&gt;</p>",
"should not support nonconforming comments (1)"
);
assert_eq!(
- micromark_with_options("foo <!-- foo--->", &danger),
+ micromark_with_options("foo <!-- foo--->", &danger)?,
"<p>foo &lt;!-- foo---&gt;</p>",
"should not support nonconforming comments (2)"
);
assert_eq!(
- micromark_with_options("foo <?php echo $a; ?>", &danger),
+ micromark_with_options("foo <?php echo $a; ?>", &danger)?,
"<p>foo <?php echo $a; ?></p>",
"should support instructions"
);
assert_eq!(
- micromark_with_options("foo <!ELEMENT br EMPTY>", &danger),
+ micromark_with_options("foo <!ELEMENT br EMPTY>", &danger)?,
"<p>foo <!ELEMENT br EMPTY></p>",
"should support declarations"
);
assert_eq!(
- micromark_with_options("foo <![CDATA[>&<]]>", &danger),
+ micromark_with_options("foo <![CDATA[>&<]]>", &danger)?,
"<p>foo <![CDATA[>&<]]></p>",
"should support cdata"
);
assert_eq!(
- micromark_with_options("foo <a href=\"&ouml;\">", &danger),
+ micromark_with_options("foo <a href=\"&ouml;\">", &danger)?,
"<p>foo <a href=\"&ouml;\"></p>",
"should support (ignore) character references"
);
assert_eq!(
- micromark_with_options("foo <a href=\"\\*\">", &danger),
+ micromark_with_options("foo <a href=\"\\*\">", &danger)?,
"<p>foo <a href=\"\\*\"></p>",
"should not support character escapes (1)"
);
assert_eq!(
- micromark_with_options("<a href=\"\\\"\">", &danger),
+ micromark_with_options("<a href=\"\\\"\">", &danger)?,
"<p>&lt;a href=&quot;&quot;&quot;&gt;</p>",
"should not support character escapes (2)"
);
// Extra:
assert_eq!(
- micromark_with_options("foo <!1>", &danger),
+ micromark_with_options("foo <!1>", &danger)?,
"<p>foo &lt;!1&gt;</p>",
"should not support non-comment, non-cdata, and non-named declaration"
);
assert_eq!(
- micromark_with_options("foo <!-not enough!-->", &danger),
+ micromark_with_options("foo <!-not enough!-->", &danger)?,
"<p>foo &lt;!-not enough!--&gt;</p>",
"should not support comments w/ not enough dashes"
);
assert_eq!(
- micromark_with_options("foo <!---ok-->", &danger),
+ micromark_with_options("foo <!---ok-->", &danger)?,
"<p>foo <!---ok--></p>",
"should support comments that start w/ a dash, if it’s not followed by a greater than"
);
assert_eq!(
- micromark_with_options("foo <!--->", &danger),
+ micromark_with_options("foo <!--->", &danger)?,
"<p>foo &lt;!---&gt;</p>",
"should not support comments that start w/ `->`"
);
assert_eq!(
- micromark_with_options("foo <!-- -> -->", &danger),
+ micromark_with_options("foo <!-- -> -->", &danger)?,
"<p>foo <!-- -> --></p>",
"should support `->` in a comment"
);
assert_eq!(
- micromark_with_options("foo <!--", &danger),
+ micromark_with_options("foo <!--", &danger)?,
"<p>foo &lt;!--</p>",
"should not support eof in a comment (1)"
);
assert_eq!(
- micromark_with_options("foo <!--a", &danger),
+ micromark_with_options("foo <!--a", &danger)?,
"<p>foo &lt;!--a</p>",
"should not support eof in a comment (2)"
);
assert_eq!(
- micromark_with_options("foo <!--a-", &danger),
+ micromark_with_options("foo <!--a-", &danger)?,
"<p>foo &lt;!--a-</p>",
"should not support eof in a comment (3)"
);
assert_eq!(
- micromark_with_options("foo <!--a--", &danger),
+ micromark_with_options("foo <!--a--", &danger)?,
"<p>foo &lt;!--a--</p>",
"should not support eof in a comment (4)"
);
@@ -208,204 +208,204 @@ fn html_text() {
// Note: cmjs parses this differently.
// See: <https://github.com/commonmark/commonmark.js/issues/193>
assert_eq!(
- micromark_with_options("foo <![cdata[]]>", &danger),
+ micromark_with_options("foo <![cdata[]]>", &danger)?,
"<p>foo &lt;![cdata[]]&gt;</p>",
"should not support lowercase “cdata”"
);
assert_eq!(
- micromark_with_options("foo <![CDATA", &danger),
+ micromark_with_options("foo <![CDATA", &danger)?,
"<p>foo &lt;![CDATA</p>",
"should not support eof in a CDATA (1)"
);
assert_eq!(
- micromark_with_options("foo <![CDATA[", &danger),
+ micromark_with_options("foo <![CDATA[", &danger)?,
"<p>foo &lt;![CDATA[</p>",
"should not support eof in a CDATA (2)"
);
assert_eq!(
- micromark_with_options("foo <![CDATA[]", &danger),
+ micromark_with_options("foo <![CDATA[]", &danger)?,
"<p>foo &lt;![CDATA[]</p>",
"should not support eof in a CDATA (3)"
);
assert_eq!(
- micromark_with_options("foo <![CDATA[]]", &danger),
+ micromark_with_options("foo <![CDATA[]]", &danger)?,
"<p>foo &lt;![CDATA[]]</p>",
"should not support eof in a CDATA (4)"
);
assert_eq!(
- micromark_with_options("foo <![CDATA[asd", &danger),
+ micromark_with_options("foo <![CDATA[asd", &danger)?,
"<p>foo &lt;![CDATA[asd</p>",
"should not support eof in a CDATA (5)"
);
assert_eq!(
- micromark_with_options("foo <![CDATA[]]]]>", &danger),
+ micromark_with_options("foo <![CDATA[]]]]>", &danger)?,
"<p>foo <![CDATA[]]]]></p>",
"should support end-like constructs in CDATA"
);
assert_eq!(
- micromark_with_options("foo <!doctype", &danger),
+ micromark_with_options("foo <!doctype", &danger)?,
"<p>foo &lt;!doctype</p>",
"should not support eof in declarations"
);
assert_eq!(
- micromark_with_options("foo <?php", &danger),
+ micromark_with_options("foo <?php", &danger)?,
"<p>foo &lt;?php</p>",
"should not support eof in instructions (1)"
);
assert_eq!(
- micromark_with_options("foo <?php?", &danger),
+ micromark_with_options("foo <?php?", &danger)?,
"<p>foo &lt;?php?</p>",
"should not support eof in instructions (2)"
);
assert_eq!(
- micromark_with_options("foo <???>", &danger),
+ micromark_with_options("foo <???>", &danger)?,
"<p>foo <???></p>",
"should support question marks in instructions"
);
assert_eq!(
- micromark_with_options("foo </3>", &danger),
+ micromark_with_options("foo </3>", &danger)?,
"<p>foo &lt;/3&gt;</p>",
"should not support closing tags that don’t start w/ alphas"
);
assert_eq!(
- micromark_with_options("foo </a->", &danger),
+ micromark_with_options("foo </a->", &danger)?,
"<p>foo </a-></p>",
"should support dashes in closing tags"
);
assert_eq!(
- micromark_with_options("foo </a >", &danger),
+ micromark_with_options("foo </a >", &danger)?,
"<p>foo </a ></p>",
"should support whitespace after closing tag names"
);
assert_eq!(
- micromark_with_options("foo </a!>", &danger),
+ micromark_with_options("foo </a!>", &danger)?,
"<p>foo &lt;/a!&gt;</p>",
"should not support other characters after closing tag names"
);
assert_eq!(
- micromark_with_options("foo <a->", &danger),
+ micromark_with_options("foo <a->", &danger)?,
"<p>foo <a-></p>",
"should support dashes in opening tags"
);
assert_eq!(
- micromark_with_options("foo <a >", &danger),
+ micromark_with_options("foo <a >", &danger)?,
"<p>foo <a ></p>",
"should support whitespace after opening tag names"
);
assert_eq!(
- micromark_with_options("foo <a!>", &danger),
+ micromark_with_options("foo <a!>", &danger)?,
"<p>foo &lt;a!&gt;</p>",
"should not support other characters after opening tag names"
);
assert_eq!(
- micromark_with_options("foo <a !>", &danger),
+ micromark_with_options("foo <a !>", &danger)?,
"<p>foo &lt;a !&gt;</p>",
"should not support other characters in opening tags (1)"
);
assert_eq!(
- micromark_with_options("foo <a b!>", &danger),
+ micromark_with_options("foo <a b!>", &danger)?,
"<p>foo &lt;a b!&gt;</p>",
"should not support other characters in opening tags (2)"
);
assert_eq!(
- micromark_with_options("foo <a b/>", &danger),
+ micromark_with_options("foo <a b/>", &danger)?,
"<p>foo <a b/></p>",
"should support a self-closing slash after an attribute name"
);
assert_eq!(
- micromark_with_options("foo <a b>", &danger),
+ micromark_with_options("foo <a b>", &danger)?,
"<p>foo <a b></p>",
"should support a greater than after an attribute name"
);
assert_eq!(
- micromark_with_options("foo <a b=<>", &danger),
+ micromark_with_options("foo <a b=<>", &danger)?,
"<p>foo &lt;a b=&lt;&gt;</p>",
"should not support less than to start an unquoted attribute value"
);
assert_eq!(
- micromark_with_options("foo <a b=>>", &danger),
+ micromark_with_options("foo <a b=>>", &danger)?,
"<p>foo &lt;a b=&gt;&gt;</p>",
"should not support greater than to start an unquoted attribute value"
);
assert_eq!(
- micromark_with_options("foo <a b==>", &danger),
+ micromark_with_options("foo <a b==>", &danger)?,
"<p>foo &lt;a b==&gt;</p>",
"should not support equals to to start an unquoted attribute value"
);
assert_eq!(
- micromark_with_options("foo <a b=`>", &danger),
+ micromark_with_options("foo <a b=`>", &danger)?,
"<p>foo &lt;a b=`&gt;</p>",
"should not support grave accent to start an unquoted attribute value"
);
assert_eq!(
- micromark_with_options("foo <a b=\"asd", &danger),
+ micromark_with_options("foo <a b=\"asd", &danger)?,
"<p>foo &lt;a b=&quot;asd</p>",
"should not support eof in double quoted attribute value"
);
assert_eq!(
- micromark_with_options("foo <a b='asd", &danger),
+ micromark_with_options("foo <a b='asd", &danger)?,
"<p>foo &lt;a b='asd</p>",
"should not support eof in single quoted attribute value"
);
assert_eq!(
- micromark_with_options("foo <a b=asd", &danger),
+ micromark_with_options("foo <a b=asd", &danger)?,
"<p>foo &lt;a b=asd</p>",
"should not support eof in unquoted attribute value"
);
assert_eq!(
- micromark_with_options("foo <a b=\nasd>", &danger),
+ micromark_with_options("foo <a b=\nasd>", &danger)?,
"<p>foo <a b=\nasd></p>",
"should support an eol before an attribute value"
);
assert_eq!(
-micromark_with_options("<x> a", &danger),
+micromark_with_options("<x> a", &danger)?,
"<p><x> a</p>",
"should support starting a line w/ a tag if followed by anything other than an eol (after optional space/tabs)"
);
assert_eq!(
- micromark_with_options("<span foo=", &danger),
+ micromark_with_options("<span foo=", &danger)?,
"<p>&lt;span foo=</p>",
"should support an EOF before an attribute value"
);
assert_eq!(
- micromark_with_options("a <!b\nc>", &danger),
+ micromark_with_options("a <!b\nc>", &danger)?,
"<p>a <!b\nc></p>",
"should support an EOL in a declaration"
);
assert_eq!(
- micromark_with_options("a <![CDATA[\n]]>", &danger),
+ micromark_with_options("a <![CDATA[\n]]>", &danger)?,
"<p>a <![CDATA[\n]]></p>",
"should support an EOL in cdata"
);
@@ -413,7 +413,7 @@ micromark_with_options("<x> a", &danger),
// Note: cmjs parses this differently.
// See: <https://github.com/commonmark/commonmark.js/issues/196>
assert_eq!(
- micromark_with_options("a <?\n?>", &danger),
+ micromark_with_options("a <?\n?>", &danger)?,
"<p>a <?\n?></p>",
"should support an EOL in an instruction"
);
@@ -428,8 +428,10 @@ micromark_with_options("<x> a", &danger),
},
..Options::default()
}
- ),
+ )?,
"<p>a &lt;x&gt;</p>",
"should support turning off html (text)"
);
+
+ Ok(())
}