# MediaWiki Parser test cases # Some taken from http://meta.wikimedia.org/wiki/Parser_testing # All (C) their respective authors and released under the GPL # # The syntax should be fairly self-explanatory. # # Currently supported test options: # One of the following three: # # (default) generate HTML output # pst apply pre-save transform # msg apply message transform # # Plus any combination of these: # # cat add category links # ill add inter-language links # subpage enable subpages (disabled by default) # noxml don't check for XML well formdness # title=[[XXX]] run test using article title XXX # language=XXX set content language to XXX for this test # variant=XXX set the variant of language for this test (eg zh-tw) # disabled do not run test # parsoid parsoid-only test (not run by PHP parser) # php php-only test (not run by the parsoid parser) # showtitle make the first line the title # comment run through Linker::formatComment() instead of main parser # local format section links in edit comment text as local links # # For testing purposes, temporary articles can created: # !!article / NAMESPACE:TITLE / !!text / ARTICLE TEXT / !!endarticle # where '/' denotes a newline. # This is the standard article assumed to exist. !! article Main Page !! text blah blah !! endarticle !!article Template:Foo !!text FOO !!endarticle !! article Template:Blank !! text !! endarticle !! article Template:pipe !! text | !! endarticle !!article MediaWiki:bad image list !!text * [[File:Bad.jpg]] except [[Nasty page]] !!endarticle !! article Template:inner list !! text * item 1 !! endarticle !! article Template:tbl-start !! text {| !! endarticle !! article Template:tbl-end !! text |} !! endarticle !! article Template:! !! text | !! endarticle !! article Template:echo !! text {{{1}}} !! endarticle !! article Template:echo_with_span !! text {{{1}}} !! endarticle !! article Template:echo_with_div !! text
This is a simple paragraph.
!! end !! test Paragraphs with extra newline spacing !! input foo bar baz booz !! resultfoo
bar
baz
booz
!! end !! test Parsing an URL !! input http://fr.wikipedia.org/wiki/🍺 !! resulthttp://fr.wikipedia.org/wiki/🍺
!! end !! test Simple list !! input * Item 1 * Item 2 !! resultfoo
!!end !! test Italics and bold: 2-quote opening sequence: (2,3) !! input ''foo''' !! resultfoo'
!!end !! test Italics and bold: 2-quote opening sequence: (2,4) !! input ''foo'''' !! resultfoo''
!!end !! test Italics and bold: 2-quote opening sequence: (2,5) !! input ''foo''''' !! resultfoo
!!end ### ### 3-quote opening sequence tests ### !! test Italics and bold: 3-quote opening sequence: (3,2) !! input '''foo'' !! result'foo
!!end !! test Italics and bold: 3-quote opening sequence: (3,3) !! input '''foo''' !! resultfoo
!!end !! test Italics and bold: 3-quote opening sequence: (3,4) !! input '''foo'''' !! resultfoo'
!!end !! test Italics and bold: 3-quote opening sequence: (3,5) !! input '''foo''''' !! resultfoo
!!end ### ### 4-quote opening sequence tests ### !! test Italics and bold: 4-quote opening sequence: (4,2) !! input ''''foo'' !! result''foo
!!end !! test Italics and bold: 4-quote opening sequence: (4,3) !! input ''''foo''' !! result'foo
!!end !! test Italics and bold: 4-quote opening sequence: (4,4) !! input ''''foo'''' !! result'foo'
!!end !! test Italics and bold: 4-quote opening sequence: (4,5) !! input ''''foo''''' !! result'foo
!!end ### ### 5-quote opening sequence tests ### !! test Italics and bold: 5-quote opening sequence: (5,2) !! input '''''foo'' !! resultfoo
!!end !! test Italics and bold: 5-quote opening sequence: (5,3) !! input '''''foo''' !! resultfoo
!!end !! test Italics and bold: 5-quote opening sequence: (5,4) !! input '''''foo'''' !! resultfoo'
!!end !! test Italics and bold: 5-quote opening sequence: (5,5) !! input '''''foo''''' !! resultfoo
!!end ### ### multiple quote sequences in a line ### !! test Italics and bold: multiple quote sequences: (2,4,2) !! input ''foo''''bar'' !! resultfoo'bar
!!end !! test Italics and bold: multiple quote sequences: (2,4,3) !! input ''foo''''bar''' !! resultfoo'bar
!!end !! test Italics and bold: multiple quote sequences: (2,4,4) !! input ''foo''''bar'''' !! resultfoo'bar'
!!end !! test Italics and bold: multiple quote sequences: (3,4,2) !! input '''foo''''bar'' !! resultfoo'bar
!!end !! test Italics and bold: multiple quote sequences: (3,4,3) !! input '''foo''''bar''' !! resultfoo'bar
!!end ### ### other quote tests ### !! test Italics and bold: other quote tests: (2,3,5) !! input ''this is about '''foo's family''''' !! resultthis is about foo's family
!!end !! test Italics and bold: other quote tests: (2,(3,3),2) !! input ''this is about '''foo's''' family'' !! resultthis is about foo's family
!!end !! test Italics and bold: other quote tests: (3,2,3,2) !! input '''this is about ''foo'''s family'' !! resultthis is about foos family
!!end !! test Italics and bold: other quote tests: (3,2,3,3) !! input '''this is about ''foo'''s family''' !! result'this is about foos family
!!end !! test Italics and bold: other quote tests: (3,(2,2),3) !! input '''this is about ''foo's'' family''' !! resultthis is about foo's family
!!end !! test Italicized possessive !! input The ''[[Main Page]]'''s talk page. !! resultThe Main Page's talk page.
!! end ### ### Non-html5 tags ### !! test Non-html5 tags should be accepted !! inputfoo
foo
foo
foo
* This is not an unordered list item.
!! end !! testLorem ipsum dolor sed abit. sed nullum. :and a colon
!! end !! test nowiki 3 !! input :There is not nowiki. :There is<
!! end ### ### Comments ### !! test Comments and Indent-Pre !! input asdf asdf asdf xyz asdf xyz !! resultasdf
asdf
asdf
xyz
asdf xyz!! end !! test Comment test 2a !! input asdf jkl !! result
asdf jkl
!! end !! test Comment test 2b !! input asdf jkl !! resultasdf
jkl
!! end !! test Comment test 3 !! input asdf jkl !! resultasdf jkl
!! end !! test Comment test 4 !! input asdfjkl !! resultasdfjkl
!! end !! test Comment spacing !! input a b c !! resulta
b
c
!! end !! test Comment whitespace !! input !! result !! end !! test Comment semantics and delimiters !! input !! result !! end !! test Comment semantics and delimiters, redux !! input !! result !! end !! test Comment semantics and delimiters: directors cut !! input --> !! result-->
!! end !! test Comment semantics: nesting !! input --> !! result-->
!! end !! test Comment semantics: unclosed comment at end !! input oo}} !! resultFOO
!! end !! test Comment on its own line post-expand !! input a {{blank}} b !! resulta
b
!! end !! test Comment on its own line post-expand with non-significant whitespace !! input a {{blank}} b !! resulta
b
!! end ### ### paragraph wraping tests ### !! test No block tags !! input a b !! resulta
b
!! end !! test Block tag on one line !! input ab
!! end !! test Block tag on both lines !! input ab c d e
x
b
!! end ### ### Preformatted text ### !! test Preformatted text !! input This is some Preformatted text With ''italic'' And '''bold''' And a [[Main Page|link]] !! resultThis is some Preformatted text With italic And bold And a link!! end !! test Ident preformatting with inline content !! input a ''b'' !! result
a b!! end !! test
withinside (compatibility with 1.6 and earlier) !! input !! result!! result <b> <cite> <em>!! end !! test Regression with preformatted in!! input Blah !! result!! end # Expected output in the following test is not really expected (there should be # Blahin the output) -- it's only testing for well-formedness. !! test Bug 6200: Preformatted in!! inputBlah!! resultBlah!! end !! testwith attributes (bug 3202) !! inputBluescreen of WikiDeath!! resultBluescreen of WikiDeath!! end !! testwith width attribute (bug 3202) !! inputNarrow screen goodies!! resultNarrow screen goodies!! end !! testwith forbidden attribute (bug 3202) !! inputNarrow screen goodies!! resultNarrow screen goodies!! end !! test Entities inside!! inputinside nowiki !! input<!! result<!! end !! testwith forbidden attribute values (bug 3202) !! input!! resultNarrow screen goodies!! resultNarrow screen goodies!! end !! testinside (bug 13238) !! input !! resultFoo <nowiki><nowiki>Foo</nowiki>!! end !! testand preference (first one wins) !! input <nowiki></nowiki> </pre>
<pre> <nowiki> </pre> </pre>
!! end !! test</pre>
!! end !!test Templates: Indent-Pre: 1a. Templates that break a line should suppress!!input {{echo|}} !!result !!end !!test Templates: Indent-Pre: 1b. Templates that break a line should suppress!!input {{echo| foo}} !!resultfoo
!!end !! test Templates: Indent-Pre: 1c: Wrapping should be based on expanded content !! input {{echo|a b}} !!resultab
!!end !! test Templates: Indent-Pre: 1d: Wrapping should be based on expanded content !! input {{echo|a b c d e }} !!resultab c
de
!!end !!test Templates: Indent-Pre: 1e. Wrapping should be based on expanded content !!input {{echo| foo}} {{echo| foo}}{{echo| bar}} {{echo| foo}} {{echo| bar}} {{echo| foo}} {{echo| foo}} {{echo|{{echo| }}bar}} !!resultfoofoo barfoo barfoofoobar!!end !! test Templates: Indent-Pre: 1f: Wrapping should be based on expanded content !! input {{echo| }}a {{echo| }}a {{echo| b}} {{echo|a }}b {{echo|a }} b !!resulta
a
ba
ba
b!!end !! test Templates: Single-line variant of parameter whitespace stripping test !! input {{echo| a}} {{echo|1= a}} {{echo|{{echo| a}}}} {{echo|1={{echo| a}}}} !! resultaa
aa
!! end !! test Templates: Strip whitespace from named parameters, but not positional ones !! input {{echo| foo}} {{echo| * foo}} {{echo| 1 = foo}} {{echo| 1 = * foo}} !! resultfoo
foo
a
c
!!end !!test 1b. Indent-Pre and Comments !!input a c !!resulta
c
!!end !!test 1c. Indent-Pre and Comments !!input a a !!resulta
a!!end !!test 2a. Indent-Pre and tables !!input {| |- !h1!!h2 |foo||bar |} !!result
h1 | h2 | foo | bar |
---|
foo |
bar |
---|
foo
foo
foo
!!end
!!test
3b. Indent-Pre and block tags (pre-content on separate line)
!!input
foo
foo
foo |
foo
foo
foo
foo
foo |
foo
foo {| |foo |} !!resultfoo
foo
foo |
a!! end ### ### HTML-pre (some to spec PHP parser behavior and some Parsoid-RT-centric) ### !!test HTML-pre: 1. embedded newlines !!input
b
foo
foo
foo
foo!!result
foo
foo
foo
foo!!end !!test HTML-pre: 2: indented text !!input
foo!!result
foo!!end !!test HTML-pre: 3: other wikitext !!input
* foo # bar = no-h = '' no-italic '' [[ NoLink ]]!!result
* foo # bar = no-h = '' no-italic '' [[ NoLink ]]!!end ### ### Definition lists ### !! test Simple definition !! input ; name : Definition !! result
Paragraph text
!! end !! test Nested definition lists using html syntax !! inputfoo | bar |
this text should be left alone
!! end ## The PHP parser treats : items (dd) without a corresponding ; item (dt) ## as an empty dt item. It also ignores all but the last ";" when followed ## by ":" later on. So, ";" are not ignored in ";;;t3" but are ignored in ## ";;;t3 :d1". So, PHP parser behavior is a little inconsistent wrt multiple ## ";"s. ## ## Ex: ";;t2 ::d2" is transformed into: ## ## a
|
c
|
|
|
Non-bracketed: http://example.com
!! end !! test External links: numbered !! input Numbered: [http://example.com] Numbered: [http://example.net] Numbered: [http://example.com] !! resultNumbered: [1] Numbered: [2] Numbered: [3]
!!end !! test External links: specified text !! input Specified text: [http://example.com link] !! resultSpecified text: link
!!end !! test External links: trail !! input Linktrails should not work for external links: [http://example.com link]s !! resultLinktrails should not work for external links: links
!! end !! test External links: dollar sign in URL !! input http://example.com/1$2345 !! result !! end !! test External links: dollar sign in URL (named) !! input [http://example.com/1$2345] !! result !!end !! test External links: open square bracket forbidden in URL (bug 4377) !! input http://example.com/1[2345 !! resulthttp://example.com/1[2345
!! end !! test External links: open square bracket forbidden in URL (named) (bug 4377) !! input [http://example.com/1[2345] !! result !!end !! test External links: nowiki in URL link text (bug 6230) !!input [http://example.com/[http://example.com/ first second]
!!end !! test External links: Pipe char between url and text !! input [http://example.com | link] !! result !!end !! test External links: protocol-relative URL in brackets !! input [//example.com/ Test] !! result !! end !! test External links: protocol-relative URL in brackets without text !! input [//example.com] !! result !! end !! test External links: protocol-relative URL in free text is left alone !! input //example.com/Foo !! result//example.com/Foo
!!end !! test External links: protocol-relative URL in the middle of a word is left alone (bug 30269) !! input foo//example.com/Foo !! resultfoo//example.com/Foo
!! end !! test External image !! input External image: http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png !! resultExternal image:
!! end !! test External image from https !! input External image from https: https://meta.wikimedia.org/upload/f/f1/Ncwikicol.png !! resultExternal image from https:
!! end !! test Link to non-http image, no img tag !! input Link to non-http image, no img tag: ftp://example.com/test.jpg !! resultLink to non-http image, no img tag: ftp://example.com/test.jpg
!! end !! test External links: terminating separator !! input Terminating separator: http://example.com/thing, !! resultTerminating separator: http://example.com/thing,
!! end !! test External links: intervening separator !! input Intervening separator: http://example.com/1,2,3 !! resultIntervening separator: http://example.com/1,2,3
!! end !! test External links: old bug with URL in query !! input Old bug with URL in query: [http://example.com/thing?url=http://example.com link] !! resultOld bug with URL in query: link
!! end !! test External links: old URL-in-URL bug, mixed protocols !! input And again with mixed protocols: [ftp://example.com?url=http://example.com link] !! resultAnd again with mixed protocols: link
!!end !! test External links: URL in text !! input URL in text: [http://example.com http://example.com] !! resultURL in text: http://example.com
!! end !! test External links: Clickable images !! input ja-style clickable images: [http://example.com http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png] !! result !!end !! test External links: raw ampersand !! input Old & use: http://x&y !! resultOld & use: http://x&y
!! end !! test External links: encoded ampersand !! input Old & use: http://x&y !! resultOld & use: http://x&y
!! end !! test External links: encoded equals (bug 6102) !! input http://example.com/?foo=bar !! result !! end !! test External links: [raw ampersand] !! input Old & use: [http://x&y] !! resultOld & use: [1]
!! end !! test External links: [encoded ampersand] !! input Old & use: [http://x&y] !! resultOld & use: [1]
!! end !! test External links: [encoded equals] (bug 6102) !! input [http://example.com/?foo=bar] !! result !! end !! test External links: [IDN ignored character reference in hostname; strip it right off] !! input [http://example.com/] !! result !! end # FIXME: This test (the IDN characters in the text of a link) is an inconsistency. # Where an external link could easily circumvent the sanitization of the text of # a link like this (where an IDN-ignore character is in the URL somewhere), this # test demands a higher standard. That's a bit strange. # # Example: # # http://example.com -> [http://example.com|http://example.com] # [http://example.com|http://example.com] -> [http://example.com|http://example.com] # # The first example is sanitized, but the second is not. Any security benefits # from this production are trivial to circumvent. Either remove this test and # let the parser(s) do their thing unaccosted, or fix the inconsistency and change # the test accordingly. # # All our love, # The Parsoid team. !! test External links: IDN ignored character reference in hostname; strip it right off !! input http://example.com/ !! result !! end !! test External links: www.jpeg.org (bug 554) !! input http://www.jpeg.org !!result !! end !! test External links: URL within URL (original bug 2) !! input [http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp] !! result !! end !! test BUG 361: URL inside bracketed URL !! input [http://www.example.com/foo http://www.example.com/bar] !! result !! end !! test BUG 361: URL within URL, not bracketed !! input http://www.example.com/foo?=http://www.example.com/bar !! resulthttp://www.example.com/foo?=http://www.example.com/bar
!! end !! test BUG 289: ">"-token in URL-tail !! input http://www.example.com/http://www.example.com/<hello>
!!end !! test BUG 289: literal ">"-token in URL-tail !! input http://www.example.com/html !! result !!end !! test BUG 289: ">"-token in bracketed URL !! input [http://www.example.com/http://www.example.com/"hello"
!!end !! test BUG 289: literal double quote in bracketed URL !! input [http://www.example.com/"hello" stuff] !! result !!end !! test External links: multiple legal whitespace is fine, Magnus. Don't break it please. (bug 5081) !! input [http://www.example.com test] !! result !! end !! test External links: link text with spaces !! input [http://www.example.com a b c] [http://www.example.com ''a'' ''b''] !! result !! end !! test External links: wiki links within external link (Bug 3695) !! input [http://example.com [[wikilink]] embedded in ext link] !! result !! end !! test BUG 787: Links with one slash after the url protocol are invalid !! input http:/example.com [http:/example.com title] !! resulthttp:/example.com
[http:/example.com title]
!! end !! test Bracketed external links with template-generated invalid target !! input [{{echo|http:/example.com}} title] !! result[http:/example.com title]
!! end !! test Bug 2702: Mismatched , and tags are invalid !! input ''[http://example.com text''] [http://example.com '''text]''' ''Something [http://example.com in italic''] ''Something [http://example.com mixed''''', even bold]''' '''''Now [http://example.com both'''''] !! resulttext text Something in italic Something mixed, even bold Now both
!! end !! test Bug 4781: %26 in URL !! input http://www.example.com/?title=AT%26T !! resulthttp://www.example.com/?title=AT%26T
!! end # According to http://dev.w3.org/html5/spec/Overview.html#parsing-urls a plain # % is actually legal in HTML5. Any change in output would need testing though. !! test Bug 4781, 5267: %25 in URL !! input http://www.example.com/?title=100%25_Bran !! resulthttp://www.example.com/?title=100%25_Bran
!! end !! test Bug 4781, 5267: %28, %29 in URL !! input http://www.example.com/?title=Ben-Hur_%281959_film%29 !! resulthttp://www.example.com/?title=Ben-Hur_%281959_film%29
!! end !! test Bug 4781: %26 in autonumber URL !! input [http://www.example.com/?title=AT%26T] !! result !! end !! test Bug 4781, 5267: %26 in autonumber URL !! input [http://www.example.com/?title=100%25_Bran] !! result !! end !! test Bug 4781, 5267: %28, %29 in autonumber URL !! input [http://www.example.com/?title=Ben-Hur_%281959_film%29] !! result !! end !! test Bug 4781: %26 in bracketed URL !! input [http://www.example.com/?title=AT%26T link] !! result !! end !! test Bug 4781, 5267: %26 in bracketed URL !! input [http://www.example.com/?title=100%25_Bran link] !! result !! end !! test Bug 4781, 5267: %28, %29 in bracketed URL !! input [http://www.example.com/?title=Ben-Hur_%281959_film%29 link] !! result !! end !! test External link containing double-single-quotes in text '' (bug 4598 sanity check) !! input Some [http://example.com/ pretty ''italics'' and stuff]! !! resultSome pretty italics and stuff!
!! end !! test External link containing double-single-quotes in text embedded in italics (bug 4598 sanity check) !! input ''Some [http://example.com/ pretty ''italics'' and stuff]!'' !! resultSome pretty italics and stuff!
!! end !! test External link containing double-single-quotes with no space separating the url from text in italics !! input [http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm''La muerte de Casagemas'' (1901) en el sitio de [[Museo Picasso (París)|Museo Picasso]].] !! resultLa muerte de Casagemas (1901) en el sitio de Museo Picasso.
!! end !! test URL-encoding in URL functions (single parameter) !! input {{localurl:Some page|amp=&}} !! result/index.php?title=Some_page&=&
!! end !! test URL-encoding in URL functions (multiple parameters) !! input {{localurl:Some page|q=?&=&}} !! result/index.php?title=Some_page&q=?&=&
!! end !! test Brackets in urls !! input http://example.com/index.php?foozoid%5B%5D=bar http://example.com/index.php?foozoid[]=bar !! resulthttp://example.com/index.php?foozoid%5B%5D=bar
http://example.com/index.php?foozoid%5B%5D=bar
!! end !! test IPv6 urls (bug 21261) !! options disabled !! input http://[2404:130:0:1000::187:2]/index.php !! resulthttp://[2404:130:0:1000::187:2]/index.php
!! end !! test Non-extlinks in brackets !! input [foo] [foo bar] [foo ''bar''] [fool's] errand [fool's errand] [{{echo|foo}}] [{{echo|foo}} bar] [{{echo|foo}} ''bar''] [{{echo|foo}}l's] errand [{{echo|foo}}l's errand] [url={{echo|foo}}] [url=http://example.com] !! result[foo] [foo bar] [foo bar] [fool's] errand [fool's errand] [foo] [foo bar] [foo bar] [fool's] errand [fool's errand] [url=foo] [url=http://example.com]
!! end ### ### Quotes ### !! test Quotes !! input Normal text. '''Bold text.''' Normal text. ''Italic text.'' Normal text. '''''Bold italic text.''''' Normal text. !!resultNormal text. Bold text. Normal text. Italic text.
Normal text. Bold italic text. Normal text.
!! end !! test Unclosed and unmatched quotes !! input '''''Bold italic text '''with bold deactivated''' in between.''''' '''''Bold italic text ''with italic deactivated'' in between.''''' '''Bold text.. ..spanning two paragraphs (should not work).''' '''Bold tag left open ''Italic tag left open Normal text. '''This year''''s election ''should'' beat '''last year''''s. ''Tom'''s car is bigger than ''Susan'''s. Plain ''italic'''s plain !! resultBold italic text with bold deactivated in between.
Bold italic text with italic deactivated in between.
Bold text..
..spanning two paragraphs (should not work).
Bold tag left open
Italic tag left open
Normal text.
This year's election should beat last year's.
Toms car is bigger than Susans.
Plain italic's plain
!! end ### ### Tables ### ### some content taken from http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide:_Using_tables ### # This should not producecaption
!! test A table with nothing but a caption !! input {| |+ caption |} !! resultfoo |
foo |
baz | foo bar foo | baz | baz | style='color:red;' | baz |
1 | 2 |
3 | 4 |
foo |
bar |
× | 1 | 2 | 3 |
---|---|---|---|
1 | 1 | 2 | 3 |
2 | 2 | 4 | 6 |
3 | 3 | 6 | 9 |
4 | 4 | 8 | 12 |
5 | 5 | 10 | 15 |
h1 | h2 |
---|
h1 | h2 |
---|
h1 | a |
---|
bar |
+1 | -1 | ||||
1 | 2 | 3 | 1 | +2 | -3 |
+1 | -1 |
Cell 1, row 1 | Cell 2, row 1 (and 2) | Cell 3, row 1 |
Cell 1, row 2 | Cell 3, row 2 |
α |
|
the original table again |
broken |
[ftp://%7Cx | ]" onmouseover="alert(document.cookie)">test |
Text that should be rendered preformatted |
Text that should be rendered preformatted |
Foo |
foo |
---|
hello |
foo |
Special:ThisNameWillHopefullyNeverBeUsed#anchor
!! end !! test Link with prefix !! input xxx[[main Page]], xxx[[Main Page]], Xxx[[main Page]] XXX[[main Page]], XXX[[Main Page]] !! resultxxxmain Page, xxxMain Page, Xxxmain Page XXXmain Page, XXXMain Page
!! end !! test Link with suffix !! input [[Main Page]]xxx, [[Main Page]]XXX, [[Main Page]]!!! !! resultMain Pagexxx, Main PageXXX, Main Page!!!
!! end !! article prefixed article !! text Some text !! endarticle !! test Bug 43661: Piped links with identical prefixes !! input [[prefixed article|prefixed articles with spaces]] [[prefixed article|prefixed articlesaoeu]] [[Main Page|Main Page test]] !! result !! end !! test Link with HTML entity in suffix / tail !! input [[Main Page]]", [[Main Page]]a !! result !! end !! test Link with 3 brackets !! input [[[main page]]] !! result[[[main page]]]
!! end !! test Piped link with 3 brackets !! input [[[main page|the main page]]] !! result[[[main page|the main page]]]
!! end !! test Link with multiple pipes !! input [[Main Page|The|Main|Page]] !! result !! end !! test Link to namespaces !! input [[Talk:Parser testing]], [[Meta:Disclaimers]] !! resultTalk:Parser testing, Meta:Disclaimers
!! end !! test Piped link to namespace !! input [[Meta:Disclaimers|The disclaimers]] !! result !! end !! test Link containing } !! input [[Usually caused by a typo (oops}]] !! result[[Usually caused by a typo (oops}]]
!! end !! test Link containing % (not as a hex sequence) !! input [[7% Solution]] !! result !! end !! test Link containing % as a single hex sequence interpreted to char !! input [[7%25 Solution]] !! result !!end !! test Link containing % as a double hex sequence interpreted to hex sequence !! input [[7%2525 Solution]] !! result[[7%2525 Solution]]
!!end !! test Link containing "#<" and "#>" % as a hex sequences- these are valid section anchors Example for such a section: == < == !! input [[%23%3c]][[%23%3e]] !! result !! end !! test Link containing "<#" and ">#" as a hex sequences !! input [[%3c%23]][[%3e%23]] !! result[[%3c%23]][[%3e%23]]
!! end !! test Link containing double-single-quotes '' (bug 4598) !! input [[Lista d''e paise d''o munno]] !! result !! end !! test Link containing double-single-quotes '' in text (bug 4598 sanity check) !! input Some [[Link|pretty ''italics'' and stuff]]! !! resultSome pretty italics and stuff!
!! end !! test Link containing double-single-quotes '' in text embedded in italics (bug 4598 sanity check) !! input ''Some [[Link|pretty ''italics'' and stuff]]! !! resultSome pretty italics and stuff!
!! end !! test Link with double quotes in title part (literal) and alternate part (interpreted) !! input [[File:Denys Savchenko ''Pentecoste''.jpg]] [[''Pentecoste'']] [[''Pentecoste''|Pentecoste]] [[''Pentecoste''|''Pentecoste'']] !! resultFile:Denys Savchenko Pentecoste.jpg
!! end !! test Broken image links with HTML captions (bug 39700) !! input [[File:Nonexistent|]] [[File:Nonexistent|100px|]] [[File:Nonexistent|<]] [[File:Nonexistent|abc]] !! result<script></script> <script></script> < abc
!! end !! test Plain link to URL !! input [[http://www.example.com]] !! result[[1]]
!! end !! test Plain link to URL with link text !! input [[http://www.example.com Link text]] !! result !! end !! test Plain link to protocol-relative URL !! input [[//www.example.com]] !! result[[1]]
!! end !! test Plain link to protocol-relative URL with link text !! input [[//www.example.com Link text]] !! result !! end !! test Plain link to page with question mark in title !! input [[A?b]] [[A?b|Baz]] !! result !! end # I'm fairly sure the expected result here is wrong. # We want these to be URL links, not pseudo-pages with URLs for titles.... # However the current output is also pretty screwy. # # ---- # I'm changing it to match the current output--it arguably makes more # sense in the light of the test above. Old expected result was: #Piped link to URL: an example URL #
# But I think this test is bordering on "garbage in, garbage out" anyway. # -- wtm !! test Piped link to URL !! input Piped link to URL: [[http://www.example.com|an example URL]] !! resultPiped link to URL: [example URL]
!! end !! test BUG 2: [[page|http://url/]] should link to page, not http://url/ !! input [[Main Page|http://url/]] !! result !! end !! test BUG 337: Escaped self-links should be bold !! options title=[[Bug462]] !! input [[Bug462]] [[Bug462]] !! resultBug462 Bug462
!! end !! test Self-link to section should not be bold !! options title=[[Main Page]] !! input [[Main Page#section]] !! result !! end !! article 00 !! text This is 00. !! endarticle !!test Self-link to numeric title !!options title=[[0]] !!input [[0]] !!result0
!!end !!test Link to numeric-equivalent title !!options title=[[0]] !!input [[00]] !!result !!end !! test[[Main Page]] the main page [it's not very good]
!! end !! test Non-breaking spaces in title !! input [[ Main Page ]] !! result !!end !! test Internal link with ca linktrail, surrounded by bold apostrophes (bug 27473 primary issue) !! options language=ca !! input '''[[Main Page]]''' !! result !! end !! test Internal link with ca linktrail, surrounded by italic apostrophes (bug 27473 primary issue) !! options language=ca !! input ''[[Main Page]]'' !! result !! end !! test Internal link with en linktrail: no apostrophes (bug 27473) !! options language=en !! input [[Something]]'nice !! resultSomething'nice
!! end !! test Internal link with ca linktrail with apostrophes (bug 27473) !! options language=ca !! input [[Something]]'nice !! result !! end !! test Internal link with kaa linktrail with apostrophes (bug 27473) !! options language=kaa !! input [[Something]]'nice !! result !! end !! test Parsoid-centric test: Whitespace in ext- and wiki-links should be preserved !! input [[Foo| bar]] [[Foo| ''bar'']] [http://wp.org foo] [http://wp.org ''foo''] !! result !! end ### ### Interwiki links (see maintenance/interwiki.sql) ### !! test Inline interwiki link !! input [[MeatBall:SoftSecurity]] !! result !! end !! test Inline interwiki link with empty title (bug 2372) !! input [[MeatBall:]] !! result !! end !! test Interwiki link encoding conversion (bug 1636) !! input *[[Wikipedia:ro:Olteniţa]] *[[Wikipedia:ro:Olteniţa]] !! result !! end !! test Interwiki link with fragment (bug 2130) !! input [[MeatBall:SoftSecurity#foo]] !! result !! end !! test Interlanguage link !! input Blah blah blah [[zh:Chinese]] !!resultBlah blah blah
!! end !! test Double interlanguage link !! input Blah blah blah [[es:Spanish]] [[zh:Chinese]] !!resultBlah blah blah
!! end !! test Interlanguage link, with prefix links !! options language=ln !! input Blah blah blah [[zh:Chinese]] !!resultBlah blah blah
!! end !! test Double interlanguage link, with prefix links (bug 8897) !! options language=ln !! input Blah blah blah [[es:Spanish]] [[zh:Chinese]] !!resultBlah blah blah
!! end !! test Parsoid-specific test: Wikilinks with should RT properly !! options language=ln !! input [[WW II]] !!result !! end ## ## XHTML tidiness ### !! test1
2
3
</br>
!! end !! test Incorrecly removing closing slashes from correctly formed XHTML !! input
<div title /> <div title/>
<div title=bar /> <div title=bar/>
---
!! end !! test Horizontal ruler -- Supports content following dashes on same line !! input ---- Foo !! result
block (bug 785) !! input *foo*bar* zar !! result
foo
bar
1
!! end !! test Magic Word: {{CURRENTDAY2}} !! input {{CURRENTDAY2}} !! result01
!! end !! test Magic Word: {{CURRENTDAYNAME}} !! input {{CURRENTDAYNAME}} !! resultThursday
!! end !! test Magic Word: {{CURRENTDOW}} !! input {{CURRENTDOW}} !! result4
!! end !! test Magic Word: {{CURRENTMONTH}} !! input {{CURRENTMONTH}} !! result01
!! end !! test Magic Word: {{CURRENTMONTHABBREV}} !! input {{CURRENTMONTHABBREV}} !! resultJan
!! end !! test Magic Word: {{CURRENTMONTHNAME}} !! input {{CURRENTMONTHNAME}} !! resultJanuary
!! end !! test Magic Word: {{CURRENTMONTHNAMEGEN}} !! input {{CURRENTMONTHNAMEGEN}} !! resultJanuary
!! end !! test Magic Word: {{CURRENTTIME}} !! input {{CURRENTTIME}} !! result00:02
!! end !! test Magic Word: {{CURRENTWEEK}} (@bug 4594) !! input {{CURRENTWEEK}} !! result1
!! end !! test Magic Word: {{CURRENTYEAR}} !! input {{CURRENTYEAR}} !! result1970
!! end !! test Magic Word: {{FULLPAGENAME}} !! options title=[[User:Ævar Arnfjörð Bjarmason]] !! input {{FULLPAGENAME}} !! resultUser:Ævar Arnfjörð Bjarmason
!! end !! test Magic Word: {{FULLPAGENAMEE}} !! options title=[[User:Ævar Arnfjörð Bjarmason]] !! input {{FULLPAGENAMEE}} !! resultUser:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
!! end !! test Magic Word: {{NAMESPACE}} !! options title=[[User:Ævar Arnfjörð Bjarmason]] !! input {{NAMESPACE}} !! resultUser
!! end !! test Magic Word: {{NAMESPACEE}} !! options title=[[User:Ævar Arnfjörð Bjarmason]] !! input {{NAMESPACEE}} !! resultUser
!! end !! test Magic Word: {{NAMESPACENUMBER}} !! options title=[[User:Ævar Arnfjörð Bjarmason]] !! input {{NAMESPACENUMBER}} !! result2
!! end !! test Magic Word: {{NUMBEROFFILES}} !! input {{NUMBEROFFILES}} !! result2
!! end !! test Magic Word: {{PAGENAME}} !! options title=[[User:Ævar Arnfjörð Bjarmason]] !! input {{PAGENAME}} !! resultÆvar Arnfjörð Bjarmason
!! end !! test Magic Word: {{PAGENAME}} with metacharacters !! options title=[['foo & bar = baz']] !! input ''{{PAGENAME}}'' !! result'foo & bar = baz'
!! end !! test Magic Word: {{PAGENAME}} with metacharacters (bug 26781) !! options title=[[*RFC 1234 http://example.com/]] !! input {{PAGENAME}} !! result*RFC 1234 http://example.com/
!! end !! test Magic Word: {{PAGENAMEE}} !! options title=[[User:Ævar Arnfjörð Bjarmason]] !! input {{PAGENAMEE}} !! result%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
!! end !! test Magic Word: {{PAGENAMEE}} with metacharacters (bug 26781) !! options title=[[*RFC 1234 http://example.com/]] !! input {{PAGENAMEE}} !! result*RFC_1234_http://example.com/
!! end !! test Magic Word: {{REVISIONID}} !! input {{REVISIONID}} !! result1337
!! end !! test Magic Word: {{SCRIPTPATH}} !! input {{SCRIPTPATH}} !! result/
!! end !! test Magic Word: {{SERVER}} !! input {{SERVER}} !! result !! end !! test Magic Word: {{SERVERNAME}} !! input {{SERVERNAME}} !! resultexample.org
!! end !! test Magic Word: {{SITENAME}} !! input {{SITENAME}} !! resultMediaWiki
!! end !! test Namespace 1 {{ns:1}} !! input {{ns:1}} !! resultTalk
!! end !! test Namespace 1 {{ns:01}} !! input {{ns:01}} !! resultTalk
!! end !! test Namespace 0 {{ns:0}} (bug 4783) !! input {{ns:0}} !! result !! end !! test Namespace 0 {{ns:00}} (bug 4783) !! input {{ns:00}} !! result !! end !! test Namespace -1 {{ns:-1}} !! input {{ns:-1}} !! resultSpecial
!! end !! test Namespace User {{ns:User}} !! input {{ns:User}} !! resultUser
!! end !! test Namespace User talk {{ns:User_talk}} !! input {{ns:User_talk}} !! resultUser talk
!! end !! test Namespace User talk {{ns:uSeR tAlK}} !! input {{ns:uSeR tAlK}} !! resultUser talk
!! end !! test Namespace File {{ns:File}} !! input {{ns:File}} !! resultFile
!! end !! test Namespace File {{ns:Image}} !! input {{ns:Image}} !! resultFile
!! end !! test Namespace (lang=de) Benutzer {{ns:User}} !! options language=de !! input {{ns:User}} !! resultBenutzer
!! end !! test Namespace (lang=de) Benutzer Diskussion {{ns:3}} !! options language=de !! input {{ns:3}} !! resultBenutzer Diskussion
!! end !! test Urlencode !! input {{urlencode:hi world?!}} {{urlencode:hi world?!|WIKI}} {{urlencode:hi world?!|PATH}} {{urlencode:hi world?!|QUERY}} !! resulthi+world%3F%21 hi_world%3F! hi%20world%3F%21 hi+world%3F%21
!! end ### ### Magic links ### !! test Magic links: internal link to RFC (bug 479) !! input [[RFC 123]] !! result !! end !! test Magic links: RFC (bug 479) !! input RFC 822 !! result !! end !! test Magic links: ISBN (bug 1937) !! input ISBN 0-306-40615-2 !! result !! end !! test Magic links: PMID incorrectly converts space to underscore !! input PMID 1234 !! result !! end ### ### Templates #### !! test Nonexistent template !! input {{thistemplatedoesnotexist}} !! resultTemplate:Thistemplatedoesnotexist
!! end !! test Template with invalid target containing tags !! input {{ab|{{echo|foo}}|{{echo|a}}={{echo|b}}|a = b}} !! result{{ab|foo|a=b|a = b}}
!! end !! test Template with invalid target containing unclosed tag !! input {{a|{{echo|foo}}|{{echo|a}}={{echo|b}}|a = b}} !! result{{a|foo|a=b|a = b}}
!! end !! article Template:test !! text This is a test template !! endarticle !! test Simple template !! input {{test}} !! resultThis is a test template
!! end !! test Template with explicit namespace !! input {{Template:test}} !! resultThis is a test template
!! end !! article Template:paramtest !! text This is a test template with parameter {{{param}}} !! endarticle !! test Template parameter !! input {{paramtest|param=foo}} !! resultThis is a test template with parameter foo
!! end !! article Template:paramtestnum !! text [[{{{1}}}|{{{2}}}]] !! endarticle !! test Template unnamed parameter !! input {{paramtestnum|Main Page|the main page}} !! result !! end !! article Template:templatesimple !! text (test) !! endarticle !! article Template:templateredirect !! text #redirect [[Template:templatesimple]] !! endarticle !! article Template:templateasargtestnum !! text {{{{{1}}}}} !! endarticle !! article Template:templateasargtest !! text {{template{{{templ}}}}} !! endarticle !! article Template:templateasargtest2 !! text {{{{{templ}}}}} !! endarticle !! test Template with template name as unnamed argument !! input {{templateasargtestnum|templatesimple}} !! result(test)
!! end !! test Template with template name as argument !! input {{templateasargtest|templ=simple}} !! result(test)
!! end !! test Template with template name as argument (2) !! input {{templateasargtest2|templ=templatesimple}} !! result(test)
!! end !! article Template:templateasargtestdefault !! text {{{{{templ|templatesimple}}}}} !! endarticle !! article Template:templa !! text '''templ''' !! endarticle !! test Template with default value !! input {{templateasargtestdefault}} !! result(test)
!! end !! test Template with default value (value set) !! input {{templateasargtestdefault|templ=templa}} !! resulttempl
!! end !! test Template redirect !! input {{templateredirect}} !! result(test)
!! end !! test Template with argument in separate line !! input {{ templateasargtest | templ = simple }} !! result(test)
!! end !! test Template with complex template as argument !! input {{paramtest| param ={{ templateasargtest | templ = simple }}}} !! resultThis is a test template with parameter (test)
!! end !! test Template with thumb image (with link in description) !! input {{paramtest| param =[[Image:noimage.png|thumb|[[no link|link]] [[no link|caption]]]]}} !! result This is a test template with parameter !! end !! article Template:complextemplate !! text {{{1}}} {{paramtest| param ={{{param}}}}} !! endarticle !! test Template with complex arguments !! input {{complextemplate| param ={{ templateasargtest | templ = simple }}|[[Template:complextemplate|link]]}} !! resultlink This is a test template with parameter (test)
!! end !! test BUG 553: link with two variables in a piped link !! input {| |[[{{{1}}}|{{{2}}}]] |} !! result[[{{{1}}}|{{{2}}}]] |
This is a test template with parameter MediaWiki
!! end !! article Template:linktest !! text [[{{{param}}}|link]] !! endarticle !! test Template parameter as link source !! input {{linktest|param=Main Page}} !! result !! end !!test Template-generated attribute string (k='v') !!input bar !!resultbar
!!end !!article Template:paramtest2 !! text including another template, {{paramtest|param={{{arg}}}}} !! endarticle !! test Template passing argument to another template !! input {{paramtest2|arg='hmm'}} !! resultincluding another template, This is a test template with parameter 'hmm'
!! end !! article Template:Linktest2 !! text Main Page !! endarticle !! test Template as link source !! input [[{{linktest2}}]] [[{{linktest2}}|Main Page]] [[{{linktest2}}]]Page !! resultMain PagePage
!! end !! article Template:loop1 !! text {{loop2}} !! endarticle !! article Template:loop2 !! text {{loop1}} !! endarticle !! test Template infinite loop !! input {{loop1}} !! resultTemplate loop detected: Template:Loop1
!! end !! test Template from main namespace !! input {{:Main Page}} !! resultblah blah
!! end !! article Template:table !! text {| | 1 || 2 |- | 3 || 4 |} !! endarticle !! test BUG 529: Template with table, not included at beginning of line !! input foo {{table}} !! resultfoo
1 | 2 |
3 | 4 |
foo
1 | 2 |
3 | 4 |
{{{parameter}}}
!! end !! test Template with targets containing wikilinks !! input {{[[foo]]}} {{[[{{echo|foo}}]]}} {{{{echo|[[foo}}]]}} !! result{{foo}}
{{foo}}
{{[[foo}}]]
!! end !! article Template:MSGNW test !! text ''None'' of '''this''' should be * interpreted but rather passed unmodified {{test}} !! endarticle # hmm, fix this or just deprecate msgnw and document its behavior? !! test msgnw keyword !! options disabled !! input {{msgnw:MSGNW test}} !! result''None'' of '''this''' should be * interpreted but rather passed unmodified {{test}}
!! end !! test int keyword !! input {{int:youhavenewmessages|lots of money|not!}} !! resultYou have lots of money (not!).
!! end !! article Template:Includes !! text FooFoobar
!! end !! article Template:Includes2 !! textFoo
!! end !! article Template:Includes3 !! textFoo
!! end !! testFoozar
!! end !! test Un-closedFoobar
!! end !! test Un-closed
a | b | c</includeonly> | d</includeonly></includeonly> |
bar
!!end !!test 1. includeonly in html attr key !!input idbar
!!end !!test 2. includeonly in html attr value !!input bar "v1"bar bar
!!end !!test 3. includeonly in part of an attr value !!input bar !!resultbar
!!end ### ### Testing parsing of templates where a template arg ### has the same name as the template itself. ### !! article Template:quote !! text {{{quote|{{{1}}}}}} !! endarticle !!test Templates: Template Name/Arg clash: 1. Use of positional param !!input {{quote|foo}} !!resultfoo
!!end !!test Templates: Template Name/Arg clash: 2. Use of named param !!input {{quote|quote=foo}} !!resultfoo
!!end !!test Templates: Template Name/Arg clash: 3. Use of named param with empty input !!input {{quote|quote}} !!resultquote
!!end ### ### Parsoid-centric tests to stress Parsoid's ability to RT them unchanged ### !!test Templates: 1. Simple use !!input {{echo|Foo}} !!resultFoo
!!end !!test Templates: 2. Inside a block tag !!inputFoo bar
!!end !!test Templates: P-wrapping: 1b. Templates on consecutive lines !!input Foo {{echo|bar}} {{echo|baz}} !!resultFoo
bar baz
!!end !!test Templates: P-wrapping: 1c. Templates on consecutive lines !!input {{echo|Foo}} {{echo|bar}}Foo
barFoobarbaz
!!end !!test Templates: Inline Text: 2. Back-to-back template uses !!input {{echo|Foo}}{{echo|bar}} !!resultFoobar
!!end !!test Templates: Block Tags: 1. Multiple template uses !!input {{echo|foo | }}
foo |
foo | }}
foo |
foo |
foo |
foo |
foo |
foo |
foo |
foo |
foo |
}}foo |
foo |
foo{{echo| | }}
foo |
foo | {{echo|
foo |
foo |
foo |
ab |
foo |
foo |
abcde
!!end !!test Templates: Ugly nesting: 2. Quotes opened/closed across templates (echo_with_span) (PHP parser generates misnested html) !! options disabled !!input {{echo_with_span|''a}}{{echo_with_span|b''c''d}}{{echo_with_span|''e}} !!resultabcde
!!end !!test Templates: Ugly nesting: 3. Quotes opened/closed across templates (echo_with_div) (PHP parser generates misnested html) !! options disabled !!input {{echo_with_div|''a}}{{echo_with_div|b''c''d}}{{echo_with_div|''e}} !!resultfoo |
|
bar | 2. {{echo|baz |
|
bar | 2. baz |
foo
!! end # This looks like a bug: a single newline triggers p/br for some reason. !! test Templates: Ugly templates: 4. newline-only template parameter inconsistency !! input {{echo| }} !! result
FOO
!!end !!test Parser Functions: 2. Nested use (only outermost should be marked up) !!input {{uc:{{lc:FOO}}}} !!resultFOO
!!end ### ### Pre-save transform tests ### !! test pre-save transform: subst: !! options PST !! input {{subst:test}} !! result This is a test template !! end !! test pre-save transform: normal template !! options PST !! input {{test}} !! result {{test}} !! end !! test pre-save transform: nonexistent template !! options PST !! input {{thistemplatedoesnotexist}} !! result {{thistemplatedoesnotexist}} !! end !! test pre-save transform: subst magic variables !! options PST !! input {{subst:SITENAME}} !! result MediaWiki !! end # This is bug 89, which I fixed. -- wtm !! test pre-save transform: subst: templates with parameters !! options pst !! input {{subst:paramtest|param="something else"}} !! result This is a test template with parameter "something else" !! end !! article Template:nowikitest !! textFoobar
!! end !! test: subst: does not work during normal parse !! input {{SubstTest}} !! result{{subst:Includes}}
!! end !! test pre-save transform: context links ("pipe trick") !! options pst !! input [[Article (context)|]] [[Bar:Article|]] [[:Bar:Article|]] [[Bar:Article (context)|]] [[:Bar:Article (context)|]] [[|Article]] [[|Article (context)]] [[Bar:X (Y) Z|]] [[:Bar:X (Y) Z|]] !! result [[Article (context)|Article]] [[Bar:Article|Article]] [[:Bar:Article|Article]] [[Bar:Article (context)|Article]] [[:Bar:Article (context)|Article]] [[Article]] [[Article (context)]] [[Bar:X (Y) Z|X (Y) Z]] [[:Bar:X (Y) Z|X (Y) Z]] !! end !! test pre-save transform: context links ("pipe trick") with interwiki prefix !! options pst !! input [[interwiki:Article|]] [[:interwiki:Article|]] [[interwiki:Bar:Article|]] [[:interwiki:Bar:Article|]] !! result [[interwiki:Article|Article]] [[:interwiki:Article|Article]] [[interwiki:Bar:Article|Bar:Article]] [[:interwiki:Bar:Article|Bar:Article]] !! end !! test pre-save transform: context links ("pipe trick") with parens in title !! options pst title=[[Somearticle (context)]] !! input [[|Article]] !! result [[Article (context)|Article]] !! end !! test pre-save transform: context links ("pipe trick") with comma in title !! options pst title=[[Someplace, Somewhere]] !! input [[|Otherplace]] [[Otherplace, Elsewhere|]] [[Otherplace, Elsewhere, Anywhere|]] !! result [[Otherplace, Somewhere|Otherplace]] [[Otherplace, Elsewhere|Otherplace]] [[Otherplace, Elsewhere, Anywhere|Otherplace]] !! end !! test pre-save transform: context links ("pipe trick") with parens and comma !! options pst title=[[Someplace (IGNORED), Somewhere]] !! input [[|Otherplace]] [[Otherplace (place), Elsewhere|]] !! result [[Otherplace, Somewhere|Otherplace]] [[Otherplace (place), Elsewhere|Otherplace]] !! end !! test pre-save transform: context links ("pipe trick") with comma and parens !! options pst title=[[Who, me? (context)]] !! input [[|Yes, you.]] [[Me, Myself, and I (1937 song)|]] !! result [[Yes, you. (context)|Yes, you.]] [[Me, Myself, and I (1937 song)|Me, Myself, and I]] !! end !! test pre-save transform: context links ("pipe trick") with namespace !! options pst title=[[Ns:Somearticle]] !! input [[|Article]] !! result [[Ns:Article|Article]] !! end !! test pre-save transform: context links ("pipe trick") with namespace and parens !! options pst title=[[Ns:Somearticle (context)]] !! input [[|Article]] !! result [[Ns:Article (context)|Article]] !! end !! test pre-save transform: context links ("pipe trick") with namespace and comma !! options pst title=[[Ns:Somearticle, Context, Whatever]] !! input [[|Article]] !! result [[Ns:Article, Context, Whatever|Article]] !! end !! test pre-save transform: context links ("pipe trick") with namespace, comma and parens !! options pst title=[[Ns:Somearticle, Context (context)]] !! input [[|Article]] !! result [[Ns:Article (context)|Article]] !! end !! test pre-save transform: context links ("pipe trick") with namespace, parens and comma !! options pst title=[[Ns:Somearticle (IGNORED), Context]] !! input [[|Article]] !! result [[Ns:Article, Context|Article]] !! end !! test pre-save transform: context links ("pipe trick") with full-width parens and no space (Japanese and Chinese style, bug 30149) !! options pst !! input [[Article(context)|]] [[Bar:Article(context)|]] [[:Bar:Article(context)|]] [[|Article(context)]] [[Bar:X(Y)Z|]] [[:Bar:X(Y)Z|]] !! result [[Article(context)|Article]] [[Bar:Article(context)|Article]] [[:Bar:Article(context)|Article]] [[Article(context)]] [[Bar:X(Y)Z|X(Y)Z]] [[:Bar:X(Y)Z|X(Y)Z]] !! end !! test pre-save transform: context links ("pipe trick") with full-width parens and space (Japanese and Chinese style, bug 30149) !! options pst !! input [[Article (context)|]] [[Bar:Article (context)|]] [[:Bar:Article (context)|]] [[|Article (context)]] [[Bar:X (Y) Z|]] [[:Bar:X (Y) Z|]] !! result [[Article (context)|Article]] [[Bar:Article (context)|Article]] [[:Bar:Article (context)|Article]] [[Article (context)]] [[Bar:X (Y) Z|X (Y) Z]] [[:Bar:X (Y) Z|X (Y) Z]] !! end !! test pre-save transform: context links ("pipe trick") with parens and no space (Korean style, bug 30149) !! options pst !! input [[Article(context)|]] [[Bar:Article(context)|]] [[:Bar:Article(context)|]] [[|Article(context)]] [[Bar:X(Y)Z|]] [[:Bar:X(Y)Z|]] !! result [[Article(context)|Article]] [[Bar:Article(context)|Article]] [[:Bar:Article(context)|Article]] [[Article(context)]] [[Bar:X(Y)Z|X(Y)Z]] [[:Bar:X(Y)Z|X(Y)Z]] !! end !! test pre-save transform: context links ("pipe trick") with commas (bug 21660) !! options pst !! input [[Article (context), context|]] [[Article (context),context|]] [[Bar:Article (context), context|]] [[Bar:Article (context),context|]] [[:Bar:Article (context), context|]] [[:Bar:Article (context),context|]] !! result [[Article (context), context|Article]] [[Article (context),context|Article]] [[Bar:Article (context), context|Article]] [[Bar:Article (context),context|Article]] [[:Bar:Article (context), context|Article]] [[:Bar:Article (context),context|Article]] !! end !! test pre-save transform: trim trailing empty lines !! options pst !! input Empty lines are trimmed !! result Empty lines are trimmed !! end !! test pre-save transform: Signature expansion !! options pst !! input * ~~~ *!! end !! test Image with link parameter (wiki target) and unnamed parameter !! input [[Image:foobar.jpg|link=Target page|Title]] !! result !! end !! test Image with link parameter (URL target) and unnamed parameter !! input [[Image:foobar.jpg|link=http://example.com/|Title]] !! result !! end !! test Thumbnail image with link parameter !! input [[Image:foobar.jpg|thumb|link=http://example.com/|Title]] !! result !! end !! test Image with frame and link !! input [[Image:Foobar.jpg|frame|left|This is a test image [[Main Page]]]] !! result !! end !! test Image with frame and link and explicit alt !! input [[Image:Foobar.jpg|frame|left|This is a test image [[Main Page]]|alt=Altitude]] !! result !! end !! test Image with wiki markup in implicit alt !! input [[Image:Foobar.jpg|testing '''bold''' in alt]] !! result !! end !! test Image with wiki markup in explicit alt !! input [[Image:Foobar.jpg|alt=testing '''bold''' in alt]] !! result !! end !! test Link to image page- image page normally doesn't exists, hence edit link Add test with existing image page #
Image:test !! input [[:Image:test]] !! result
!! end !! test bug 18784 Link to non-existent image page with caption should use caption as link text !! input [[:Image:test|caption]] !! result !! end !! test Frameless image caption with a free URL !! input [[Image:foobar.jpg|http://example.com]] !! result !! end !! test Thumbnail image caption with a free URL !! input [[Image:foobar.jpg|thumb|http://example.com]] !! result !! end !! test Thumbnail image caption with a free URL and explicit alt !! input [[Image:foobar.jpg|thumb|http://example.com|alt=Alteration]] !! result !! end !! test BUG 1887: A ISBN with a thumbnail !! input [[Image:foobar.jpg|thumb|ISBN 1235467890]] !! result !! end !! test BUG 1887: A RFC with a thumbnail !! input [[Image:foobar.jpg|thumb|This is RFC 12354]] !! result !! end !! test BUG 1887: A mailto link with a thumbnail !! input [[Image:foobar.jpg|thumb|Please mailto:nobody@example.com]] !! result !! end # Pending resolution to bug 368 !! test BUG 648: Frameless image caption with a link !! input [[Image:foobar.jpg|text with a [[link]] in it]] !! result !! end !! test BUG 648: Frameless image caption with a link (suffix) !! input [[Image:foobar.jpg|text with a [[link]]foo in it]] !! result !! end !! test BUG 648: Frameless image caption with an interwiki link !! input [[Image:foobar.jpg|text with a [[MeatBall:Link]] in it]] !! result !! end !! test BUG 648: Frameless image caption with a piped interwiki link !! input [[Image:foobar.jpg|text with a [[MeatBall:Link|link]] in it]] !! result !! end !! test Escape HTML special chars in image alt text !! input [[Image:foobar.jpg|& < > "]] !! result !! end !! test BUG 499: Alt text should have Ӓ, not &1234; !! input [[Image:foobar.jpg|♀]] !! result !! end !! test Broken image caption with link !! input [[Image:Foobar.jpg|thumb|This is a broken caption. But [[Main Page|this]] is just an ordinary link. !! result[[Image:Foobar.jpg|thumb|This is a broken caption. But this is just an ordinary link.
!! end !! test Image caption containing another image !! input [[Image:Foobar.jpg|thumb|This is a caption with another [[Image:icon.png|image]] inside it!]] !! result !! end !! test Image caption containing a newline !! input [[Image:Foobar.jpg|This *is some text]] !! result !!end !!test Parsoid: Image caption containing leading space (The leading space should not trigger nowiki escaping in wt2wt mode) !! input [[Image:Foobar.jpg|thumb| bar]] !! result !!end !! test Bug 3090: External links other than http: in image captions !! input [[Image:Foobar.jpg|thumb|200px|This caption has [irc://example.net irc] and [https://example.com Secure] ext links in it.]] !! result !! end !! test Custom class !! input [[Image:foobar.jpg|a|class=b]] !! result !! end !! test Localized image handling (1). !! options language=es !! input [[Archivo:Foobar.jpg|izquierda|enlace=foo|caption]] !! result !! end !! test Localized image handling (2). !! options language=es !! input [[Archivo:Foobar.jpg|miniatura|izquierda|enlace=foo|caption]] !! result !! end !! test "border", "frameless" and "class" attributes on an image. !! input [[File:Foobar.jpg|frameless|border|class=extra|caption]] !! result !! end !! article File:Barfoo.jpg !! text #REDIRECT [[File:Barfoo.jpg]] !! endarticle !! test Redirected image !! input [[Image:Barfoo.jpg]] !! result !! end !! test Missing image with uploads disabled !! options wgEnableUploads=0 !! input [[Image:Foobaz.jpg]] !! result !! end ### ### Subpages ### !! article Subpage test/subpage !! text foo !! endarticle !! test Subpage link !! options subpage title=[[Subpage test]] !! input [[/subpage]] !! result !! end !! test Subpage noslash link !! options subpage title=[[Subpage test]] !!input [[/subpage/]] !! result !! end !! test Disabled subpages !! input [[/subpage]] !! result !! end !! test BUG 561: {{/Subpage}} !! options subpage title=[[Page]] !! input {{/Subpage}} !! result !! end ### ### Categories ### !! article Category:MediaWiki User's Guide !! text blah !! endarticle !! test Link to category !! input [[:Category:MediaWiki User's Guide]] !! resultCategory:MediaWiki User's Guide
!! end !! test Simple category !! options cat !! input [[Category:MediaWiki User's Guide]] !! result MediaWiki User's Guide !! end !! test PAGESINCATEGORY invalid title fatal (r33546 fix) !! input {{PAGESINCATEGORY:0
!! end !! test Category with different sort key !! options cat !! input [[Category:MediaWiki User's Guide|Foo]] !! result MediaWiki User's Guide !! end !! test Category with identical sort key !! options cat !! input [[Category:MediaWiki User's Guide|MediaWiki User's Guide]] !! result MediaWiki User's Guide !! end !! test Category with empty sort key !! options cat pst !! input [[Category:MediaWiki User's Guide|]] !! result [[Category:MediaWiki User's Guide|MediaWiki User's Guide]] !! end !! test Category with empty sort key and parentheses !! options cat pst !! input [[Category:Foo (bar)|]] !! result [[Category:Foo (bar)|Foo]] !! end !! test Category with link tail !! options cat pst !! input 123[[Category:Foo]]456 !! result 123[[Category:Foo]]456 !! end !! test Category with template !! options cat pst !! input [[Category:{{echo|Foo}}]] !! result [[Category:{{echo|Foo}}]] !! end !! test Category with template in sort key !! options cat pst !! input [[Category:Foo|{{echo|Bar}}]] !! result [[Category:Foo|{{echo|Bar}}]] !! end !! test Category with template in sort key and title !! options cat pst !! input [[Category:{{echo|Foo}}|{{echo|Bar}}]] !! result [[Category:{{echo|Foo}}|{{echo|Bar}}]] !! end !! test Category / paragraph interactions !! input Foo [[Category:Baz]] Bar Foo [[Category:Baz]] Bar Foo [[Category:Baz]] Bar Foo [[Category:Baz]] Bar Foo [[Category:Baz]] [[Category:Baz]] [[Category:Baz]] Bar [[Category:Baz]] [[Category:Baz]] [[Category:Baz]] [[Category:Baz]] {{echo|[[Category:Baz]]}} [[Category:Baz]] !! resultFoo Bar
Foo Bar
Foo Bar
Foo Bar
Foo Bar
!! end ### ### Inter-language links ### !! test Inter-language links !! options ill !! input [[es:Alimento]] [[fr:Nourriture]] [[zh:食品]] !! result es:Alimento fr:Nourriture zh:食品 !! end !! test Duplicate interlanguage links (bug 24502) !! options ill !! input [[es:1]] [[es:2]] [[fr:1]] [[fr:2]] !! result es:1 fr:1 !! end ### ### Sections ### !! test Basic section headings !! input == Headline 1 == Some text ==Headline 2== More ===Smaller headline=== Blah blah !! resultSome text
More
Blah blah
!! end !! test Section headings with TOC !! input == Headline 1 == === Subheadline 1 === ===== Skipping a level ===== ====== Skipping a level ====== == Headline 2 == Some text ===Another headline=== !! resultContents |
Some text
Contents |
Contents |
Contents |
Contents |
Contents |
The line above must have a trailing space!
But just in case it doesn't...
!! end !! test Header with special characters (bug 25462) !! input The tooltips shall not show entities to the user (ie. be double escaped) == text > text == section 1 == text < text == section 2 == text & text == section 3 == text ' text == section 4 == text " text == section 5 !! resultThe tooltips shall not show entities to the user (ie. be double escaped)
Contents |
section 1
section 2
section 3
section 4
section 5
!! end !! test Headers with excess '=' characters (Are similar tests necessary beyond the 1st level?) !! input =foo== ==foo= =''italic'' heading== ==''italic'' heading= !! resultContents |
http://en.wikinews.org/wiki/Wikinews:Workplace
!!end !! test Namespaced link must have a title !! input [[Project:]] !! result[[Project:]]
!!end !! test Namespaced link must have a title (bad fragment version) !! input [[Project:#fragment]] !! result[[Project:#fragment]]
!!end ### ### HTML tags and HTML attributes ### !! test div with no attributes !! inputAwesome!
!! resultAwesome!
!!end !! test Table multiple attributes correction !! input {| !+ class="error" class="awesome"| status |} !! resultstatus |
---|
<khyô>
!! end !! test Pseudo-tag with URL 'name' renders as url link !! inputRemember AT&T?
!! end !! test text with character entity: eacute !! input I always thought é was a cute letter. !! resultI always thought é was a cute letter.
!! end !! test text with entity-escaped character entity-like string: eacute !! input I always thought é was a cute letter. !! resultI always thought é was a cute letter.
!! end !! test text with undefined character entity: xacute !! input I always thought &xacute; was a cute letter. !! resultI always thought &xacute; was a cute letter.
!! end ### ### Media links ### !! test Media link !! input [[Media:Foobar.jpg]] !! result !! end !! test Media link with text !! input [[Media:Foobar.jpg|A neat file to look at]] !! result !! end # FIXME: this is still bad HTML tag nesting !! test Media link with nasty text fixme: doBlockLevels won't wrap this in a paragraph because it contains a div !! input [[Media:Foobar.jpg|Safe Link ]] !! result Safe Link<div style="display:none">" onmouseover="alert(document.cookie)" onfoo="</div> !! end !! test Media link to nonexistent file (bug 1702) !! input [[Media:No such.jpg]] !! result !! end !! test Image link to nonexistent file (bug 1850 - good) !! input [[Image:No such.jpg]] !! result !! end !! test :Image link to nonexistent file (bug 1850 - bad) !! input [[:Image:No such.jpg]] !! result !! end !! test Character reference normalization in link text (bug 1938) !! input [[Main Page|this&that]] !! result !!end !! article אַ !! text Test for unicode normalization The page's name is U+05d0 U+05b7, with non-canonical form U+FB2E !! endarticle !! test (bug 19451) Links should refer to the normalized form. !! input [[אַ]] [[אַ]] [[אַ]] [[אַ]] [[אַ]] !! result !! end !! test Empty attribute crash test (bug 2067) !! input foo !! resultfoo
!! end !! test Empty attribute crash test single-quotes (bug 2067) !! input foo !! resultfoo
!! end !! test Attribute test: equals, then nothing !! input foo !! resultfoo
!! end !! test Attribute test: unquoted value !! input foo !! resultfoo
!! end !! test Attribute test: unquoted but illegal value (hash) !! input foo !! resultfoo
!! end !! test Attribute test: no value !! input foo !! resultfoo
!! end !! test Bug 2095: link with three closing brackets !! input [[Main Page]]] !! result !! end !! test Bug 2095: link with pipe and three closing brackets !! input [[Main Page|link]]] !! resultlink]
!! end !! test Bug 2095: link with pipe and three closing brackets, version 2 !! input [[Main Page|[http://example.com/]]] !! result !! end ### ### Safety ### !! article Template:Dangerous attribute !! text " onmouseover="alert(document.cookie) !! endarticle !! article Template:Dangerous style attribute !! text border-size: expression(alert(document.cookie)) !! endarticle !! article Template:Div style !! textA
!! resultA
!! end !! test MSIE CSS safety test: Fullwidth !! inputA
A
B
!! resultB
!! end !! test MSIE CSS safety test: sup/sub script !! inputC
!! resultC
!! end !! test MSIE CSS safety test: Repetition markers !! inputA
B
C
D
E
F
G
!! resultA
B
C
D
E
F
G
!! end !! test Table attribute legitimate extension !! input {| !+ style="status |
---|
status |
---|
'' array ( )!! end !! test Parser hook: empty input using terminated empty elements !! input
NULL array ( )!! end !! test Parser hook: empty input using terminated empty elements (space before) !! input
NULL array ( )!! end !! test Parser hook: basic input !! input
'input' array ( )!! end !! test Parser hook: case insensitive !! input
'input' array ( )!! end !! test Parser hook: case insensitive, redux !! input
'input' array ( )!! end !! test Parser hook: nested tags !! options noxml !! input
'</tag> !! end !! test Parser hook: basic arguments !! input' array ( )
'' array ( 'width' => '200', 'height' => '100', 'depth' => '50', 'square' => 'square', )!! end !! test Parser hook: argument containing a forward slash (bug 5344) !! input
'' array ( 'filename' => '/tmp/bla', )!! end !! test Parser hook: empty input using terminated empty elements (bug 2374) !! input
NULL array ( 'foo' => 'bar', )text !! end #
NULL array ( 'width' => '200', 'height' => '100', 'depth' => '50', 'square' => 'square', )
other stuff </tag>
!! end ### ### (see maintenance/parserTestsStaticParserHook.php for thehello, world
!! end !! test Parser hook: static parser hook inside a comment !! input
(My parameter is: param)
!! end ### ### Sanitizer ### !! test Sanitizer: Closing of open tags !! inputfoo
</s>
!! end !! test Sanitizer: Closing of closed but not open table tags !! input Table not started !! resultTable not started</td></tr></table>
!! end !! test Sanitizer: Escaping of spaces, multibyte characters, colons & other stuff in id="" !! input byte[[#æ: v|backlink]] !! resultbytebacklink
!! end !! test Sanitizer: Validating the contents of the id attribute (bug 4515) !! options disabled !! input<meta http-equiv="refresh" content="5">
<link rel="stylesheet" href="http://example.org">this bit is safe: }-
but if we add a conversion instance: xxx
then we get cut off here: }-
all additional text is vanished
!! end !! test Self closed html pairs (bug 5487) !! options !! inputC'est grave !
!! end !! test Punctuation: CSS !important (bug 11874) !! inputContents |
https:// |
---|
irc://{{ftp://a" onmouseover="alert('hello world');" |
---|
{{{| #
#<LI CLASS=blah" onmouseover="alert('hello world');" align="left"MOVE MOUSE CURSOR OVER HERE
!! end !!test Fuzz testing: URL adjacent extension (with space, clean) !! options !! input http://example.comhttp://example.com junk
!!end !!test Fuzz testing: URL adjacent extension (no space, dirty; nowiki) !! options !! input http://example.comjunk!! result http://example.com
junk!!end !!test Fuzz testing: image with bogus manual thumbnail !!input [[Image:foobar.jpg|thumbnail= ]] !!result
Some tabular data | More tabular data ... | And yet som tabular data |
Some tabular data | More tabular data ... | And yet som tabular data |
Some tabular data | More tabular data ... | And yet som tabular data |
Some tabular data | More tabular data ... | And yet som tabular data |