{ "regular_tests": [ { "name": "codeblock_hilite", "input": "Hamlet said:\n~~~~.python \ndef speak(self):\n x = 1\n~~~~", "expected_output": "
Hamlet said:
\ndef speak(self):\n x = 1\n
test_input
", "bugdown_matches_marked": true }, { "name": "codeblock_multiline", "input": "Hamlet once said\n~~~~\ndef func():\n x = 1\n\n y = 2\n\n z = 3\n~~~~\nAnd all was good.", "expected_output": "Hamlet once said
\ndef func():\n x = 1\n\n y = 2\n\n z = 3\n
And all was good.
", "bugdown_matches_marked": true }, { "name": "codeblock_backticks", "input": "\n```\nfenced code\n```\n\n```inline code```\n", "expected_output": "fenced code\n
inline code
Hamlet said:
\ndef speak(self):\n x = 1\n# Comment to make this code block longer to test Trac #1162\n
Then he mentioned y = 4 + x**2
and
def foobar(self):\n return self.baz()\n
Hamlet said:
\n\n", "bugdown_matches_marked": true }, { "name": "fenced_nested_quote", "input": "Hamlet said:\n~~~ quote\nPolonius said:\n> This above all: to thine ownself be true,\nAnd it must follow, as the night the day,\nThou canst not then be false to any man.\n\nWhat good advice!\n~~~", "expected_output": "To be or not to be.
\nThat is the question
\n
Hamlet said:
\n\n", "bugdown_matches_marked": true }, { "name": "complexly_nested_quote", "input": "I heard about this second hand...\n~~~ quote\n\nHe said:\n~~~ quote\nThe customer is complaining.\n\nThey looked at this code:\n``` \ndef hello(): print 'hello\n```\nThey would prefer:\n~~~\ndef hello()\n puts 'hello'\nend\n~~~\n\nPlease advise.\n~~~\n\nShe said:\n~~~ quote\nJust send them this:\n```\necho \"hello\n\"\n```\n~~~", "expected_output": "Polonius said:
\n\n\nThis above all: to thine ownself be true,
\n
\nAnd it must follow, as the night the day,
\nThou canst not then be false to any man.What good advice!
\n
I heard about this second hand...
\n\n\nHe said:
\n\n\nThe customer is complaining.
\nThey looked at this code:
\n\n\n\ndef hello(): print 'hello\nThey would prefer:
\ndef hello()
\n
\n puts 'hello'
\nend
Please advise.
\nShe said:\n~~~ quote\nJust send them this:\n```\necho "hello\n"\n```\n
xxxxxx xxxxx xxxxxxxx xxxx. x xxxx xxxxxxxxxx:
\n\"xxxx xxxx\\xxxxx\\xxxxxx\"
xxx xxxx xxxxx:xx.xxxxxxx(x'^xxxx$', xx.xxxxxxxxx)
xxxxxxx'x xxxx xxxxxxxxxx 'xxxx'
, xxxxx xxxxxxxxx xxxxx ^ xxx $ xxxxxx xxxxx xxxxxxxxxxxx xxx xxxx xx x xxxx xx xxxx xx xxx xxxxx xxxxxx?
one
two
x = 1\n
Some text with a list:
\nSome text with a hanging list:
\nPlain list
\nAlpha
\nBeta
\nThen hang it off:
\nPlain list
\nAnd Again:
\nOnce more for feeling:
\nint x = 3\n* 4;\n
~~~~~~~~xxxxxxxxx: xxxxxxxxxxxx xxxxx x xxxxxxxx~~~~~~
", "bugdown_matches_marked": true }, { "name": "strikthrough_basic", "input": "I like ~~software~~ hardware", "expected_output": "I like software hardware
I like software love hardware
I like software love hardware
_foo_
", "bugdown_matches_marked": true }, { "name": "emphasis_text", "input": "*foo*", "expected_output": "foo
", "bugdown_matches_marked": true }, { "name": "emphasis_code", "input": "const char *x = (char *)y", "expected_output": "const char *x = (char *)y
", "bugdown_matches_marked": true }, { "name": "emphasis_with_space", "input": "A *foo bar* is a *baz quux*", "expected_output": "A foo bar is a baz quux
", "bugdown_matches_marked": true }, { "name": "underscore_strong_disabled", "input": "__foo__", "expected_output": "__foo__
", "bugdown_matches_marked": true }, { "name": "star_strong", "input": "**foo**", "expected_output": "foo
", "bugdown_matches_marked": true }, { "name": "linkify_interference", "input": "link: xx, x xxxxx xx xxxx xx\n\n[xxxxx #xx](http://xxxxxxxxx:xxxx/xxx/xxxxxx%xxxxxx/xx/):**xxxxxxx**\n\nxxxxxxx xxxxx xxxx xxxxx:\n`xxxxxx`: xxxxxxx\n`xxxxxx`: xxxxx\n`xxxxxx`: xxxxx xxxxx", "expected_output": "link: xx, x xxxxx xx xxxx xx
\nxxxxx #xx:xxxxxxx
\nxxxxxxx xxxxx xxxx xxxxx:
\nxxxxxx
: xxxxxxx
\nxxxxxx
: xxxxx
\nxxxxxx
: xxxxx xxxxx
Google logo today: https://www.google.com/images/srpr/logo4w.png
\nKinda boring
Google logo today: https://www.google.com/images/srpr/logo4w.png
\nKinda boringGoogle logo today: https://www.google.com/images/srpr/logo4w.png
\nKinda boring
Google logo today: http://www.google.com/images/srpr/logo4w.png
\n ", "bugdown_matches_marked": false }, { "name": "nl2br", "input": "test\nbar", "expected_output": "test
\nbar
test
", "bugdown_matches_marked": true }, { "name": "tables", "input": "This is a table:\n\nFirst Header | Second Header\n------------- | -------------\nContent Cell | Content Cell\nContent Cell | Content Cell\n", "expected_output": "This is a table:
\nFirst Header | \nSecond Header | \n
---|---|
Content Cell | \nContent Cell | \n
Content Cell | \nContent Cell | \n
You can check out **any time you'd like
\nBut you can never leave**
test again
\n:) foo:)bar x::y::z :wasted waste: :fakeemojithisshouldnotrender:
hello
", "bugdown_matches_marked": true }, { "name": "emojis_newline", "input": ":cat:\n:dog:", "expected_output": "
\n
:not_an_emoji:
", "bugdown_matches_marked": true }, { "name": "unicode_emoji", "input": "\ud83d\udca9", "expected_output":"<\/p>", "bugdown_matches_marked": true }, { "name": "two_unicode_emoji", "input": "\ud83d\udca9\ud83d\udca9", "expected_output":"
<\/p>", "bugdown_matches_marked": true }, { "name": "two_unicode_emoji_separated_by_text", "input": "\ud83d\udca9 word \ud83d\udca9", "expected_output":"
word <\/p>", "bugdown_matches_marked": true }, { "name": "miscellaneous_and_dingbats_emoji", "input": "\u2693\u2797", "expected_output":"
<\/p>", "bugdown_matches_marked": true }, { "name": "emoji_alongside_punctuation", "input": ":smile:, :smile:; :smile:", "expected_output": "
, ;
", "bugdown_matches_marked": true }, { "name": "safe_html", "input": "<h1>stay normal</h1> thanks
", "bugdown_matches_marked": true }, { "name": "safe_html_with_simple_script_tag", "input": "", "expected_output": "<script>alert(1)</script>
", "bugdown_matches_marked": false }, { "name": "safe_html_nested_script_tag", "input": "</script>", "expected_output": "<<script>script>evil()<</script>/script>
", "bugdown_matches_marked": true }, { "name": "safe_html_nested_script_tag_with_parse_error", "input": "<<<x>script>evil()<</x>/script>
", "bugdown_matches_marked": true }, { "name": "safe_html_messed_up_complexly_nested_script_tags", "input": "<scr<script></script>ipt type=\"text/javascript\">alert(\"foo\");</<script></script>script<del></del>>
", "bugdown_matches_marked": false }, { "name": "safe_html_unclosed_tag", "input": "