From 9441dde8bfb95277df073717ed7817dced40f948 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Fri, 28 Mar 2014 05:41:12 +0100 Subject: Update to MediaWiki 1.22.5 --- tests/parser/parserTests.txt | 18591 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 18591 insertions(+) create mode 100644 tests/parser/parserTests.txt (limited to 'tests/parser/parserTests.txt') diff --git a/tests/parser/parserTests.txt b/tests/parser/parserTests.txt new file mode 100644 index 00000000..9658e8f8 --- /dev/null +++ b/tests/parser/parserTests.txt @@ -0,0 +1,18591 @@ +# 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 +# notoc disable table of contents +# +# You can also set the following parser properties via test options: +# wgEnableUploads, wgAllowExternalImages, wgMaxTocLevel, +# wgLinkHolderBatchSize, wgRawHtml +# +# 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 +
{{{1}}}
+!! endarticle + +!! article +Template:attr_str +!! text +{{{1}}}="{{{2}}}" +!! endarticle + +!! article +Template:table_attribs +!! text + +|style="color: red"| Foo +!! endarticle + +!! article +Template:table_cells +!! text +{{table_attribs}} || Bar || Baz +!! endarticle + +!! article +Template:image_attribs +!! text + +[[File:foobar.jpg|right|Caption text]] +!! endarticle + +!! article +A?b +!! text +Weirdo titles! +!! endarticle + +!!article +Template:Bullet +!!text +* Bar +!!endarticle + +### +### Basic tests +### +!! test +Blank input +!! input +!! result +!! end + + +!! test +Simple paragraph +!! input +This is a simple paragraph. +!! result +

This is a simple paragraph. +

+!! end + +!! test +Paragraphs with extra newline spacing +!! input +foo + +bar + + +baz + + + +booz +!! result +

foo +

bar +


+baz +


+

booz +

+!! end + +!! test +Paragraphs with newline spacing with comment lines in between +!! input +---- +a + +b +---- +a + +b +---- +a + +b +---- +a + + +b +---- +a + + +b +---- +a + + + +b +---- +a + + + +b +---- +!! result +
+

a +b +

+
+

a +b +

+
+

a +b +

+
+

a +

b +

+
+

a +

b +

+
+

a +


+b +

+
+

a +


+b +

+
+ +!! end + +!! test +Paragraphs with newline spacing with non-empty white-space lines in between +!! input +---- +a + +b +---- +a + + +b +---- +!! result +
+

a +

b +

+
+

a +


+b +

+
+ +!! end + +!! test +Paragraphs with newline spacing with non-empty mixed comment and white-space lines in between +!! input +---- +a + +b +---- +a + +b +---- +a + + + +b +---- +a + + + + +b +---- +!! result +
+

a +b +

+
+

a +b +

+
+

a +

b +

+
+

a +


+b +

+
+ +!! end + +!! test +Extra newlines: More paragraphs with indented comment +!! input +a + + + +b +!!result +

a +


+b +

+!!end + +!! test +Extra newlines followed by heading +!! input +a + + + +=b= +[[a]] + + +=b= +!! result +

a +


+

+

b[edit]

+

a +


+

+

b[edit]

+ +!! end + +!! test +Extra newlines between heading and content are swallowed +!! input +=b= + + + +[[a]] +!! result +

b[edit]

+

a +

+!! end + +!! test +Parsing an URL +!! input +http://fr.wikipedia.org/wiki/🍺 + +!! result +

http://fr.wikipedia.org/wiki/🍺 +

+!! end + +!! test +Simple list +!! input +* Item 1 +* Item 2 +!! result + + +!! end + +!! test +Italics and bold +!! input +* plain +* plain''italic''plain +* plain''italic''plain''italic''plain +* plain'''bold'''plain +* plain'''bold'''plain'''bold'''plain +* plain''italic''plain'''bold'''plain +* plain'''bold'''plain''italic''plain +* plain''italic'''bold-italic'''italic''plain +* plain'''bold''bold-italic''bold'''plain +* plain'''''bold-italic'''italic''plain +* plain'''''bold-italic''bold'''plain +* plain''italic'''bold-italic'''''plain +* plain'''bold''bold-italic'''''plain +* plain l'''italic''plain +* plain l''''bold''' plain +!! result + + +!! end + +# this example taken from the [[simple:Moon]] article (bug 47326) +!! test +Italics and possessives (1) +!! input +obtained by ''[[Lunar Prospector]]'''s gamma-ray spectrometer +!! result +

obtained by Lunar Prospector's gamma-ray spectrometer +

+!! end + +# this example taken from [[en:Flaming Pie]] (bug 49926) +!! test +Italics and possessives (2) +!! input +'''''Flaming Pie''''' is ... released in 1997. In ''Flaming Pie'''s liner notes +!! result +

Flaming Pie is ... released in 1997. In Flaming Pie's liner notes +

+!! end + +# this example taken from [[en:Dictionary]] (bug 49926) +!! test +Italics and possessives (3) +!! input +The first monolingual dictionary written in a Romance language was ''Sebastián Covarrubias''' ''Tesoro de la lengua castellana o española'', published in 1611 in Madrid. In 1612 the first edition of the ''Vocabolario dell'[[Accademia della Crusca]]'', for Italian, was published. In 1690 in Rotterdam was published, posthumously, the ''Dictionnaire Universel''. +!! result +

The first monolingual dictionary written in a Romance language was Sebastián Covarrubias' Tesoro de la lengua castellana o española, published in 1611 in Madrid. In 1612 the first edition of the Vocabolario dell'Accademia della Crusca, for Italian, was published. In 1690 in Rotterdam was published, posthumously, the Dictionnaire Universel. +

+!! end + + +### +### 2-quote opening sequence tests +### +!! test +Italics and bold: 2-quote opening sequence: (2,2) +!! input +''foo'' +!! result +

foo +

+!!end + + +!! test +Italics and bold: 2-quote opening sequence: (2,3) +!! input +''foo''' +!! result +

foo' +

+!!end + + +!! test +Italics and bold: 2-quote opening sequence: (2,4) +!! input +''foo'''' +!! result +

foo'' +

+!!end + + +!! test +Italics and bold: 2-quote opening sequence: (2,5) (php) +!! options +php +!! input +''foo''''' +!! result +

foo +

+!!end +# The PHP parser strips the empty tags out for giggles; parsoid doesn't. +!! test +Italics and bold: 2-quote opening sequence: (2,5) (parsoid) +!! options +parsoid +!! input +''foo''''' +!! result +

foo +

+!!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''' +!! result +

foo +

+!!end + + +!! test +Italics and bold: 3-quote opening sequence: (3,4) +!! input +'''foo'''' +!! result +

foo' +

+!!end + + +!! test +Italics and bold: 3-quote opening sequence: (3,5) (php) +!! options +php +!! input +'''foo''''' +!! result +

foo +

+!!end +# The PHP parser strips the empty tags out for giggles; parsoid doesn't. +!! test +Italics and bold: 3-quote opening sequence: (3,5) (parsoid) +!! options +parsoid +!! input +'''foo''''' +!! result +

foo +

+!!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) (php) +!! options +php +!! input +''''foo''''' +!! result +

'foo +

+!!end +# The PHP parser strips the empty tags out for giggles; parsoid doesn't. +!! test +Italics and bold: 4-quote opening sequence: (4,5) (parsoid) +!! options +parsoid +!! input +''''foo''''' +!! result +

'foo +

+!!end + + +### +### 5-quote opening sequence tests +### + +!! test +Italics and bold: 5-quote opening sequence: (5,2) +!! options +!! input +'''''foo'' +!! result +

foo +

+!!end + + +!! test +Italics and bold: 5-quote opening sequence: (5,3) +!! input +'''''foo''' +!! result +

foo +

+!!end + + +!! test +Italics and bold: 5-quote opening sequence: (5,4) +!! input +'''''foo'''' +!! result +

foo' +

+!!end + + +!! test +Italics and bold: 5-quote opening sequence: (5,5) +!! input +'''''foo''''' +!! result +

foo +

+!!end + +### +### multiple quote sequences in a line +### +!! test +Italics and bold: multiple quote sequences: (2,4,2) +!! input +''foo''''bar'' +!! result +

foo'bar +

+!!end + + +!! test +Italics and bold: multiple quote sequences: (2,4,3) +!! input +''foo''''bar''' +!! result +

foo'bar +

+!!end + + +!! test +Italics and bold: multiple quote sequences: (2,4,4) +!! input +''foo''''bar'''' +!! result +

foo'bar' +

+!!end + + +!! test +Italics and bold: multiple quote sequences: (3,4,2) (php) +!! options +php +!! input +'''foo''''bar'' +!! result +

foo'bar +

+!!end +# The PHP parser strips the empty tags out for giggles; parsoid doesn't. +!! test +Italics and bold: multiple quote sequences: (3,4,2) (parsoid) +!! options +parsoid +!! input +'''foo''''bar'' +!! result +

foo'bar +

+!!end + + +!! test +Italics and bold: multiple quote sequences: (3,4,3) (php) +!! options +php +!! input +'''foo''''bar''' +!! result +

foo'bar +

+!!end +# The PHP parser strips the empty tags out for giggles; parsoid doesn't. +!! test +Italics and bold: multiple quote sequences: (3,4,3) (parsoid) +!! options +parsoid +!! input +'''foo''''bar''' +!! result +

foo'bar +

+!!end + +### +### other quote tests +### +!! test +Italics and bold: other quote tests: (2,3,5) +!! input +''this is about '''foo's family''''' +!! result +

this is about foo's family +

+!!end + + +!! test +Italics and bold: other quote tests: (2,(3,3),2) +!! input +''this is about '''foo's''' family'' +!! result +

this is about foo's family +

+!!end + + +!! test +Italics and bold: other quote tests: (3,2,3,2) +!! input +'''this is about ''foo'''s family'' +!! result +

this is about foos family +

+!!end + + +!! test +Italics and bold: other quote tests: (3,2,3,3) +!! options +!! 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''' +!! result +

this is about foo's family +

+!!end + + +!! test +Italicized possessive +!! input +The ''[[Main Page]]'''s talk page. +!! result +

The Main Page's talk page. +

+!! end + +!! test +Parsoid only: Quote balancing context should be restricted to td/th cells on the same wikitext line +(Requires tidy for PHP parser output to be fixed up) +!! options +parsoid=wt2html,wt2wt +!! input +{| +!''a!!''b +|''a||''b +|} +!! result + + + +
abab
+!! end + +### +### Non-html5 tags +### + +!! test +Non-html5 tags should be accepted +!! input +
''foo''
+''foo'' +''foo'' +''foo'' +''foo'' +!! result +
foo
+

foo +foo +foo +foo +

+!! end + +!! test + is valid wikitext (bug 52468) +!! input + +!! result +

+

+!! end + +# is HTML4, is HTML4/5. +!! test + or for strikethrough +!! input +strike + +s +!! result +

strike +

s +

+!! end + +!! test +Non-word characters don't terminate tag names (bug 17663, 40670, 52022) +!! input + doesn't work! + + doesn't work! + + works fine + +foo
+ +s.foo + + +!! result +

<b→> doesn't work! </b> +

<bä> doesn't work! </b> +

<boo> works fine </b> +

<s.foo>foo</s> +

<s.foo>s.foo</s.foo> +

<sub-ID#1> +

+!! end + +### +### Special characters +### + +!! test +Bare pipe character (bug 52363) +!! input +| +!! result +

| +

+!! end + +!! test +Bare pipe character from a template (bug 52363) +!! input +{{pipe}} +!! result +

| +

+!! end + +### +### test cases +### + +!! test + unordered list +!! input +* This is not an unordered list item. +!! result +

* This is not an unordered list item. +

+!! end + +!! test + spacing +!! input +Lorem ipsum dolor + +sed abit. + sed nullum. + +:and a colon + +!! result +

Lorem ipsum dolor + +sed abit. + sed nullum. + +:and a colon + +

+!! end + +!! test +nowiki 3 +!! input +:There is not nowiki. +:There is nowiki. + +#There is not nowiki. +#There is nowiki. + +*There is not nowiki. +*There is nowiki. +!! result +
+
There is not nowiki. +
+
There is nowiki. +
+
+
    +
  1. There is not nowiki. +
  2. +
  3. There is nowiki. +
  4. +
+
    +
  • There is not nowiki. +
  • +
  • There is nowiki. +
  • +
+ +!! end + +!! test +Entities inside +!! input +< +!! result +

< +

+!! end + +!! test +Entities inside template parameters +!! options +parsoid +!! input +{{echo|–}} +!! result +

+

+!! end + +### +### Comments +### +!! test +Comments and Indent-Pre +!! input + asdf + + asdf + + + asdf +xyz + + asdf + xyz +!! result +
asdf
+
+
asdf
+
+
asdf
+
+

xyz +

+
asdf
+xyz
+
+!! end + +!! test +Comment test 2a +!! input +asdf + +jkl +!! result +

asdf +jkl +

+!! end + +!! test +Comment test 2b +!! input +asdf + + +jkl +!! result +

asdf +

jkl +

+!! end + +!! test +Comment test 3 +!! input +asdf + + +jkl +!! result +

asdf +jkl +

+!! end + +!! test +Comment test 4 +!! input +asdfjkl +!! result +

asdfjkl +

+!! end + +!! test +Comment spacing +!! input +a + b +c +!! result +

a +

+
 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}} +!! result +

FOO +

+!! end + +!! test +Comment on its own line post-expand +!! input +a +{{blank}} +b +!! result +

a +

b +

+!! end + +!! test +Comment on its own line post-expand with non-significant whitespace +!! input +a + {{blank}} +b +!! result +

a +

b +

+!! end + +### +### paragraph wrapping tests +### +!! test +No block tags +!! input +a + +b +!! result +

a +

b +

+!! end + +!! test +Block tag on one line (
) +!! input +a
foo
+ +b +!! result +a
foo
+

b +

+!! end + +!! test +Block tag on one line (
) +!! input +a
foo
+ +b +!! result +a
foo
+

b +

+!! end + +!! test +Block tag on both lines (
) +!! input +a
foo
+ +b
foo
+!! result +a
foo
+b
foo
+ +!! end + +!! test +Block tag on both lines (
) +!! input +a
foo
+ +b
foo
+!! result +a
foo
+b
foo
+ +!! end + +!! test +Multiple lines without block tags +!! input +
foo
a +b +c +d e +x
foo
z +!! result +
foo
a +

b +c +d e +

+x
foo
z + +!! end + +!! test +Empty lines between lines with block tags +!! input +
+ + +
a + +b +
a
b + +
b
d + + +
e
+!! result +
+


+

+
a +

b +

+
a
b +
b
d +


+

+
e
+ +!! end + +### +### Preformatted text +### +!! test +Preformatted text +!! input + This is some + Preformatted text + With ''italic'' + And '''bold''' + And a [[Main Page|link]] +!! result +
This is some
+Preformatted text
+With italic
+And bold
+And a link
+
+!! end + +!! test +Tabs don't trigger preformatted text +!! input + This is not + preformatted text. + This is preformatted text. + So is this. +!! result +

This is not + preformatted text. +

+
This is preformatted text.
+	So is this.
+
+!! end + +!! test +Ident preformatting with inline content +!! input + a + ''b'' +!! result +
a
+b
+
+!! end + +!! test +
 with  inside (compatibility with 1.6 and earlier)
+!! input
+

+
+
+
+
+!! result +
+<b>
+<cite>
+<em>
+
+ +!! end + +!! test +Regression with preformatted in
+!! input +
+ Blah +
+!! result +
+
Blah
+
+
+ +!! end + +!! test +Bug 52763: Preformatted in
+!! input +
+ Blah +
+!! result +
+

Blah +

+
+ +!! end + +!! test +Bug 51086: Double newlines in blockquotes should be turned into paragraphs +!! input +
+Foo + +Bar +
+!! result +
+

Foo +

Bar +

+
+ +!! end + +!! test +Bug 15491: / in blockquote +!! input +
+Foo bar baz quux +
+!! result +
+

Foo bar baz quux +

+
+ +!! end + +# Note that the p-wrapping is newline sensitive, which could be +# considered a bug: tidy will wrap only the 'Foo' in the example +# below in a

tag. (see comment 23-25 of bug #6200) +!! test +Bug 15491: / in blockquote (2) +!! input +

Foo bar baz quux +
+!! result +
Foo bar baz quux +
+ +!! end + +!! test +
 with attributes (bug 3202)
+!! input
+
Bluescreen of WikiDeath
+!! result +
Bluescreen of WikiDeath
+ +!! end + +!! test +
 with width attribute (bug 3202)
+!! input
+
Narrow screen goodies
+!! result +
Narrow screen goodies
+ +!! end + +!! test +
 with forbidden attribute (bug 3202)
+!! input
+
Narrow screen goodies
+!! result +
Narrow screen goodies
+ +!! end + +!! test +Entities inside
+!! input
+
<
+!! result +
<
+ +!! end + +!! test +
 with forbidden attribute values (bug 3202)
+!! input
+
Narrow screen goodies
+!! result +
Narrow screen goodies
+ +!! end + +!! test + inside
 (bug 13238)
+!! input
+
+
+
+
+
+
+
Foo
+!! result +
+<nowiki>
+
+
+
+
+
<nowiki>Foo</nowiki>
+ +!! end + +!! test + and
 preference (first one wins)
+!! input
+
+
+
+ +
+ + +
+
+
+
+
+ +!! result +
+<nowiki>
+
+

</nowiki> +</pre> +

+<pre> +<nowiki> +</pre> + +</pre> +

+!! end + +!! test +
inside nowiki +!! input +
+!! result +

</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}}
+!!result
+

foo +

+!!end + +!! test +Templates: Indent-Pre: 1c: Wrapping should be based on expanded content +!! input + {{echo|a +b}} +!!result +
a
+
+

b +

+!!end + +!! test +Templates: Indent-Pre: 1d: Wrapping should be based on expanded content +!! input + {{echo|a +b +c + d +e +}} +!!result +
a
+
+

b +c +

+
d
+
+

e +

+!!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}} +!!result +
foo
+
+
foo bar
+
+
foo
+bar
+
+
foo
+
+
foo
+
+
bar
+
+!!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 +!!result +
a
+
+


+

+
a
+
+


+

+
b
+
+

a +

+
b
+
+

a +

+
b
+
+!!end + +# TODO / maybe: fix wt2wt for this +!! test +Parsoid: Don't paragraph-wrap fosterable content +!! options +parsoid=wt2html +!! input +{| + + + + + +|} +!! result + + + + + + + + + + +
+!! end + +!! test +Parsoid: Don't paragraph-wrap fosterable content even if table syntax is unbalanced +!! options +parsoid=wt2html +!! input +{| + + + + + + +|} +!! result + + + + + + + + + + +
+
+!! end + + +#-------------------------------------------------------------------- +# Transclusion parameter whitespace stripping tests +# Behavior is different for positional and named parameters +#-------------------------------------------------------------------- +!! test +Templates: Strip leading and trailing whitespace from named-param values +!! input +{{echo|1= a }} + +{{echo|1= {{echo|b}} }} + +{{echo| 1 = + c }} + +{{echo| 1 = +* d +}} +!! result +

a +

b +

c +

+
    +
  • d +
  • +
+ +!! end + +!! test +Templates: Don't strip whitespace from positional-param values +!! input +{{echo|a }} + +{{echo|{{echo|b}} }} + +{{echo| c +}} + +{{echo| {{echo|d}} +}} + +{{echo| + e}} + +{{echo| +* f}} + +{{echo| + }}g +!! result +

a +

b +

+
c 
+
+


+

+
d
+
+


+

+
e
+
+


+

+
    +
  • f +
  • +
+


+

+
g
+
+!! end + +!! test +Templates: Handle empty comment-and-ws-only lines correctly +!! input +{{echo|foo + + +bar}} +!! result +

foo +bar +

+!! end + +#-------------------------------------------------------------------- +# Transclusion parameter escaping tests +#-------------------------------------------------------------------- +!! test +Templates: Parsoid parameter escaping test 1 +!! options +parsoid +!! input +{{echo|[foo]|{{echo|[bar]}}}} +!! result +

[foo]

+!! end + +!! test +Parsoid: Pipes in external links in template parameter +!! options +parsoid +!! input +{{echo|[{{echo|http://example.com}} link]}} +!! result +

link

+!! end + +!! test +Parsoid: pipe in transclusion parameter +!! options +parsoid +!! input +{{echo|http://foo.com/a|b}} +!! result +

http://foo.com/a|b

+!! end + +!! test +Parsoid: Pipe in external link target and content in template parameter +!! options +parsoid=html2wt,wt2wt +!! input +{{echo|[http://foo.com/a|b a|b]}} +!! result +

a|b

+!! end + +!! test +Templates: Dont escape already nowiki-escaped text in template parameters +!! options +parsoid=html2wt,wt2wt +!! input +{{echo|foo|bar}} +{{echo|<div>}} +{{echo|}} +!! result +

foo|bar +<div> + +

+!! end + +## Bug 52824 +!! test +Templates: '=' char in nested transclusions should not trigger nowiki escapes or conversion to named param +!! options +parsoid=html2wt,wt2wt +!! input +{{echo|{{echo|1=bar}}}} +!! result +

bar

+!! end + +### +### Parsoid-centric tests for testing RT edge cases for pre +### + +!!test +1a. Indent-Pre and Comments +!!input + a + +c +!!result +
a
+
+

c +

+!!end + +!!test +1b. Indent-Pre and Comments +!!input + a + +c +!!result +
a
+
+

c +

+!!end + +!!test +1c. Indent-Pre and Comments +!!input + a + + a +!!result +
 a
+
+
 a
+
+!!end + +!!test +1d. Indent-Pre and Comments +(Pre-handler currently cannot distinguish between comment/ws order and normalizes them to [comment,ws] order) +!!input + a + + b +!!result +
a
+
+
b
+
+!!end + +!!test +2a. Indent-Pre and tables +!!input + {| + |- + !h1!!h2 + |foo||bar + |} +!!result + + + + + + +
h1h2 +foobar +
+ +!!end + +!!test +2b. Indent-Pre and tables +!!input + {| + |- +|foo +|} +!!result + + + +
foo +
+ +!!end + +!!test +2c. Indent-Pre and tables (bug 42252) +!!input +{| + |+ foo + ! | bar +|} +!!result + + + +
foo +
bar +
+ +!!end + +!!test +3a. Indent-Pre and block tags (single-line html) +!!input +

foo

+
foo
+
foo
+ foo +!!result +

foo

+
foo
+
foo
+
 foo 
+
+!!end + +!!test +3b. Indent-Pre and block tags (pre-content on separate line) +!!input +

+ foo +

+ +
+ foo +
+ +
+ foo +
+ +
+ foo +
+ +
+
+foo
+
+
+ +
+ foo +
+ +
  • + foo +
+ +!!result +

+ foo +

+
+
foo
+
+
+
+
foo
+
+
+
+

foo +

+
+
+
+foo
+
+
+
+
foo
+
+
+
  • + foo +
+ +!!end + +!!test +4. Multiple spaces at start-of-line +!!input +

foo

+ foo + {| +|foo +|} +!!result +

foo

+
   foo
+
+ + +
foo +
+ +!!end + +!! test +5. White-space in indent-pre +NOTE: the white-space char on 2nd line is significant +!! input + a
+ + b +!! result +
a
+ +b +
+!! end + +!! test +6. Pre-blocks should extend across lines with leading WS even when there is no wrappable content +!! input + a + + + b + + c + +d +!! result +
a
+
+b
+
+
c
+
+
+

d +

+!! end + +!! test +7a. Indent-pre and category links +!! options +parsoid=wt2html,wt2wt +!! input + [[Category:foo]] +{{echo| [[Category:foo]]}} +!! result + + + +!! end + +!! test +7b. Indent-pre and category links +!! options +parsoid=wt2html,wt2wt +!! input + [[Category:foo]] a + [[Category:foo]] {{echo|b}} +!! result +
+ a
+
+ b
+!! end + +### +### HTML-pre (some to spec PHP parser behavior and some Parsoid-RT-centric) +### + +!!test +HTML-pre: 1. embedded newlines +!!input +
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 +
+
name 
+
Definition +
+
+ +!! end + +!! test +Definition list for indentation only +!! input +: Indented text +!! result +
+
Indented text +
+
+ +!! end + +!! test +Definition list with no space +!! input +;name:Definition +!! result +
+
name
+
Definition +
+
+ +!!end + +!! test +Definition list with URL link +!! input +; http://example.com/ : definition +!! result +
+
http://example.com/ 
+
definition +
+
+ +!! end + +!! test +Definition list with bracketed URL link +!! input +;[http://www.example.com/ Example]:Something about it +!! result +
+
Example
+
Something about it +
+
+ +!! end + +!! test +Definition list with wikilink containing colon +!! input +; [[Help:FAQ]]: The least-read page on Wikipedia +!! result +
+
Help:FAQ
+
The least-read page on Wikipedia +
+
+ +!! end + +# At Brion's and JeLuF's insistence... :) +!! test +Definition list with news link containing colon +!! input +; news:alt.wikipedia.rox: This isn't even a real newsgroup! +!! result +
+
news:alt.wikipedia.rox
+
This isn't even a real newsgroup! +
+
+ +!! end + +!! test +Malformed definition list with colon +!! input +; news:alt.wikipedia.rox -- don't crash or enter an infinite loop +!! result +
+
news:alt.wikipedia.rox -- don't crash or enter an infinite loop +
+
+ +!! end + +!! test +Definition lists: colon in external link text +!! input +; [http://www.wikipedia2.org/ Wikipedia : The Next Generation]: OK, I made that up +!! result +
+
Wikipedia : The Next Generation
+
OK, I made that up +
+
+ +!! end + +!! test +Definition lists: colon in HTML attribute +!! input +;bold +!! result +
+
bold +
+
+ +!! end + +!! test +Definition lists: self-closed tag +!! input +;one
two : two-line fun +!! result +
+
one
two 
+
two-line fun +
+
+ +!! end + +!! test +Bug 11748: Literal closing tags +!! input +
+
test 1
+
test test test test test
+
test 2
+
test test test test test
+
+!! result +
+
test 1
+
test test test test test
+
test 2
+
test test test test test
+
+ +!! end + +!! test +Definition and unordered list using wiki syntax nested in unordered list using html tags. +!! input +
  • +; term : description +* unordered +
+!! result +
  • +
    +
    term 
    +
    description +
    +
    +
      +
    • unordered +
    • +
    +
+ +!! end + +!! test + +Definition list with empty definition and following paragraph +!! input +; term: +Paragraph text +!! result +
+
term
+
+
+
+

Paragraph text +

+!! end + +!! test +Nested definition lists using html syntax +!! input +
+
+
Foo
+
+
+!! result +
+
+
Foo
+
+
+ +!! end + +!! test +Definition Lists: No nesting: Multiple dd's +!! input +;x +:a +:b +!! result +
+
x +
+
a +
+
b +
+
+ +!! end + +!! test +Definition Lists: Indentation: Regular +!! input +:i1 +::i2 +:::i3 +!! result +
+
i1 +
+
i2 +
+
i3 +
+
+
+
+
+
+ +!! end + +!! test +Definition Lists: Indentation: Missing 1st level +!! input +::i2 +:::i3 +!! result +
+
+
i2 +
+
i3 +
+
+
+
+
+
+ +!! end + +!! test +Definition Lists: Indentation: Multi-level indent +!! input +:::i3 +!! result +
+
+
+
i3 +
+
+
+
+
+
+ +!! end + +!! test +Definition Lists: Hacky use to indent tables +!! input +::{| +|foo +|bar +|} +this text +should be left alone +!! result +
+ + +
foo +bar +
+

this text +should be left alone +

+!! end + +# Bug 52473 +!! test +Definition Lists: Hacky use to indent tables (WS-insensitive) +!! options +parsoid +!! input +: {| +|a +|} +!! result +
+
a
+
+!! 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: +## +##
+##
t2
+##
+##
+##
+##
d2
+##
+##
+##
+## +## But, Parsoid treats "; :" as a tight atomic unit and excess ":" as plain text +## So, the same wikitext above (;;t2 ::d2) is transformed into: +## +##
+##
+##
+##
t2
+##
:d2
+##
+##
+##
+## +## All Parsoid only definition list tests have this difference. +## +## See also: https://bugzilla.wikimedia.org/show_bug.cgi?id=6569 +## and http://lists.wikimedia.org/pipermail/wikitext-l/2011-November/000483.html + +!! test +Table / list interaction: indented table with lists in table contents +!! input +:{| +|- +| a +* b +|- +| c +* d +|} +!! result +
+ + + + +
a +
    +
  • b +
  • +
+
c +
    +
  • d +
  • +
+
+ +!! end + +!!test +Table / list interaction: lists nested in tables nested in indented lists +!!input +:{| +| +:a +:b +| +*c +*d +|} + +*e +*f +!!result +
+ + +
+
+
a +
+
b +
+
+
+
    +
  • c +
  • +
  • d +
  • +
+
+
    +
  • e +
  • +
  • f +
  • +
+ +!!end + +!! test +Definition Lists: Nesting: Multi-level (Parsoid only) +!! options +parsoid +!! input +;t1 :d1 +;;t2 ::d2 +;;;t3 :::d3 +!! result +
+
t1
+
d1
+
+
+
t2
+
:d2
+
+
+
t3
+
::d3
+
+
+
+
+
+ + +!! end + + +!! test +Definition Lists: Nesting: Test 2 (Parsoid only) +!! options +parsoid +!! input +;t1 +::d2 +!! result +
+
t1
+
+
+
d2
+
+
+
+ +!! end + + +!! test +Definition Lists: Nesting: Test 3 (Parsoid only) +!! options +parsoid +!! input +:;t1 +::::d2 +!! result +
+
+
+
t1
+
+
+
+
+
d2
+
+
+
+
+
+
+
+ +!! end + + +!! test +Definition Lists: Nesting: Test 4 +!! input +::;t3 +:::d3 +!! result +
+
+
+
t3 +
+
d3 +
+
+
+
+
+
+ +!! end + + +## The Parsoid team believes the following three test exposes a +## bug in the PHP parser. (Parsoid team thinks the PHP parser is +## wrong to close the
after the
containing the
    .) +!! test +Definition Lists: Mixed Lists: Test 1 (php) +!! options +php +!! input +:;* foo +::* bar +:; baz +!! result +
    +
    +
      +
    • foo +
    • +
    • bar +
    • +
    +
    +
    +
    +
    baz +
    +
    +
    +
    + +!! end +!! test +Definition Lists: Mixed Lists: Test 1 (parsoid) +!! options +parsoid +!! input +:;* foo +::* bar +:; baz +!! result +
    +
    +
      +
    • foo +
    • +
    +
      +
    • bar +
    • +
    +
    baz
    +
    +
    +!! end + +!! test +Definition Lists: Mixed Lists: Test 2 +!! input +*: d1 +*: d2 +!! result +
      +
    • +
      d1 +
      +
      d2 +
      +
      +
    • +
    + +!! end + + +!! test +Definition Lists: Mixed Lists: Test 3 +!! input +*::: d1 +*::: d2 +!! result +
      +
    • +
      +
      +
      d1 +
      +
      d2 +
      +
      +
      +
      +
      +
      +
    • +
    + +!! end + + +!! test +Definition Lists: Mixed Lists: Test 4 +!! input +*;d1 :d2 +*;d3 :d4 +!! result +
      +
    • +
      d1 
      +
      d2 +
      +
      d3 
      +
      d4 +
      +
      +
    • +
    + +!! end + + +!! test +Definition Lists: Mixed Lists: Test 5 +!! input +*:d1 +*:: d2 +!! result +
      +
    • +
      d1 +
      +
      d2 +
      +
      +
      +
      +
    • +
    + +!! end + + +!! test +Definition Lists: Mixed Lists: Test 6 +!! input +#*:d1 +#*::: d3 +!! result +
      +
      • +
      • +
        d1 +
        +
        +
        d3 +
        +
        +
        +
        +
        +
        +
      • +
      +
    1. +
    + +!! end + + +!! test +Definition Lists: Mixed Lists: Test 7 +!! input +:* d1 +:* d2 +!! result +
    +
      +
    • d1 +
    • +
    • d2 +
    • +
    +
    +
    + +!! end + + +!! test +Definition Lists: Mixed Lists: Test 8 +!! input +:* d1 +::* d2 +!! result +
    +
      +
    • d1 +
    • +
    +
    +
      +
    • d2 +
    • +
    +
    +
    +
    +
    + +!! end + + +!! test +Definition Lists: Mixed Lists: Test 9 +!! input +*;foo :bar +!! result +
      +
    • +
      foo 
      +
      bar +
      +
      +
    • +
    + +!! end + + +!! test +Definition Lists: Mixed Lists: Test 10 +!! input +*#;foo :bar +!! result +
      +
      1. +
      2. +
        foo 
        +
        bar +
        +
        +
      3. +
      +
    • +
    + +!! end + +# The Parsoid team disagrees with the PHP parser's seemingly-random +# rules regarding dd/dt on the next two tests. Parsoid is more +# consistent, and recognizes the shared nesting and keeps the +# still-open tags around until the nesting is complete. + +!! test +Definition Lists: Mixed Lists: Test 11 (php) +!! options +php +!! input +*#*#;*;;foo :bar +*#*#;boo :baz +!! result +
      +
      1. +
        • +
          1. +
          2. +
            foo 
            +
              +
            • +
              +
              bar +
              +
              +
            +
            +
          3. +
        + +
+
+
boo 
+
baz +
+
+ + + + + + + + + +!! end +!! test +Definition Lists: Mixed Lists: Test 11 (parsoid) +!! options +parsoid +!! input +*#*#;*;;foo :bar +*#*#;boo :baz +!! result +
    +
  • +
      +
    1. +
        +
      • +
          +
        1. +
          +
          +
            +
          • +
            +
            +
            +
            foo 
            +
            bar
            +
            +
          • +
          +
          boo 
          +
          baz
          +
        2. +
      • +
    2. +
  • +
+!! end + + +!! test +Definition Lists: Weird Ones: Test 1 (php) +!! options +php +!! input +*#;*::;; foo : bar (who uses this?) +!! result +
    +
    1. +
    2. +
      foo 
      +
        +
      • +
        +
        +
        +
        bar (who uses this?) +
        +
        +
        +
        +
        +
        +
      +
      +
    3. +
+ + + + + + + +!! end +!! test +Definition Lists: Weird Ones: Test 1 (parsoid) +!! options +parsoid +!! input +*#;*::;; foo : bar (who uses this?) +!! result +
    +
  • +
      +
    1. +
      +
      +
        +
      • +
        +
        +
        +
        +
        +
        +
        +
        foo 
        +
        bar (who uses this?)
        +
        +
        +
        +
      • +
      +
    2. +
  • +
+!! end + +### +### External links +### +!! test +External links: non-bracketed +!! input +Non-bracketed: http://example.com +!! result +

Non-bracketed: http://example.com +

+!! end + +!! test +External links: numbered +!! input +Numbered: [http://example.com] +Numbered: [http://example.net] +Numbered: [http://example.com] +!! result +

Numbered: [1] +Numbered: [2] +Numbered: [3] +

+!!end + +!! test +External links: specified text +!! input +Specified text: [http://example.com link] +!! result +

Specified text: link +

+!!end + +!! test +External links: trail +!! input +Linktrails should not work for external links: [http://example.com link]s +!! result +

Linktrails should not work for external links: links +

+!! end + +!! test +External links: dollar sign in URL +!! input +http://example.com/1$2345 +!! result +

http://example.com/1$2345 +

+!! end + +!! test +External links: dollar sign in URL (named) +!! input +[http://example.com/1$2345] +!! result +

[1] +

+!!end + +!! test +External links: open square bracket forbidden in URL (bug 4377) +!! input +http://example.com/1[2345 +!! result +

http://example.com/1[2345 +

+!! end + +!! test +External links: open square bracket forbidden in URL (named) (bug 4377) +!! input +[http://example.com/1[2345] +!! result +

[2345 +

+!!end + +!! test +External links: nowiki in URL link text (bug 6230) +!!input +[http://example.com/ ''example site''] +!! result +

''example site'' +

+!! end + +!! test +External links: newline forbidden in text (bug 6230 regression check) +!! input +[http://example.com/ first +second] +!! result +

[http://example.com/ first +second] +

+!!end + +!! test +External links: Pipe char between url and text +!! input +[http://example.com | link] +!! result +

| link +

+!!end + +!! test +External links: protocol-relative URL in brackets +!! input +[//example.com/ Test] +!! result +

Test +

+!! end + +!! test +External links: protocol-relative URL in brackets without text +!! input +[//example.com] +!! result +

[1] +

+!! 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 +!! result +

foo//example.com/Foo +

+!! end + +!! test +External image +!! input +External image: http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png +!! result +

External image: Ncwikicol.png +

+!! end + +!! test +External image from https +!! input +External image from https: https://meta.wikimedia.org/upload/f/f1/Ncwikicol.png +!! result +

External image from https: Ncwikicol.png +

+!! end + +!! test +External image (when not allowed) +!! options +wgAllowExternalImages=0 +!! input +External image: http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png +!! result +

External image: http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png +

+!! end + +!! test +Link to non-http image, no img tag +!! input +Link to non-http image, no img tag: ftp://example.com/test.jpg +!! result +

Link 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, +!! result +

Terminating separator: http://example.com/thing, +

+!! end + +!! test +External links: intervening separator +!! input +Intervening separator: http://example.com/1,2,3 +!! result +

Intervening 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] +!! result +

Old 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] +!! result +

And again with mixed protocols: link +

+!!end + +!! test +External links: URL in text +!! input +URL in text: [http://example.com http://example.com] +!! result +

URL 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 +

ja-style clickable images: Ncwikicol.png +

+!!end + +!! test +External links: raw ampersand +!! input +Old & use: http://x&y +!! result +

Old & use: http://x&y +

+!! end + +!! test +External links: encoded ampersand +!! input +Old & use: http://x&y +!! result +

Old & use: http://x&y +

+!! end + +!! test +External links: encoded equals (bug 6102) +!! input +http://example.com/?foo=bar +!! result +

http://example.com/?foo=bar +

+!! end + +!! test +External links: [raw ampersand] +!! input +Old & use: [http://x&y] +!! result +

Old & use: [1] +

+!! end + +!! test +External links: [encoded ampersand] +!! input +Old & use: [http://x&y] +!! result +

Old & use: [1] +

+!! end + +!! test +External links: [encoded equals] (bug 6102) +!! input +[http://example.com/?foo=bar] +!! result +

[1] +

+!! end + +!! test +External links: [IDN ignored character reference in hostname; strip it right off] +!! input +[http://e‌xample.com/] +!! result +

[1] +

+!! 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://e‌xample.com -> [http://example.com|http://example.com] +# [http://example.com|http://e‌xample.com] -> [http://example.com|http://e‌xample.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://e‌xample.com/ +!! result +

http://example.com/ +

+!! end + +!! test +External links: www.jpeg.org (bug 554) +!! input +http://www.jpeg.org +!!result +

http://www.jpeg.org +

+!! 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 +

[1] +

+!! end + +!! test +BUG 361: URL inside bracketed URL +!! input +[http://www.example.com/foo http://www.example.com/bar] +!! result +

http://www.example.com/bar +

+!! end + +!! test +BUG 361: URL within URL, not bracketed +!! input +http://www.example.com/foo?=http://www.example.com/bar +!! result +

http://www.example.com/foo?=http://www.example.com/bar +

+!! end + +!! test +BUG 289: ">"-token in URL-tail +!! input +http://www.example.com/ +!! result +

http://www.example.com/<hello> +

+!!end + +!! test +BUG 289: literal ">"-token in URL-tail +!! input +http://www.example.com/html +!! result +

http://www.example.com/html +

+!!end + +!! test +BUG 289: ">"-token in bracketed URL +!! input +[http://www.example.com/ stuff] +!! result +

<hello> stuff +

+!!end + +!! test +BUG 289: literal ">"-token in bracketed URL +!! input +[http://www.example.com/html stuff] +!! result +

html stuff +

+!!end + +!! test +BUG 289: literal double quote at end of URL +!! input +http://www.example.com/"hello" +!! result +

http://www.example.com/"hello" +

+!!end + +!! test +BUG 289: literal double quote in bracketed URL +!! input +[http://www.example.com/"hello" stuff] +!! result +

"hello" stuff +

+!!end + +!! test +External links: multiple legal whitespace is fine, Magnus. Don't break it please. (bug 5081) +!! input +[http://www.example.com test] +!! result +

test +

+!! end + +!! test +External links: link text with spaces +!! input +[http://www.example.com a b c] +[http://www.example.com ''a'' ''b''] +!! result +

a b c +a b +

+!! end + +!! test +External links: wiki links within external link (Bug 3695) +!! input +[http://example.com [[wikilink]] embedded in ext link] +!! result +

wikilink embedded in ext link +

+!! end + +!! test +BUG 787: Links with one slash after the url protocol are invalid +!! input +http:/example.com + +[http:/example.com title] +!! result +

http:/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'''''] +!! result +

text +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 +!! result +

http://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 +!! result +

http://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 +!! result +

http://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 +

[1] +

+!! end + +!! test +Bug 4781, 5267: %26 in autonumber URL +!! input +[http://www.example.com/?title=100%25_Bran] +!! result +

[1] +

+!! end + +!! test +Bug 4781, 5267: %28, %29 in autonumber URL +!! input +[http://www.example.com/?title=Ben-Hur_%281959_film%29] +!! result +

[1] +

+!! end + + +!! test +Bug 4781: %26 in bracketed URL +!! input +[http://www.example.com/?title=AT%26T link] +!! result +

link +

+!! end + +!! test +Bug 4781, 5267: %26 in bracketed URL +!! input +[http://www.example.com/?title=100%25_Bran link] +!! result +

link +

+!! end + +!! test +Bug 4781, 5267: %28, %29 in bracketed URL +!! input +[http://www.example.com/?title=Ben-Hur_%281959_film%29 link] +!! result +

link +

+!! end + +!! test +External link containing double-single-quotes in text '' (bug 4598 sanity check) +!! input +Some [http://example.com/ pretty ''italics'' and stuff]! +!! result +

Some 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]!'' +!! result +

Some 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]].] +!! result +

La muerte de Casagemas (1901) en el sitio de Museo Picasso. +

+!! end + +!! test +External link with comments in link text +!! input +[http://www.google.com Google ] +!! result +

Google +

+!! end + +!! test +URL-encoding in URL functions (single parameter) +!! input +{{localurl:Some page|amp=&}} +!! result +

/index.php?title=Some_page&amp=& +

+!! end + +!! test +URL-encoding in URL functions (multiple parameters) +!! input +{{localurl:Some page|q=?&=&}} +!! result +

/index.php?title=Some_page&q=?&amp=& +

+!! end + +!! test +Brackets in urls +!! input +http://example.com/index.php?foozoid%5B%5D=bar + +http://example.com/index.php?foozoid[]=bar +!! result +

http://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 +!! result +

http://[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 + +!! test +Parsoid: Percent encoding in external links +!! options +parsoid +!! input +[https://github.com/search?l=&q=ResourceLoader+%40wikimedia Search] +!! result +

Search

+!! end + +!! test +Parsoid: use url link syntax for links where the content is equal the link +target +!! options +parsoid +!! input +http://example.com +!! result +

http://example.com

+!! end + +### +### Quotes +### + +!! test +Quotes +!! input +Normal text. '''Bold text.''' Normal text. ''Italic text.'' + +Normal text. '''''Bold italic text.''''' Normal text. +!!result +

Normal text. Bold text. Normal text. Italic text. +

Normal text. Bold italic text. Normal text. +

+!! end + + +!! test +Unclosed and unmatched quotes (php) +!! options +php +!! 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 +!! result +

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. +

Toms car is bigger than Susans. +

Plain italic's plain +

+!! end +# Parsoid inserts an empty bold tag pair at the end of the line, that the PHP +# parser strips. The wikitext contains just the first half of the bold +# quote pair. +!! test +Unclosed and unmatched quotes (parsoid) +!! options +parsoid +!! 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 +!! result +

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. +

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 produce
as
+# is the bare minimum required by the spec, see: +# http://www.w3.org/TR/xhtml-modularization/dtd_module_defs.html#a_module_Basic_Tables +!! test +A table with no data. (php) +!! options +php +!! input +{||} +!! result +!! end +# Parsoid team replies: empty table tags are legal in HTML5 +!! test +A table with no data. (parsoid) +!! options +parsoid +!! input +{||} +!! result +
+!! end + +# A table with nothing but a caption is invalid XHTML, we might want to render +# this as

caption

+!! test +A table with nothing but a caption (php) +!! options +php +!! input +{| +|+ caption +|} +!! result + +
caption +
+ +!! end +# Parsoid team replies: table with only a caption is legal in HTML5 +!! test +A table with nothing but a caption (parsoid) +!! options +parsoid +!! input +{| +|+ caption +|} +!! result +
caption
+!! end + +!! test +A table with caption with default-spaced attributes and a table row +!! input +{| +|+ style="color: red;" | caption1 +|- +| foo +|} +!! result + + + +
caption1 +
foo +
+ +!! end + +!! test +A table with captions with non-default spaced attributes and a table row +!! input +{| +|+style="color: red;"|caption2 +|+ style="color: red;"| caption3 +|- +| foo +|} +!! result + + + + +
caption2 + caption3 +
foo +
+ +!! end + +!! test +Table td-cell syntax variations +!! input +{| +| foo bar foo | baz +| foo bar foo || baz +| style='color:red;' | baz +| style='color:red;' || baz +|} +!! result + + + + + + + +
baz + foo bar foo baz + baz + style='color:red;' baz +
+ +!! end + +!! test +Simple table +!! input +{| +| 1 || 2 +|- +| 3 || 4 +|} +!! result + + + + + + +
1 2 +
3 4 +
+ +!! end + +!! test +Simple table but with multiple dashes for row wikitext +!! input +{| +| foo +|----- +| bar +|} +!! result + + + + +
foo +
bar +
+ +!! end +!! test +Multiplication table +!! input +{| border="1" cellpadding="2" +|+Multiplication table +|- +! × !! 1 !! 2 !! 3 +|- +! 1 +| 1 || 2 || 3 +|- +! 2 +| 2 || 4 || 6 +|- +! 3 +| 3 || 6 || 9 +|- +! 4 +| 4 || 8 || 12 +|- +! 5 +| 5 || 10 || 15 +|} +!! result + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Multiplication table +
× 1 2 3 +
1 + 1 2 3 +
2 + 2 4 6 +
3 + 3 6 9 +
4 + 4 8 12 +
5 + 5 10 15 +
+ +!! end + +!! test +Accept "||" in table headings +!! input +{| +!h1 || h2 +|} +!! result + + + +
h1 h2 +
+ +!! end + +!! test +Accept "||" in indented table headings +!! input +:{| +!h1 || h2 +|} +!! result +
+ + +
h1 h2 +
+ +!! end + +!! test +Accept empty attributes in td/th cells (td/th cells starting with leading ||) +!! input +{| +!| h1 +|| a +|} +!! result + + + +
h1 + a +
+ +!! end + +!!test +Accept "| !" at start of line in tables (ignore !-attribute) +!!input +{| +|- +| !style="color:red" | bar +|} +!!result + + + +
bar +
+ +!!end + +!!test +Allow +/- in 2nd and later cells in a row, in 1st cell when td-attrs are present, or in 1st cell when there is a space between "|" and +/- +!!input +{| +|- +|style='color:red;'|+1 +|style='color:blue;'|-1 +|- +| 1 || 2 || 3 +| 1 ||+2 ||-3 +|- +| +1 +| -1 +|} +!!result + + + + + + + + + + + + + + +
+1 +-1 +
1 2 3 + 1 +2 -3 +
+1 + -1 +
+ +!!end + +!! test +Table rowspan +!! input +{| border=1 +| Cell 1, row 1 +|rowspan=2| Cell 2, row 1 (and 2) +| Cell 3, row 1 +|- +| Cell 1, row 2 +| Cell 3, row 2 +|} +!! result + + + + + + + +
Cell 1, row 1 + Cell 2, row 1 (and 2) + Cell 3, row 1 +
Cell 1, row 2 + Cell 3, row 2 +
+ +!! end + +!! test +Nested table +!! input +{| border=1 +| α +| +{| bgcolor=#ABCDEF border=2 +|nested +|- +|table +|} +|the original table again +|} +!! result + + + + +
α + + + + + +
nested +
table +
+
the original table again +
+ +!! end + +!! test +Invalid attributes in table cell (bug 1830) +!! input +{| +|Cell:|broken +|} +!! result + + +
broken +
+ +!! end + + +!! test +Table security: embedded pipes (http://lists.wikimedia.org/mailman/htdig/wikitech-l/2006-April/022293.html) +!! input +{| +| |[ftp://|x||]" onmouseover="alert(document.cookie)">test +!! result + + + + + +
[ftp://%7Cx]" onmouseover="alert(document.cookie)">test +
+ +!! end + + +!! test +Indented table markup mixed with indented pre content (proposed in bug 6200) +!! input + + + + +
+ Text that should be rendered preformatted +
+!! result + + + + +
+
Text that should be rendered preformatted
+
+
+ +!! end + +!! test +Template-generated table cell attributes and cell content +!! input +{| +|{{table_attribs}} +| {{table_attribs}} +|} +!! result + + + +
Foo + Foo +
+ +!! end + +!! test +Template-generated table cell attributes and cell content (2) +!! input +{| +|align=center {{table_attribs}} +|} +!! result + + +
Foo +
+ +!! end + +!! test +Template-generated table cell attributes and cell content (3) +!! input +{| +|align=center {{table_cells}} +|} +!! result + + + + +
Foo Bar Baz +
+ +!! end + +!! test +Table with row followed by newlines and table heading +!! input +{| +|- + +! foo +|} +!! result + + + + +
foo +
+ +!! end + +!! test +Table with empty line following the start tag +!! input +{| + +|- +| foo +|} +!! result + + + + +
foo +
+ +!! end + +# FIXME: Preserve the attribute properly (with an empty string as value) in +# the PHP parser. Parsoid implements the behavior below. +!! test +Table attributes with empty value +!! options +parsoid +!! input +{| +| style=| hello +|} +!! result + + + +
hello +
+ +!! end + +!! test +Wikitext table with a lot of comments +!! input +{| + +| foo + +|- + +| + +|} +!! result + + + + +
foo +
+
+ +!! end + +!! test +Wikitext table with double-line table cell +!! input +{| +|a +b +|} +!! result + + +
a +

b +

+
+ +!! end + +!! test +Table cell with a single comment +!! input +{| +| +| a +|} +!! result + + + +
+ a +
+ +!! end + +# The expected HTML structure in this test is debatable. The PHP parser does +# not parse this kind of table at all. The main focus for Parsoid is on +# round-tripping, so this output is ok for now. TODO: revisit! +!! test +Wikitext table with html-syntax row (Parsoid) +!! options +parsoid +!! input +{| +|- +foo +|} +!! result + + + +
foo
+!! end + +!! test +Implicit after a |- +(PHP parser relies on Tidy to add the missing tags) +!! options +parsoid=wt2html,wt2wt +!! input +{| +|- +a +|} +!! result + + +
a
+!! end + +!! test +Pres should be recognized in an explicit context, but not in an implicit context +(PHP parser relies on Tidy to add the missing tags) +!! options +parsoid=wt2html,wt2wt +!! input +{| +|- +| + a +|- + b +|} +!! result + + + + + +
a
b
+!! end + +!! test +Lists should be recognized in an implicit context +(PHP parser relies on Tidy to add the missing tags) +!! options +parsoid=wt2html,wt2wt +!! input +{| +|- +*a +|} +!! result + + + + +
    +
  • a
  • +
+!! end + +!! test +Parsoid: Round-trip tables directly followed by content (bug 51219) +!! options +parsoid=wt2html,wt2wt +!! input +{| +|foo +|} bar + +{| +|baz +|}quux +!! result + + +
foo
bar + + + +
baz
quux +!! end + +!! test +Parsoid: Default to a newline after tables in new content (bug 51219) +!! options +parsoid=html2wt +!! input +{| +|foo +|} + bar +{| +|baz +|} +'''quux''' +!! result + +
foo
bar + +
baz
quux +!! end + +### +### Internal links +### +!! test +Plain link, capitalized +!! input +[[Main Page]] +!! result +

Main Page +

+!! end + +!! test +Plain link, uncapitalized +!! input +[[main Page]] +!! result +

main Page +

+!! end + +!! test +Piped link +!! input +[[Main Page|The Main Page]] +!! result +

The Main Page +

+!! end + +!! test +Piped link with comment in link text +!! input +[[Main Page|The Main Page]] +!! result +

The Main Page +

+!! end + +!! test +Broken link +!! input +[[Zigzagzogzagzig]] +!! result +

Zigzagzogzagzig +

+!! end + +!! test +Broken link with fragment +!! input +[[Zigzagzogzagzig#zug]] +!! result +

Zigzagzogzagzig#zug +

+!! end + +!! test +Special page link with fragment +!! input +[[Special:Version#anchor]] +!! result +

Special:Version#anchor +

+!! end + +!! test +Nonexistent special page link with fragment +!! input +[[Special:ThisNameWillHopefullyNeverBeUsed#anchor]] +!! result +

Special:ThisNameWillHopefullyNeverBeUsed#anchor +

+!! end + +!! test +Link with prefix +!! input +xxx[[main Page]], xxx[[Main Page]], Xxx[[main Page]] XXX[[main Page]], XXX[[Main Page]] +!! result +

xxxmain Page, xxxMain Page, Xxxmain Page XXXmain Page, XXXMain Page +

+!! end + +!! test +Link with suffix +!! input +[[Main Page]]xxx, [[Main Page]]XXX, [[Main Page]]!!! +!! result +

Main 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 +

prefixed articles with spaces +

prefixed articlesaoeu +

Main Page test +

+!! end + + +!! test +Link with HTML entity in suffix / tail +!! input +[[Main Page]]", [[Main Page]]a +!! result +

Main Page", Main Pagea +

+!! 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 +

The|Main|Page +

+!! end + +!! test +Link to namespaces +!! input +[[Talk:Parser testing]], [[Meta:Disclaimers]] +!! result +

Talk:Parser testing, Meta:Disclaimers +

+!! end + +!! article +MemoryAlpha:AlphaTest +!! text +This is an article in the MemoryAlpha namespace +(which shadows the memoryalpha interwiki link). +!! endarticle + +!! test +Namespace takes precedence over interwiki link (bug 51680) +!! input +[[MemoryAlpha:AlphaTest]] +!! result +

MemoryAlpha:AlphaTest +

+!! end + +!! test +Piped link to namespace +!! input +[[Meta:Disclaimers|The disclaimers]] +!! result +

The disclaimers +

+!! 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 +

7% Solution +

+!! end + +!! test +Link containing % as a single hex sequence interpreted to char +!! input +[[7%25 Solution]] +!! result +

7% Solution +

+!!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 an equals sign +!! input +[[Special:BookSources/isbn=4-00-026157-6]] +!! result +

Special:BookSources/isbn=4-00-026157-6 +

+!! end + +!! article +Foo~bar +!! text +Just a test of an article title containing a tilde. +!! endarticle + +# note that links containing signatures, like [[Foo~~~~]], are +# massaged by the pre-save transform (PST) and so the tildes are never +# seen by the parser. +!! test +Link containing a tilde +!! input +[[Foo~bar]] +!! result +

Foo~bar +

+!! end + +!! test +Link containing double-single-quotes '' (bug 4598) +!! input +[[Lista d''e paise d''o munno]] +!! result +

Lista d''e paise d''o munno +

+!! end + +!! test +Link containing double-single-quotes '' in text (bug 4598 sanity check) +!! input +Some [[Link|pretty ''italics'' and stuff]]! +!! result +

Some 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]]! +!! result +

Some 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'']] +!! result +

File:Denys Savchenko Pentecoste.jpg +

''Pentecoste'' +

Pentecoste +

Pentecoste +

+!! 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 +

[Link text] +

+!! 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 +

[Link text] +

+!! end + +!! test +Plain link to page with question mark in title +!! input +[[A?b]] + +[[A?b|Baz]] +!! result +

A?b +

Baz +

+!! 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]] +!! result +

Piped 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 +

http://url/ +

+!! end + +!! test +BUG 337: Escaped self-links should be bold +!! options +title=[[Bug462]] +!! input +[[Bug462]] [[Bug462]] +!! result +

Bug462 Bug462 +

+!! end + +!! test +Self-link to section should not be bold +!! options +title=[[Main Page]] +!! input +[[Main Page#section]] +!! result +

Main Page#section +

+!! end + +!! article +00 +!! text +This is 00. +!! endarticle + +!!test +Self-link to numeric title +!!options +title=[[0]] +!!input +[[0]] +!!result +

0 +

+!!end + +!!test +Link to numeric-equivalent title +!!options +title=[[0]] +!!input +[[00]] +!!result +

00 +

+!!end + +!! test + inside a link +!! input +[[Main Page]] [[Main Page|the main page [it's not very good]]] +!! result +

[[Main Page]] the main page [it's not very good] +

+!! end + +!! test +Non-breaking spaces in title +!! input +[[  Main   Page  ]] +!! result +

  Main   Page   +

+!!end + +!! test +Internal link with ca linktrail, surrounded by bold apostrophes (bug 27473 primary issue) +!! options +language=ca +!! input +'''[[Main Page]]''' +!! result +

Main Page +

+!! end + +!! test +Internal link with ca linktrail, surrounded by italic apostrophes (bug 27473 primary issue) +!! options +language=ca +!! input +''[[Main Page]]'' +!! result +

Main Page +

+!! end + +!! test +Internal link with en linktrail: no apostrophes (bug 27473) +!! options +language=en +!! input +[[Something]]'nice +!! result +

Something'nice +

+!! end + +!! test +Internal link with ca linktrail with apostrophes (bug 27473) +!! options +language=ca +!! input +[[Something]]'nice +!! result +

Something'nice +

+!! end + +!! test +Internal link with kaa linktrail with apostrophes (bug 27473) +!! options +language=kaa +!! input +[[Something]]'nice +!! result +

Something'nice +

+!! end + +!! article +Söfnuður +!! text +Test. +!! endarticle + +!! test +Internal link with is link prefix +!! options +language=is +!! input +Aðrir mótmælenda[[söfnuður|söfnuðir]] og +!! result +

Aðrir mótmælendasöfnuðir og +

+!! end + +!! article +Mótmælendatrú +!! text +Test. +!! endarticle + +!! test +Internal link with is link trail and link prefix +!! options +language=is +!! input +[[mótmælendatrú|xxx]]ar +[[mótmælendatrú]]ar +mótmælenda[[söfnuður]] +mótmælenda[[söfnuður|söfnuðir]] +mótmælenda[[söfnuður|söfnuðir]]xxx +!! result +

xxxar +mótmælendatrúar +mótmælendasöfnuður +mótmælendasöfnuðir +mótmælendasöfnuðirxxx +

+!! end + +!! test +Parsoid link trail escaping +!! options +parsoid=html2wt,html2html +!! input +[[apple]]s +!! result +

apples

+!! end + +!! test +Parsoid link prefix escaping +!! options +language=is +parsoid=html2wt,html2html +!! input +Aðrir mótmælenda[[söfnuður]] +!! result +

Aðrir mótmælendasöfnuður

+!! 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 +

bar +

bar +

foo +

foo +

+!! end + +### +### Interwiki links (see maintenance/interwiki.sql) +### + +!! test +Inline interwiki link +!! input +[[MeatBall:SoftSecurity]] +!! result +

MeatBall:SoftSecurity +

+!! end + +!! test +Inline interwiki link with empty title (bug 2372) +!! input +[[MeatBall:]] +!! result +

MeatBall: +

+!! 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 +

MeatBall:SoftSecurity#foo +

+!! end + + +### +### Interlanguage links +### Language links (so that searching for '### language' matches..) +### + +!! test +Interlanguage link +!! input +Blah blah blah +[[zh:Chinese]] +!!result +

Blah blah blah +

+!! end + +!! test +Double interlanguage link +!! input +Blah blah blah +[[es:Spanish]] +[[zh:Chinese]] +!!result +

Blah blah blah +

+!! end + +!! test +Interlanguage link, with prefix links +!! options +language=ln +!! input +Blah blah blah +[[zh:Chinese]] +!!result +

Blah blah blah +

+!! end + +!! test +Double interlanguage link, with prefix links (bug 8897) +!! options +language=ln +!! input +Blah blah blah +[[es:Spanish]] +[[zh:Chinese]] +!!result +

Blah blah blah +

+!! end + +!! test +Parsoid-specific test: Wikilinks with   should RT properly +!! options +language=ln +!! input +[[WW II]] +!!result +

WW II +

+!! end + +!! test +Parsoid bug 53221: Wikilinks should be properly entity-escaped +!! options +parsoid=html2wt +!! input +He&nbsp;llo [[Foo|He&nbsp;llo]] + +He&nbsp;llo [[He&nbsp;llo]] +!!result +

He&nbsp;llo He&nbsp;llo

+

He&nbsp;llo He&nbsp;llo

+!! end + +!! test +Parsoid: handle constructor well +!! options +parsoid +!! input +[[constructor]] + +[[constructor:foo]] +!! result +

constructor

+ + +

constructor:foo

+!! end + +!! test +Parsoid: recognize interlanguage links without a target page +!! options +parsoid +!! input +[[ko:]] +!! result +

+

+!! end + +!! test +Parsoid: recognize interwiki links without a target page +!! options +parsoid +!! input +[[:ko:]] +!! result +

ko:

+!! end + +### +### Redirects, Parsoid-only +### +!! test +Simple redirect to page +!! options +parsoid +!! input +#REDIRECT [[Main Page]] +!! result + +!! end + +!! test +Optional colon in #REDIRECT +!! options +# the colon is archaic syntax. we support it for wt2html, but we +# don't care that it roundtrips back to the modern syntax. +parsoid=wt2html,html2html +!! input +#REDIRECT:[[Main Page]] +!! result + +!! end + +!! test +Whitespace in #REDIRECT with optional colon +!! options +# the colon and gratuitous whitespace is archaic syntax. we support +# it for wt2html, but we don't care that it roundtrips back to the +# modern syntax (without extra whitespace) +parsoid=wt2html,html2html +!! input + + #REDIRECT +: +[[Main Page]] +!! result + +!! end + +!! test +Piped link in #REDIRECT +!! options +# content after piped link is ignored. we support this syntax, +# but don't care that the piped link is lost when we roundtrip this. +parsoid=wt2html +!! input +#REDIRECT [[Main Page|bar]] +!! result + +!! end + +!! test +Redirect to category +!! options +parsoid=wt2html +!! input +#REDIRECT [[Category:Foo]] +!! result + +!! end + +!! test +Redirect to category with URL encoding +!! options +parsoid=wt2html +!! input +#REDIRECT [[Category%3AFoo]] +!! result + +!! end + +!! test +Redirect to category page +!! options +parsoid=wt2html,html2html +!! input +#REDIRECT [[:Category:Foo]] +!! result +

Category:Foo

+!! end + +!! test +Redirect to image page (1) +!! options +parsoid +!! input +#REDIRECT [[File:Wiki.png]] +!! result + +!! end + +!! test +Redirect to image page (2) +!! options +parsoid +!! input +#REDIRECT [[Image:Wiki.png]] +!! result + +!! end + +!! test +Redirect to language +!! options +parsoid +!! input +#REDIRECT [[en:File:Wiki.png]] +!! result + +!! end + +!! test +Redirect to interwiki +!! options +parsoid +!! input +#REDIRECT [[meatball:File:Wiki.png]] +!! result + +!! end + +!! test +Non-English #REDIRECT +!! options +parsoid +language=is +!! input +#TILVÍSUN [[Main Page]] +!! result + +!! end + +## +## XHTML tidiness +### + +!! test +
to
+!! input +1
2
3 +!! result +

1
2
3 +

+!! end + +!! test +Broken br tag sanitization +!! options +php +!! input +
+!! result +

</br> +

+!! end + +# TODO: Fix html2html mode (bug 51055)! +!! test +Parsoid: Broken br tag recognition +!! options +parsoid=wt2html +!! input +
+!! result +


+!! end + +!! test +Incorrecly removing closing slashes from correctly formed XHTML +!! input +
+!! result +


+

+!! end + +!! test +Failing to transform badly formed HTML into correct XHTML +!! input +
+
+
+!! result +


+
+
+

+!!end + +!! test +Handling html with a div self-closing tag +!! input +
+
+
+
+
+
+!! result +

<div title /> +<div title/> +

+
+

<div title=bar /> +<div title=bar/> +

+
+
+ +!! end + +!! test +Handling html with a br self-closing tag +!! input +
+
+
+
+
+
+!! result +


+
+
+
+
+
+

+!! end + +!! test +Horizontal ruler (should it add that extra space?) +!! input +
+
+foo
bar +!! result +
+
+foo
bar + +!! end + +!! test +Horizontal ruler -- 4+ dashes render hr +!! input +---- +!! result +
+ +!! end + +!! test +Horizontal ruler -- eats additional dashes on the same line +!! input +--------- +!! result +
+ +!! end + +!! test +Horizontal ruler -- does not collapse dashes on consecutive lines +!! input +---- +---- +!! result +
+
+ +!! end + +!! test +Horizontal ruler -- <4 dashes render as plain text +!! input +--- +!! result +

--- +

+!! end + +!! test +Horizontal ruler -- Supports content following dashes on same line +!! input +---- Foo +!! result +
Foo + +!! end + +### +### Block-level elements +### +!! test +Common list +!! input +*Common list +* item 2 +*item 3 +!! result +
    +
  • Common list +
  • +
  • item 2 +
  • +
  • item 3 +
  • +
+ +!! end + +!! test +Numbered list +!! input +#Numbered list +#item 2 +# item 3 +!! result +
    +
  1. Numbered list +
  2. +
  3. item 2 +
  4. +
  5. item 3 +
  6. +
+ +!! end + +!! test +Mixed list +!! input +*Mixed list +*# with numbers +** and bullets +*# and numbers +*bullets again +**bullet level 2 +***bullet level 3 +***#Number on level 4 +**bullet level 2 +**#Number on level 3 +**#Number on level 3 +*#number level 2 +*Level 1 +*** Level 3 +#** Level 3, but ordered +!! result +
    +
  • Mixed list +
      +
    1. with numbers +
    2. +
    +
      +
    • and bullets +
    • +
    +
      +
    1. and numbers +
    2. +
    +
  • +
  • bullets again +
      +
    • bullet level 2 +
        +
      • bullet level 3 +
          +
        1. Number on level 4 +
        2. +
        +
      • +
      +
    • +
    • bullet level 2 +
        +
      1. Number on level 3 +
      2. +
      3. Number on level 3 +
      4. +
      +
    • +
    +
      +
    1. number level 2 +
    2. +
    +
  • +
  • Level 1 +
      +
      • +
      • Level 3 +
      • +
      +
    • +
    +
  • +
+
    +
    • +
      • +
      • Level 3, but ordered +
      • +
      +
    • +
    +
  1. +
+ +!! end + +!! test +Nested lists 1 +!! input +*foo +**bar +!! result +
    +
  • foo +
      +
    • bar +
    • +
    +
  • +
+ +!! end + +!! test +Nested lists 2 +!! input +**foo +*bar +!! result +
    +
    • +
    • foo +
    • +
    +
  • +
  • bar +
  • +
+ +!! end + +!! test +Nested lists 3 (first element empty) +!! input +* +**bar +!! result +
    +
  • +
      +
    • bar +
    • +
    +
  • +
+ +!! end + +!! test +Nested lists 4 (first element empty) +!! input +** +*bar +!! result +
    +
    • +
    • +
    • +
    +
  • +
  • bar +
  • +
+ +!! end + +!! test +Nested lists 5 (both elements empty) +!! input +** +* +!! result +
    +
    • +
    • +
    • +
    +
  • +
  • +
  • +
+ +!! end + +!! test +Nested lists 6 (both elements empty) +!! input +* +** +!! result +
    +
  • +
      +
    • +
    • +
    +
  • +
+ +!! end + +!! test +Nested lists 7 (skip initial nesting levels) +!! input +*** foo +!! result +
    +
    • +
      • +
      • foo +
      • +
      +
    • +
    +
  • +
+ +!! end + +!! test +Nested lists 8 (multiple nesting transitions) +!! input +* foo +*** bar +** baz +* boo +!! result +
    +
  • foo +
      +
      • +
      • bar +
      • +
      +
    • +
    • baz +
    • +
    +
  • +
  • boo +
  • +
+ +!! end + +!! test +1. Lists with start-of-line-transparent tokens before bullets: Comments +!! input +*foo +*bar +*baz +!! result +
    +
  • foo +
  • +
  • bar +
  • +
  • baz +
  • +
+ +!! end + +!! test +2. Lists with start-of-line-transparent tokens before bullets: Template close +!! input +*foo {{echo|bar +}}*baz +!! result +
    +
  • foo bar +
  • +
  • baz +
  • +
+ +!! end + +!! test +List items are not parsed correctly following a
 block (bug 785)
+!! input
+* 
foo
+*
bar
+* zar +!! result +
    +
  • foo
    +
  • +
  • bar
    +
  • +
  • zar +
  • +
+ +!! end + +!! test +List items from template +!! input + +{{inner list}} +* item 2 + +* item 0 +{{inner list}} +* item 2 + +* item 0 +* notSOL{{inner list}} +* item 2 +!! result +
    +
  • item 1 +
  • +
  • item 2 +
  • +
+
    +
  • item 0 +
  • +
  • item 1 +
  • +
  • item 2 +
  • +
+
    +
  • item 0 +
  • +
  • notSOL +
  • +
  • item 1 +
  • +
  • item 2 +
  • +
+ +!! end + +!! test +List interrupted by empty line or heading +!! input +* foo + +** bar +== A heading == +* Another list item +!! result +
    +
  • foo +
  • +
+
    +
    • +
    • bar +
    • +
    +
  • +
+

A heading[edit]

+
    +
  • Another list item +
  • +
+ +!!end + +!!test +Multiple list tags generated by templates +!!input +{{echo|
  • }}a +{{echo|
  • }}b +{{echo|
  • }}c +!!result +
  • a +
  • b +
  • c
  • + + + +!!end + +!!test +Single-comment whitespace lines dont break lists, and neither do multi-comment whitespace lines +!!input +*a + +*b + +*c + +*d +!!result +
      +
    • a +
    • +
    • b +
    • +
    • c +
    • +
    • d +
    • +
    + +!!end + +!!test +Replacing whitespace with tabs still doesn't break the list (gerrit 78327) +!!input +*a + +*b + +*c + +*d +!!result +
      +
    • a +
    • +
    • b +
    • +
    • c +
    • +
    • d +
    • +
    + +!!end + +!!test +Test the li-hack +(Cannot test this with PHP parser since it relies on Tidy for the hack) +!!options +parsoid=wt2html,wt2wt +!!input +* foo +*
  • li-hack +* {{echo|
  • templated li-hack}} +*
  • unsupported li-hack with preceding comments + +
      +
    • not a li-hack +
    • +
    +!!result +
      +
    • foo
    • +
    • li-hack
    • +
    • templated li-hack
    • +
    • +
    • li-hack with preceding comments
    • +
    + +
      +
    • +
    • not a li-hack +
    • +
    +!!end + +!! test +Parsoid: Make sure nested lists are serialized on their own line even if HTML contains no newlines +!! options +parsoid +!! input +# foo +## bar +* foo +** bar +: foo +:: bar +!! result +
      +
    1. foo
        +
      1. bar
      2. +
    2. +
      +
    • foo
        +
      • bar
      • +
    • +
    +
    foo
    +
    bar
    +
    +
    +!! end + +!! test +Parsoid: Test of whitespace serialization with Templated bullets +!! options +parsoid +!! input +* {{bullet}} +!! result +
      +
    • Bar
    • +
    +!! end + +# ------------------------------------------------------------------------ +# The next set of tests are about Parsoid's ability to handle badly nested +# tags (parse, minimize scope of fixup, and roundtrip back) +# ------------------------------------------------------------------------ + +!! test +Unbalanced closing block tags break a list +(Parsoid-only since php parser generates broken html -- relies on Tidy to fix up) +!! options +parsoid +!! input +
    +*a
    +*b
    +!! result +
    +
      +
    • a +
    • +
    +
      +
    • b +
    • +
    +!! end + +!! test +Unbalanced closing non-block tags don't break a list +(Parsoid-only since php parser generates broken html -- relies on Tidy to fix up) +!! options +parsoid +!! input + +*a +*b +!! result +

    +

    +
      +
    • a +
    • +
    • b +
    • +
    +!! end + +!! test +Unclosed formatting tags that straddle lists are closed and reopened +(Parsoid-only since php parser generates broken html -- relies on Tidy to fix up) +!! options +parsoid +!! input +# a +# b +!! result +
      +
    1. a +
    2. +
    3. b +
    4. +
    +!! end + +!!test +List embedded in a non-block tag +(Ugly Parsoid output -- worth fixing; Disabled for PHP parser since it relies on Tidy) +!! options +parsoid +!!input + +* foo + +!!result +

    + +
      +
    • foo
    • +
    +
    +

    +!!end + +!! test +Table with missing opening tag +!! options +parsoid=wt2html,wt2wt +!! input + + + +
    foo
    +!! result + + + + +
    foo
    +!! end + +### +### Magic Words +### + +# Note that the current date is hard-coded as +# 1970-01-01T00:02:03Z (a Thursday) +# when running parser tests. The timezone is also fixed to GMT, so +# local date will be identical to current date. + +!! test +Magic Word: {{CURRENTDAY}} +!! input +{{CURRENTDAY}} +!! result +

    1 +

    +!! end + +!! test +Magic Word: {{CURRENTDAY2}} +!! input +{{CURRENTDAY2}} +!! result +

    01 +

    +!! end + +!! test +Magic Word: {{CURRENTDAYNAME}} +!! input +{{CURRENTDAYNAME}} +!! result +

    Thursday +

    +!! end + +!! test +Magic Word: {{CURRENTDOW}} +!! input +{{CURRENTDOW}} +!! result +

    4 +

    +!! end + +!! test +Magic Word: {{CURRENTMONTH}} +!! input +{{CURRENTMONTH}} +!! result +

    01 +

    +!! end + +!! test +Magic Word: {{CURRENTMONTH1}} +!! input +{{CURRENTMONTH1}} +!! result +

    1 +

    +!! end + +!! test +Magic Word: {{CURRENTMONTHABBREV}} +!! input +{{CURRENTMONTHABBREV}} +!! result +

    Jan +

    +!! end + +!! test +Magic Word: {{CURRENTMONTHNAME}} +!! input +{{CURRENTMONTHNAME}} +!! result +

    January +

    +!! end + +!! test +Magic Word: {{CURRENTMONTHNAMEGEN}} +!! input +{{CURRENTMONTHNAMEGEN}} +!! result +

    January +

    +!! end + +!! test +Magic Word: {{CURRENTTIME}} +!! input +{{CURRENTTIME}} +!! result +

    00:02 +

    +!! end + +!! test +Magic Word: {{CURRENTHOUR}} +!! input +{{CURRENTHOUR}} +!! result +

    00 +

    +!! end + +!! test +Magic Word: {{CURRENTWEEK}} (@bug 4594) +!! input +{{CURRENTWEEK}} +!! result +

    1 +

    +!! end + +!! test +Magic Word: {{CURRENTYEAR}} +!! input +{{CURRENTYEAR}} +!! result +

    1970 +

    +!! end + +!! test +Magic Word: {{CURRENTTIMESTAMP}} +!! input +{{CURRENTTIMESTAMP}} +!! result +

    19700101000203 +

    +!! end + +!! test +Magic Words LOCAL (UTC) +!! input +* {{LOCALMONTH}} +* {{LOCALMONTH1}} +* {{LOCALMONTHNAME}} +* {{LOCALMONTHNAMEGEN}} +* {{LOCALMONTHABBREV}} +* {{LOCALDAY}} +* {{LOCALDAY2}} +* {{LOCALDAYNAME}} +* {{LOCALYEAR}} +* {{LOCALTIME}} +* {{LOCALHOUR}} +* {{LOCALWEEK}} +* {{LOCALDOW}} +* {{LOCALTIMESTAMP}} +!! result +
      +
    • 01 +
    • +
    • 1 +
    • +
    • January +
    • +
    • January +
    • +
    • Jan +
    • +
    • 1 +
    • +
    • 01 +
    • +
    • Thursday +
    • +
    • 1970 +
    • +
    • 00:02 +
    • +
    • 00 +
    • +
    • 1 +
    • +
    • 4 +
    • +
    • 19700101000203 +
    • +
    + +!! end + +!! test +Magic Word: {{FULLPAGENAME}} +!! options +title=[[User:Ævar Arnfjörð Bjarmason]] +!! input +{{FULLPAGENAME}} +!! result +

    User:Ævar Arnfjörð Bjarmason +

    +!! end + +!! test +Magic Word: {{FULLPAGENAMEE}} +!! options +title=[[User:Ævar Arnfjörð Bjarmason]] +!! input +{{FULLPAGENAMEE}} +!! result +

    User:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason +

    +!! end + +!! test +Magic Word: {{TALKSPACE}} +!! options +title=[[User:Ævar Arnfjörð Bjarmason]] +!! input +{{TALKSPACE}} +!! result +

    User talk +

    +!! end + +!! test +Magic Word: {{TALKSPACE}}, same namespace +!! options +title=[[User talk:Ævar Arnfjörð Bjarmason]] +!! input +{{TALKSPACE}} +!! result +

    User talk +

    +!! end + +!! test +Magic Word: {{TALKSPACE}}, main namespace +!! options +title=[[Parser Test]] +!! input +{{TALKSPACE}} +!! result +

    Talk +

    +!! end + +!! test +Magic Word: {{TALKSPACEE}} +!! options +title=[[User:Ævar Arnfjörð Bjarmason]] +!! input +{{TALKSPACEE}} +!! result +

    User_talk +

    +!! end + +!! test +Magic Word: {{SUBJECTSPACE}} +!! options +title=[[User talk:Ævar Arnfjörð Bjarmason]] +!! input +{{SUBJECTSPACE}} +!! result +

    User +

    +!! end + +!! test +Magic Word: {{SUBJECTSPACE}}, same namespace +!! options +title=[[User:Ævar Arnfjörð Bjarmason]] +!! input +{{SUBJECTSPACE}} +!! result +

    User +

    +!! end + +!! test +Magic Word: {{SUBJECTSPACE}}, main namespace +!! options +title=[[Parser Test]] +!! input +{{SUBJECTSPACE}} +!! result + +!! end + +!! test +Magic Word: {{SUBJECTSPACEE}} +!! options +title=[[User talk:Ævar Arnfjörð Bjarmason]] +!! input +{{SUBJECTSPACEE}} +!! result +

    User +

    +!! end + +!! test +Magic Word: {{NAMESPACE}} +!! options +title=[[User:Ævar Arnfjörð Bjarmason]] +!! input +{{NAMESPACE}} +!! result +

    User +

    +!! end + +!! test +Magic Word: {{NAMESPACEE}} +!! options +title=[[User:Ævar Arnfjörð Bjarmason]] +!! input +{{NAMESPACEE}} +!! result +

    User +

    +!! end + +!! test +Magic Word: {{NAMESPACENUMBER}} +!! options +title=[[User:Ævar Arnfjörð Bjarmason]] +!! input +{{NAMESPACENUMBER}} +!! result +

    2 +

    +!! end + +!! test +Magic Word: {{SUBPAGENAME}} +!! options +title=[[Ævar Arnfjörð Bjarmason/sub ö]] subpage +!! input +{{SUBPAGENAME}} +!! result +

    sub ö +

    +!! end + +!! test +Magic Word: {{SUBPAGENAMEE}} +!! options +title=[[Ævar Arnfjörð Bjarmason/sub ö]] subpage +!! input +{{SUBPAGENAMEE}} +!! result +

    sub_%C3%B6 +

    +!! end + +!! test +Magic Word: {{ROOTPAGENAME}} +!! options +title=[[Ævar Arnfjörð Bjarmason/sub/sub2]] subpage +!! input +{{ROOTPAGENAME}} +!! result +

    Ævar Arnfjörð Bjarmason +

    +!! end + +!! test +Magic Word: {{ROOTPAGENAMEE}} +!! options +title=[[Ævar Arnfjörð Bjarmason/sub/sub2]] subpage +!! input +{{ROOTPAGENAMEE}} +!! result +

    %C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason +

    +!! end + +!! test +Magic Word: {{BASEPAGENAME}} +!! options +title=[[Ævar Arnfjörð Bjarmason/sub]] subpage +!! input +{{BASEPAGENAME}} +!! result +

    Ævar Arnfjörð Bjarmason +

    +!! end + +!! test +Magic Word: {{BASEPAGENAMEE}} +!! options +title=[[Ævar Arnfjörð Bjarmason/sub]] subpage +!! input +{{BASEPAGENAMEE}} +!! result +

    %C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason +

    +!! end + +!! test +Magic Word: {{TALKPAGENAME}} +!! options +title=[[User:Ævar Arnfjörð Bjarmason]] +!! input +{{TALKPAGENAME}} +!! result +

    User talk:Ævar Arnfjörð Bjarmason +

    +!! end + +!! test +Magic Word: {{TALKPAGENAMEE}} +!! options +title=[[User:Ævar Arnfjörð Bjarmason]] +!! input +{{TALKPAGENAMEE}} +!! result +

    User_talk:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason +

    +!! end + +!! test +Magic Word: {{SUBJECTPAGENAME}} +!! options +title=[[User talk:Ævar Arnfjörð Bjarmason]] +!! input +{{SUBJECTPAGENAME}} +!! result +

    User:Ævar Arnfjörð Bjarmason +

    +!! end + +!! test +Magic Word: {{SUBJECTPAGENAMEE}} +!! options +title=[[User talk:Ævar Arnfjörð Bjarmason]] +!! input +{{SUBJECTPAGENAMEE}} +!! result +

    User:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason +

    +!! end + +!! test +Magic Word: {{NUMBEROFFILES}} +!! input +{{NUMBEROFFILES}} +!! result +

    4 +

    +!! 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}} +!! result +

    1337 +

    +!! end + +!! test +Magic Word: {{SCRIPTPATH}} +!! input +{{SCRIPTPATH}} +!! result +

    / +

    +!! end + +!! test +Magic Word: {{STYLEPATH}} +!! input +{{STYLEPATH}} +!! result +

    /skins +

    +!! end + +!! test +Magic Word: {{SERVER}} +!! input +{{SERVER}} +!! result +

    http://example.org +

    +!! end + +!! test +Magic Word: {{SERVERNAME}} +!! input +{{SERVERNAME}} +!! result +

    example.org +

    +!! end + +!! test +Magic Word: {{SITENAME}} +!! input +{{SITENAME}} +!! result +

    MediaWiki +

    +!! end + +!! test +Case-sensitive magic words, when cased differently, should just be template transclusions +!! input +{{CurrentMonth}} +{{currentday}} +{{cURreNTweEK}} +{{currentHour}} +!! result +

    Template:CurrentMonth +Template:Currentday +Template:CURreNTweEK +Template:CurrentHour +

    +!! end + +!! test +Case-insensitive magic words should still work with weird casing. +!! input +{{sErVeRNaMe}} +{{LCFirst:AOEU}} +{{ucFIRST:aoeu}} +{{SERver}} +!! result +

    example.org +aOEU +Aoeu +http://example.org +

    +!! end + +!! test +Namespace 1 {{ns:1}} +!! input +{{ns:1}} +!! result +

    Talk +

    +!! end + +!! test +Namespace 1 {{ns:01}} +!! input +{{ns:01}} +!! result +

    Talk +

    +!! 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}} +!! result +

    Special +

    +!! end + +!! test +Namespace User {{ns:User}} +!! input +{{ns:User}} +!! result +

    User +

    +!! end + +!! test +Namespace User talk {{ns:User_talk}} +!! input +{{ns:User_talk}} +!! result +

    User talk +

    +!! end + +!! test +Namespace User talk {{ns:uSeR tAlK}} +!! input +{{ns:uSeR tAlK}} +!! result +

    User talk +

    +!! end + +!! test +Namespace File {{ns:File}} +!! input +{{ns:File}} +!! result +

    File +

    +!! end + +!! test +Namespace File {{ns:Image}} +!! input +{{ns:Image}} +!! result +

    File +

    +!! end + +!! test +Namespace (lang=de) Benutzer {{ns:User}} +!! options +language=de +!! input +{{ns:User}} +!! result +

    Benutzer +

    +!! end + +!! test +Namespace (lang=de) Benutzer Diskussion {{ns:3}} +!! options +language=de +!! input +{{ns:3}} +!! result +

    Benutzer Diskussion +

    +!! end + + +!! test +Urlencode +!! input +{{urlencode:hi world?!}} +{{urlencode:hi world?!|WIKI}} +{{urlencode:hi world?!|PATH}} +{{urlencode:hi world?!|QUERY}} +!! result +

    hi+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 +

    RFC 123 +

    +!! end + +!! test +Magic links: RFC (bug 479) +!! input +RFC 822 +!! result +

    RFC 822 +

    +!! end + +!! test +Magic links: ISBN (bug 1937) +!! input +ISBN 0-306-40615-2 +!! result +

    ISBN 0-306-40615-2 +

    +!! end + +!! test +Magic links: PMID incorrectly converts space to underscore +!! input +PMID 1234 +!! result +

    PMID 1234 +

    +!! end + +### +### Templates +#### + +!! test +Nonexistent template +!! input +{{thistemplatedoesnotexist}} +!! result +

    Template: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}} +!! result +

    This is a test template +

    +!! end + +!! test +Template with explicit namespace +!! input +{{Template:test}} +!! result +

    This 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}} +!! result +

    This 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 +

    the main page +

    +!! 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}} +!! result +

    templ +

    +!! 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 }}}} +!! result +

    This 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]]}} +!! result +

    link 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}}}]] +
    + +!! end + +!! test +Magic variable as template parameter +!! input +{{paramtest|param={{SITENAME}}}} +!! result +

    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 +

    link +

    +!! end + +!!test +Template-generated attribute string (k='v') +!!input +bar +!!result +

    bar +

    +!!end + +!!article +Template:paramtest2 +!! text +including another template, {{paramtest|param={{{arg}}}}} +!! endarticle + +!! test +Template passing argument to another template +!! input +{{paramtest2|arg='hmm'}} +!! result +

    including 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 +!! result +

    Main Page +

    Main Page +

    Main PagePage +

    +!! end + + +!! article +Template:loop1 +!! text +{{loop2}} +!! endarticle + +!! article +Template:loop2 +!! text +{{loop1}} +!! endarticle + +!! test +Template infinite loop +!! input +{{loop1}} +!! result +

    Template loop detected: Template:Loop1 +

    +!! end + +!! test +Template from main namespace +!! input +{{:Main Page}} +!! result +

    blah 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}} +!! result +

    foo +

    + + + + + + +
    1 2 +
    3 4 +
    + +!! end + +!! test +BUG 523: Template shouldn't eat newline (or add an extra one before table) +!! input +foo +{{table}} +!! result +

    foo +

    + + + + + + +
    1 2 +
    3 4 +
    + +!! end + +!! test +BUG 41: Template parameters shown as broken links +!! input +{{{parameter}}} +!! result +

    {{{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!}} +!! result +

    You have lots of money (not!). +

    +!! end + +!! article +Template:Includes +!! text +Foozarbar +!! endarticle + +!! test + and being included +!! input +{{Includes}} +!! result +

    Foobar +

    +!! end + +!! article +Template:Includes2 +!! text +Foobar +!! endarticle + +!! test + being included +!! input +{{Includes2}} +!! result +

    Foo +

    +!! end + + +!! article +Template:Includes3 +!! text +Foobarzar +!! endarticle + +!! test + and being included +!! input +{{Includes3}} +!! result +

    Foo +

    +!! end + +!! test + and on a page +!! input +Foozarbar +!! result +

    Foozar +

    +!! end + +!! test +Un-closed +!! input + +!! result +!! end + +!! test + on a page +!! input +Foobar +!! result +

    Foobar +

    +!! end + +!! test +Un-closed +!! input + +!! result +!! end + +!!test +Self-closed noinclude, includeonly, onlyinclude tags +!!input + + + +!!result +


    +

    +!!end + +!!test +Unbalanced includeonly and noinclude tags +!!input +{| +|a
    +|b
    +|c
    +|d
    +|} +!!result + + + + + +
    a +b +c</includeonly> +d</includeonly></includeonly> +
    + +!!end + +!! article +Template:Includeonly section +!! text + +==Includeonly section== + +==Section T-1== +!!endarticle + +!! test +Bug 6563: Edit link generation for section shown by +!! input +{{includeonly section}} +!! result +

    Includeonly section[edit]

    +

    Section T-1[edit]

    + +!! end + +# Uses same input as the contents of [[Template:Includeonly section]] +!! test +Bug 6563: Section extraction for section shown by +!! options +section=T-2 +!! input + +==Includeonly section== + +==Section T-2== +!! result +==Section T-2== +!! end + +!! test +Bug 6563: Edit link generation for section suppressed by +!! input + +==Includeonly section== + +==Section 1== +!! result +

    Section 1[edit]

    + +!! end + +!! test +Bug 6563: Section extraction for section suppressed by +!! options +section=1 +!! input + +==Includeonly section== + +==Section 1== +!! result +==Section 1== +!! end + +!! test +Un-closed +!! input + +!! result +!! end + +# TODO: test with DOM fragment reuse! +!! test +Parsoid: DOM fragment reuse +!! options +parsoid=wt2wt,wt2html +!! input +a{{echo|b
    c}}d + +a{{echo|b +
    +c}}d + +{{echo|a + +
    + +b}} +!! result +ab +
    cd + + +

    ab

    + +
    + +

    cd

    + + +

    a

    + + +
    + + +

    b

    +!! end + +!! test +Parsoid: Merge double tds (bug 50603) +!! options +parsoid +!! input +{| +|{{echo|{{!}} foo}} +|} +!! result + + +
    foo
    +!! end + +!! test +Parsoid: Merge double tds in nested transclusion content (bug 50603) +!! options +parsoid +!! input +{{echo|
    }} +{| +|{{echo|{{!}} foo}} +|} +{{echo|
    }} +!! result +
    + + +
    foo
    +
    +!! end + +### +### and in attributes +### +!!test +0. includeonly around the entire attribute +!!input +id="v1"id="v2">bar +!!result +

    bar +

    +!!end + +!!test +1. includeonly in html attr key +!!input +idabout="foo">bar +!!result +

    bar +

    +!!end + +!!test +2. includeonly in html attr value +!!input +bar +"v1""v2">bar +!!result +

    bar +bar +

    +!!end + +!!test +3. includeonly in part of an attr value +!!input +bar +!!result +

    bar +

    +!!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}} +!!result +

    foo +

    +!!end + +!!test +Templates: Template Name/Arg clash: 2. Use of named param +!!input +{{quote|quote=foo}} +!!result +

    foo +

    +!!end + +!!test +Templates: Template Name/Arg clash: 3. Use of named param with empty input +!!input +{{quote|quote}} +!!result +

    quote +

    +!!end + +### +### Parsoid-centric tests to stress Parsoid's ability to RT them unchanged +### + +!!test +Templates: 1. Simple use +!!input +{{echo|Foo}} +!!result +

    Foo +

    +!!end + +!!test +Templates: 2. Inside a block tag +!!input +
    {{echo|Foo}}
    +
    {{echo|Foo}}
    +!!result +
    Foo
    +
    Foo
    + +!!end + +!!test +Templates: P-wrapping: 1a. Templates on consecutive lines +!!input +{{echo|Foo}} +{{echo|bar}} +!!result +

    Foo +bar +

    +!!end + +!!test +Templates: P-wrapping: 1b. Templates on consecutive lines +!!input +Foo + +{{echo|bar}} +{{echo|baz}} +!!result +

    Foo +

    bar +baz +

    +!!end + +!!test +Templates: P-wrapping: 1c. Templates on consecutive lines +!!input +{{echo|Foo}} +{{echo|bar}}
    baz
    +!!result +

    Foo +

    +bar
    baz
    + +!!end + +!!test +Templates: P-wrapping: 1d. Template preceded by comment-only line +!!options +parsoid +!!input + +{{echo|Bar}} +!!result + + +

    Bar

    +!!end + +!!test +Templates: Inline Text: 1. Multiple tmeplate uses +!!input +{{echo|Foo}}bar{{echo|baz}} +!!result +

    Foobarbaz +

    +!!end + +!!test +Templates: Inline Text: 2. Back-to-back template uses +!!input +{{echo|Foo}}{{echo|bar}} +!!result +

    Foobar +

    +!!end + +!!test +Templates: Block Tags: 1. Multiple template uses +!!input +{{echo|
    Foo
    }}
    bar
    {{echo|
    baz
    }} +!!result +
    Foo
    bar
    baz
    + +!!end + +!!test +Templates: Block Tags: 2. Back-to-back template uses +!!input +{{echo|
    Foo
    }}{{echo|
    bar
    }} +!!result +
    Foo
    bar
    + +!!end + +!!test +Templates: Links: 1. Simple example +!!input +{{echo|[[Foo|bar]]}} +!!result +

    bar +

    +!!end + +!!test +Templates: Links: 2. Generation of link href +!!input +[[{{echo|Foo}}|bar]] +!!result +

    bar +

    +!!end + +!!test +Templates: Links: 3. Generation of part of a link href +!!input +[[Fo{{echo|o}}|bar]] + +[[Foo{{echo|bar}}]] + +[[Foo{{echo|bar}}baz]] + +[[Foo{{echo|bar}}|bar]] + +[[:Foo{{echo|bar}}]] + +[[:Foo{{echo|bar}}|bar]] +!!result +

    bar +

    Foobar +

    Foobarbaz +

    bar +

    Foobar +

    bar +

    +!!end + +!!test +Templates: Links: 4. Multiple templates generating link href +!!input +[[{{echo|F}}{{echo|o}}ob{{echo|ar}}]] +!!result +

    Foobar +

    +!!end + +!!test +Templates: Links: 5. Generation of link text +!!input +[[Foo|{{echo|bar}}]] +!!result +

    bar +

    +!!end + +!!test +Templates: Links: 5. Nested templates (only outermost template should be marked) +!!input +{{echo|[[{{echo|Foo}}|bar]]}} +!!result +

    bar +

    +!!end + +!!test +Templates: HTML Tag: 1. Generation of HTML attr. key +!!input +
    foo
    +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tag: 2. Generation of HTML attr. value +!!input +
    foo
    +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tag: 3. Generation of HTML attr key and value +!!input +
    foo
    +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tag: 4. Generation of starting piece of HTML attr value +!!input +
    foo
    +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tag: 5. Generation of middle piece of HTML attr value +!!input +
    foo
    +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tag: 6. Generation of end piece of HTML attr value +!!input +
    foo
    +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tag: 7. Generation of partial attribute key string +!!input +
    foo
    +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tables: 1. Generating start of a HTML table +!!input +{{echo|}}
    foo
    +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tables: 2a. Generating middle of a HTML table +!!input +{{echo|}}
    foo
    +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tables: 2b. Generating middle of a HTML table +!!input +{{echo|}}
    foo
    +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tables: 3. Generating end of a HTML table +!!input +{{echo|
    foo
    }} +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tables: 4a. Generating a single tag of a HTML table +!!input +{{echo|}}
    foo
    +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tables: 4b. Generating a single tag of a HTML table +!!input +{{echo|}}
    foo
    +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tables: 4c. Generating a single tag of a HTML table +!!input +{{echo|
    }}foo
    +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tables: 4d. Generating a single tag of a HTML table +!!input +}}
    foo{{echo|
    +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tables: 4e. Generating a single tag of a HTML table +!!input +{{echo|}}
    foo
    +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tables: 4f. Generating a single tag of a HTML table +!!input +{{echo|
    foo
    }} +!!result +
    foo
    + +!!end + +!!test +Templates: HTML Tables: 5. Proper fostering of categories from inside +!!options +parsoid=wt2html,wt2wt +!!input +[[Category:foo1]]
    foo
    + +[[Category:bar1]][[Category:bar2]]
    foo
    +!!result +
    foo
    + +
    foo
    +!!end + +!!test +Templates: Wiki Tables: 1a. Fostering of entire template content +!!input +{| +{{echo|a}} +|} +!!result + +a +
    + +!!end + +!!test +Templates: Wiki Tables: 1b. Fostering of entire template content +!!input +{| +{{echo|
    }} +foo +{{echo|
    }} +|} +!!result + +
    +

    foo +

    +
    +
    + +!!end + +!!test +Templates: Wiki Tables: 2. Fostering of partial template content +!!input +{| +{{echo|a +
    b
    }} +|} +!!result + +a +
    b
    +
    + +!!end + +!!test +Templates: Wiki Tables: 3. td-content via multiple templates +!!input +{| +{{echo|{{pipe}}a}}{{echo|b}} +|} +!!result + + +
    ab +
    + +!!end + +!!test +Templates: Wiki Tables: 4. Templated tags, no content +!!input +{{tbl-start}} +{{tbl-end}} +!!result + +
    + +!!end + +!!test +Templates: Wiki Tables: 5. Templated tags, regular td-tags +!!input +{{tbl-start}} +|foo +{{tbl-end}} +!!result + + +
    foo +
    + +!!end + +!!test +Templates: Wiki Tables: 6. Templated tags, templated td-tags +!!input +{{tbl-start}} +{{!}}foo +{{tbl-end}} +!!result + + +
    foo +
    + +!!end + +!!test +Templates: Lists: Multi-line list-items via templates +!!input +*{{echo|a {{nonexistent| +unused}}}} +*{{echo|b {{nonexistent| +unused}}}} +!!result + + +!!end + +!!test +Templates: Ugly nesting: 1. Quotes opened/closed across templates (echo) +!!input +{{echo|''a}}{{echo|b''c''d}}{{echo|''e}} +!!result +

    abcde +

    +!!end + +!!test +Templates: Ugly nesting: 2. Quotes opened/closed across templates (echo_with_span) +(PHP parser generates misnested html) +!! options +parsoid +!!input +{{echo_with_span|''a}}{{echo_with_span|b''c''d}}{{echo_with_span|''e}} +!!result +

    abcde

    +!!end + +!!test +Templates: Ugly nesting: 3. Quotes opened/closed across templates (echo_with_div) +(PHP parser generates misnested html; Parsoid html2wt mode adds newlines between {{echo}}s) +!! options +parsoid=wt2html,wt2wt +!!input +{{echo_with_div|''a}}{{echo_with_div|b''c''d}}{{echo_with_div|''e}} +!!result +
    a
    +
    bcd
    +
    e
    +!!end + +!!test +Templates: Ugly nesting: 4. Divs opened/closed across templates +!!input +a
    b{{echo|c
    d}}e +!!result +a
    bc
    de + +!!end + +!!test +Templates: Ugly templates: 1. Navbox template parses badly leading to table misnesting +(Parsoid-centric) +!! options +parsoid +!!input +{| +|{{echo|foo}} +|bar +|} +!!result + + + + +
    foo
    +bar + +!!end + +!!test +Templates: Ugly templates: 2. Navbox template parses badly leading to table misnesting +(Parsoid-centric) +!! options +parsoid +!!input + + + + +
    + + +
    1. {{echo|foo
    }}
    bar 2. {{echo|baz
    }} + + + abc + + + + + + xyz + + +!!result + + + + +
    + + +
    1. foo
    bar 2. baz
    + + + abc + + + + + + xyz + + +!!end + +!! test +Templates: Ugly templates: 3. newline-only template parameter +!! input +foo {{echo| +}} +!! result +

    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 +


    +

    +!! end + + +!!test +Parser Functions: 1. Simple example +!!input +{{uc:foo}} +!!result +

    FOO +

    +!!end + +!!test +Parser Functions: 2. Nested use (only outermost should be marked up) +!!input +{{uc:{{lc:FOO}}}} +!!result +

    FOO +

    +!!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 +!! text +'''not wiki''' +!! endarticle + +!! test +pre-save transform: nowiki in subst (bug 1188) +!! options +pst +!! input +{{subst:nowikitest}} +!! result +'''not wiki''' +!! end + + +!! article +Template:commenttest +!! text +This template has in it. +!! endarticle + +!! test +pre-save transform: comment in subst (bug 1936) +!! options +pst +!! input +{{subst:commenttest}} +!! result +This template has in it. +!! end + +!! test +pre-save transform: unclosed tag +!! options +pst noxml +!! input +'''not wiki''' +!! result +'''not wiki''' +!! end + +!! test +pre-save transform: mixed tag case +!! options +pst noxml +!! input +'''not wiki''' +!! result +'''not wiki''' +!! end + +!! test +pre-save transform: unclosed comment in +!! options +pst noxml +!! input +wikinowiki +!!result + +!!end + +!! test +pre-save transform: comment containing extension +!! options +pst +!! input + +!!result + +!!end + +!! test +pre-save transform: comment containing nowiki +!! options +pst +!! input + +!!result + +!!end + +!! test +pre-save transform: in subst (bug 3298) +!! options +pst +!! input +{{subst:Includes}} +!! result +Foobar +!! end + +!! test +pre-save transform: in subst (bug 3298) +!! options +pst +!! input +{{subst:Includes2}} +!! result +Foo +!! end + +!! article +Template:SubstTest +!!text +{{subst:Includes}} +!! endarticle + +!! article +Template:SafeSubstTest +!! text +{{safesubst:Includes}} +!! endarticle + +!! test +bug 22297: safesubst: works during PST +!! options +pst +!! input +{{subst:SafeSubstTest}}{{safesubst:SubstTest}} +!! result +FoobarFoobar +!! end + +!! test +bug 22297: safesubst: works during normal parse +!! input +{{SafeSubstTest}} +!! result +

    Foobar +

    +!! 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 +* ~~~ +* ~~~ +* ~~~ +* ~~~ +!! result +* [[Special:Contributions/127.0.0.1|127.0.0.1]] +* [[Special:Contributions/127.0.0.1|127.0.0.1]] +* [[Special:Contributions/127.0.0.1|127.0.0.1]] +* [[Special:Contributions/127.0.0.1|127.0.0.1]] +!! end + + +!! test +pre-save transform: Signature expansion in nowiki tags (bug 93) +!! options +pst disabled +!! input +Shall not expand: + +~~~~ + +~~~~ + +~~~~ + +~~~~ + +{{subst:Foo}} shall be converted to FOO + +As well as inside noinclude/onlyinclude +{{subst:Foo}} +{{subst:Foo}} + +But not inside includeonly +{{subst:Foo}} +!! result +Shall not expand: + +~~~~ + +~~~~ + +~~~~ + +~~~~ + +FOO shall be converted to FOO + +As well as inside noinclude/onlyinclude +FOO +FOO + +But not inside includeonly +{{subst:Foo}} +!! end + +!! test +Parsoid: Recognize nowiki with trailing space in tags +!! options +parsoid=wt2html +!! input +
    [[foo]] + +ab + +cd + +ef +!! result +

    <div>[[foo]]

    +

    ab

    +

    cd

    +

    ef

    +!! end + +!! test +Parsoid: Recognize nowiki with odd capitalization +!! options +parsoid=wt2html +!! input +
    [[foo]] +!! result +

    <div>[[foo]]

    +!! end + + +!! test +Parsoid: Escape nowiki with trailing space in tags +!! options +parsoid=html2wt +!! input +<nowiki > foo </nowiki > + +a<nowiki />b + +c<nowiki/ >d +!! result +

    <nowiki > foo </nowiki >

    +

    a<nowiki />b

    +

    c<nowiki/ >d

    +!! end + +!! test +Parsoid: Escape weird noWikI capitalizations +!! options +parsoid=html2wt +!! input +<noWikI > foo </NoWikI > +!! result +

    <noWikI > foo </NoWikI >

    +!! end + +### +### Message transform tests +### +!! test +message transform: magic variables +!! options +msg +!! input +{{SITENAME}} +!! result +MediaWiki +!! end + +!! test +message transform: should not transform wiki markup +!! options +msg +!! input +''test'' +!! result +''test'' +!! end + +!! test +message transform: in transcluded template (bug 4926) +!! options +msg +!! input +{{Includes}} +!! result +Foobar +!! end + +!! test +message transform: in transcluded template (bug 4926) +!! options +msg +!! input +{{Includes2}} +!! result +Foo +!! end + +!! test +{{#special:}} page name, known +!! options +msg +!! input +{{#special:Recentchanges}} +!! result +Special:RecentChanges +!! end + +!! test +{{#special:}} page name with subpage, known +!! options +msg +!! input +{{#special:Recentchanges/param}} +!! result +Special:RecentChanges/param +!! end + +!! test +{{#special:}} page name, unknown +!! options +msg +!! input +{{#special:foobar nonexistent}} +!! result +Special:Foobar nonexistent +!! end + +!! test +{{#speciale:}} page name, known +!! options +msg +!! input +{{#speciale:Recentchanges}} +!! result +Special:RecentChanges +!! end + +!! test +{{#speciale:}} page name with subpage, known +!! options +msg +!! input +{{#speciale:Recentchanges/param}} +!! result +Special:RecentChanges/param +!! end + +!! test +{{#speciale:}} page name, unknown +!! options +msg +!! input +{{#speciale:foobar nonexistent}} +!! result +Special:Foobar_nonexistent +!! end + +### +### Images +### +### For Parsoid-specific tests, see +#### http://www.mediawiki.org/wiki/Parsoid/MediaWiki_DOM_spec#Images + +!! test +Simple image (php) +!! options +php +!! input +[[Image:foobar.jpg]] +!! result +

    Foobar.jpg +

    +!! end + +!! test +Simple image (parsoid) +!! options +parsoid=wt2html +!! input +[[Image:foobar.jpg]] +!! result +

    +

    +!! end + +!! test +Simple image (using File: namespace, now canonical) (php) +!! options +php +!! input +[[File:foobar.jpg]] +!! result +

    Foobar.jpg +

    +!! end + +!! test +Simple image (using File: namespace, now canonical) (parsoid) +!! options +parsoid +!! input +[[File:Foobar.jpg]] +!! result +

    +

    +!! end + +!! test +Right-aligned image (php) +!! options +php +!! input +[[Image:foobar.jpg|right]] +!! result +
    Foobar.jpg
    + +!! end + +!! test +Right-aligned image (parsoid) +!! options +parsoid +!! input +[[File:Foobar.jpg|right]] +!! result +
    +!! end + +!! test +Image with caption (php) +!! options +php +!! input +[[File:Foobar.jpg|right|Caption text]] +!! result +
    Caption text
    + +!! end + +!! test +Image with caption (parsoid) +!! options +parsoid +!! input +[[File:Foobar.jpg|right|Caption text]] +!! result +
    Caption text
    +!! end + +!! test +Image with empty attribute (php) +!! options +php +!! input +[[File:Foobar.jpg|right||Caption text]] +!! result +
    Caption text
    + +!! end + +!! test +Image with empty attribute (parsoid) +!! options +parsoid=wt2html +!! input +[[File:Foobar.jpg|right||Caption text]] +!! result +
    Caption text
    +!! end + +!! test +Image with attributes from template (php) +!! options +php +!! input +[[File:Foobar.jpg|{{image_attribs}}]] +!! result +
    Caption text
    + +!! end + +!! test +Image with attributes from template (parsoid) +!! options +parsoid +!! input +[[File:Foobar.jpg|{{image_attribs}}]] +!! result +
    Caption text
    +!! end + +!! test +Image with link tails (php) +!! options +php +!! input +123[[File:Foobar.jpg]]456 +123[[File:Foobar.jpg|right]]456 +123[[File:Foobar.jpg|thumb]]456 +!! result +

    123Foobar.jpg456 +

    +123
    Foobar.jpg
    456 +123
    Foobar.jpg
    456 + +!! end + +!! test +Image with link tails (parsoid) +!! options +parsoid +!! input +123[[File:Foobar.jpg]]456 +123[[File:Foobar.jpg|right]]456 +123[[File:Foobar.jpg|thumb]]456 +!! result +

    123456

    +123
    456 +123
    456 +!! end + +!! test +Image with multiple captions -- only last one is accepted (php) +!! options +php +!! input +[[File:Foobar.jpg|right|Caption1 - ignored|[[Caption2]] - ignored|Caption3 - accepted]] +!! result +
    Caption3 - accepted
    + +!! end + +!! test +Image with multiple captions -- only last one is accepted (parsoid) +!! options +parsoid +!! input +[[File:Foobar.jpg|right|Caption1 - ignored|[[Caption2]] - ignored|Caption3 - accepted]] +!! result +
    Caption3 - accepted
    +!! end + +!! test +Image with width attribute at different positions (php) +!! options +php +!! input +[[File:Foobar.jpg|200px|right|Caption]] +[[File:Foobar.jpg|right|200px|Caption]] +[[File:Foobar.jpg|right|Caption|200px]] +!! result +
    Caption
    +
    Caption
    +
    Caption
    + +!! end + +!! test +Image with width attribute at different positions (parsoid) +!! options +parsoid +!! input +[[File:Foobar.jpg|200px|right|Caption]] +[[File:Foobar.jpg|right|200px|Caption]] +[[File:Foobar.jpg|right|Caption|200px]] +!! result +
    Caption
    +
    Caption
    +
    Caption
    +!! end + +!! test +Image with link parameter, wiki target (php) +!! options +php +!! input +[[File:Foobar.jpg|link=Main Page]] +!! result +

    Foobar.jpg +

    +!! end + +!! test +Image with link parameter, wiki target (parsoid) +!! options +parsoid +!! input +[[File:Foobar.jpg|link=Main Page]] +!! result +

    +!! end + +!! test +Image with link parameter, URL target (php) +!! options +php +!! input +[[File:Foobar.jpg|link=http://example.com/]] +!! result +

    Foobar.jpg +

    +!! end + +# parsoid bug 49293 (part 1) +!! test +Image with link parameter, URL target (parsoid) +!! options +parsoid +!! input +[[File:Foobar.jpg|link=http://example.com/]] +!! result +

    +!! end + +!! test +Image with link parameter, protocol-less URL target (php) +!! options +php +!! input +[[File:Foobar.jpg|link=//example.com/]] +!! result +

    Foobar.jpg +

    +!! end + +# parsoid bug 49293 (part 2) +!! test +Image with link parameter, protocol-less URL target (parsoid) +!! options +parsoid +!! input +[[File:Foobar.jpg|link=//example.com/]] +!! result +

    +!! end + +!! test +Image with link parameter, wgExternalLinkTarget +!! input +[[Image:foobar.jpg|link=http://example.com/]] +!! config +wgExternalLinkTarget='foobar' +!! result +

    Foobar.jpg +

    +!! end + +!! test +Image with link parameter, wgNoFollowLinks set to false +!! input +[[Image:foobar.jpg|link=http://example.com/]] +!! config +wgNoFollowLinks=false +!! result +

    Foobar.jpg +

    +!! end + +!! test +Image with link parameter, wgNoFollowDomainExceptions +!! input +[[Image:foobar.jpg|link=http://example.com/]] +!! config +wgNoFollowDomainExceptions='example.com' +!! result +

    Foobar.jpg +

    +!! end + +!! test +Image with link parameter, wgExternalLinkTarget, unnamed parameter +!! input +[[Image:foobar.jpg|link=http://example.com/|Title]] +!! config +wgExternalLinkTarget='foobar' +!! result +

    Title +

    +!! end + +!! test +Image with empty link parameter (php) +!! options +php +!! input +[[File:Foobar.jpg|link=]] +!! result +

    Foobar.jpg +

    +!! end + +!! test +Image with empty link parameter (parsoid) +!! options +parsoid +!! input +[[File:Foobar.jpg|link=]] +!! result +

    +!! end + +!! test +Image with link parameter (wiki target) and unnamed parameter (php) +!! options +php +!! input +[[File:Foobar.jpg|link=Main Page|Title]] +!! result +

    Title +

    +!! end + +!! test +Image with link parameter (wiki target) and unnamed parameter (parsoid) +!! options +parsoid +!! input +[[File:Foobar.jpg|link=Main Page|Title]] +!! result +

    +!! end + +!! test +Image with link parameter (URL target) and unnamed parameter (php) +!! options +php +!! input +[[File:Foobar.jpg|link=http://example.com/|Title]] +!! result +

    Title +

    +!! end + +!! test +Image with link parameter (URL target) and unnamed parameter (parsoid) +!! options +parsoid +!! input +[[File:Foobar.jpg|link=http://example.com/|Title]] +!! result +

    +!! end + +!! test +Thumbnail image with link parameter +!! options +php +!! input +[[Image:foobar.jpg|thumb|link=http://example.com/|Title]] +!! result +
    Title
    + +!! end + +!! test +Manually-specified thumbnail image +!! options +php +!! input +[[Image:Foobar.jpg|thumb=Thumb.png|Title]] +!! result +
    Title
    + +!! end + +!! test +Manually-specified thumbnail image with explicit link to wiki page +!! options +php +!! input +[[Image:Foobar.jpg|thumb=Thumb.png|link=Main Page|Title]] +!! result +
    Title
    + +!! end + +!! test +Manually-specified thumbnail image with explicit link to url +!! options +php +!! input +[[Image:Foobar.jpg|thumb=Thumb.png|link=http://example.com|Title]] +!! result +
    Title
    + +!! end + +!! test +Manually-specified thumbnail image with explicit no link +!! options +php +!! input +[[Image:Foobar.jpg|thumb=Thumb.png|link=|Title]] +!! result +
    Title
    + +!! end + +!! test +Manually-specified thumbnail image with explicit link and alt text +!! options +php +!! input +[[Image:Foobar.jpg|thumb=Thumb.png|link=Main Page|alt=alttext|Title]] +!! result +
    alttext
    Title
    + +!! end + +!! test +Image with frame and link +!! input +[[Image:Foobar.jpg|frame|left|This is a test image [[Main Page]]]] +!! result +
    This is a test image Main Page
    + +!! 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 +
    Altitude
    This is a test image Main Page
    + +!! end + +!! test +Image with wiki markup in implicit alt +!! input +[[Image:Foobar.jpg|testing '''bold''' in alt]] +!! result +

    testing bold in alt +

    +!! end + +!! test +Image with wiki markup in explicit alt +!! input +[[Image:Foobar.jpg|alt=testing '''bold''' in alt]] +!! result +

    testing bold in alt +

    +!! 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 +

    Image:test +

    +!! end + +!! test +bug 18784 Link to non-existent image page with caption should use caption as link text +!! input +[[:Image:test|caption]] +!! result +

    caption +

    +!! end + +!! test +Frameless image caption with a free URL +!! input +[[Image:foobar.jpg|http://example.com]] +!! result +

    http://example.com +

    +!! 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 +SVG thumbnails with no language set +!! options +!! input +[[File:Foobar.svg|thumb|width=200]] +!! result +
    width=200
    + +!! end + +!! test +SVG thumbnails with language de +!! options +!! input +[[File:Foobar.svg|thumb|width=200|lang=de]] +!! result +
    width=200
    + +!! end + +!! test +SVG thumbnails with invalid language code +!! options +!! input +[[File:Foobar.svg|thumb|width=200|lang=invalid.language.code]] +!! result +
    lang=invalid.language.code
    + +!! 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 +
    This is RFC 12354
    + +!! 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 +

    text with a link in it +

    +!! end + +!! test +BUG 648: Frameless image caption with a link (suffix) +!! input +[[Image:foobar.jpg|text with a [[link]]foo in it]] +!! result +

    text with a linkfoo in it +

    +!! end + +!! test +BUG 648: Frameless image caption with an interwiki link +!! input +[[Image:foobar.jpg|text with a [[MeatBall:Link]] in it]] +!! result +

    text with a MeatBall:Link in it +

    +!! 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 +

    text with a link in it +

    +!! 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 +
    This is a caption with another image inside it!
    + +!! end + +!! test +Image caption containing a newline +!! input +[[Image:Foobar.jpg|This +*is some text]] +!! result +

    This *is some text +

    +!!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 +
    bar
    + +!!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 +
    This caption has irc and Secure ext links in it.
    + +!! end + +!! test +Custom class +!! input +[[Image:foobar.jpg|a|class=b]] +!! result +

    a +

    +!! end + +!! test +Localized image handling (1). +!! options +language=es +!! input +[[Archivo:Foobar.jpg|izquierda|enlace=foo|caption]] +!! result +
    caption
    + +!! end + +!! test +Localized image handling (2). +!! options +language=es +!! input +[[Archivo:Foobar.jpg|miniatura|izquierda|enlace=foo|caption]] +!! result +
    caption
    + +!! end + +!! test +"border", "frameless" and "class" attributes on an image. +!! input +[[File:Foobar.jpg|frameless|border|class=extra|caption]] +!! result +

    caption +

    +!! end + +!! article +File:Barfoo.jpg +!! text +#REDIRECT [[File:Barfoo.jpg]] +!! endarticle + +!! test +Redirected image +!! input +[[Image:Barfoo.jpg]] +!! result +

    File:Barfoo.jpg +

    +!! end + +!! test +Missing image with uploads disabled +!! options +wgEnableUploads=0 +!! input +[[Image:Foobaz.jpg]] +!! result +

    File:Foobaz.jpg +

    +!! end + +# Parsoid-specific testing for images +# http://www.mediawiki.org/wiki/Parsoid/MediaWiki_DOM_spec#Images +# Currently imperfect due to a flaw in the Parsoid testrunner +# Work in progress +# THESE TESTS SHOULD BE MOVED UP and merged with the php-specific +# image tests. + +!! test +Parsoid-specific image handling - simple image with size and middle alignment +!! options +parsoid +!! input +[[Image:Foobar.jpg|50px|middle]] +!! result +

    + + + + + +

    +!! end + +!! test +Parsoid-specific image handling - simple image with both sizes, a baseline alignment, and a caption +!! options +parsoid +!! input +[[Image:Foobar.jpg|500x10px|baseline|caption]] +!! result +

    + + + + + +

    +!! end + +!! test +Parsoid-specific image handling - simple image with border and size spec +!! options +parsoid +!! input +[[Image:Foobar.jpg|50px|border|caption]] +!! result +

    + + + + + +

    +!! end + +!! test +Parsoid-specific image handling - thumbnail with halign, valign, and caption +!! options +parsoid +!! input +[[Image:Foobar.jpg|thumb|left|baseline|caption content]] +!! result +
    + + + +
    caption content
    +
    +!! end + +!! test +Parsoid-specific image handling - thumbnail with specific size, halign, valign, and caption +!! options +parsoid +!! input +[[Image:Foobar.jpg|thumb|50x50px|right|middle|caption]] +!! result +
    + + + +
    caption
    +
    +!! end + +!! test +Parsoid-specific image handling - framed image with specific size and caption +!! options +parsoid +!! input +[[Image:Foobar.jpg|500x50px|frame|caption]] +!! result +
    + + + +
    caption
    +
    +!! end + +!! test +Parsoid-specific image handling - framed image with specific size, halign, valign, and caption +!! options +parsoid +!! input +[[Image:Foobar.jpg|500x50px|frame|left|baseline|caption]] +!! result +
    + + + +
    caption
    +
    +!! end + +!! test +Parsoid-specific image handling - frameless image with specific size, border, and caption +!! options +parsoid +!! input +[[Image:Foobar.jpg|frameless|500x50px|border|caption]] +!! result +

    + + + + +

    +!! end + +#!! test +#Parsoid-specific image handling - simple image with a formatted caption +#!! options +#parsoid +#!! input +#[[Image:Foobar.jpg|
    ab
    c
    ]] +#!! result +#

    +# +# +#Foobar.jpg +# +#abc +# +#

    + + +### +### Subpages +### +!! article +Subpage test/subpage +!! text +foo +!! endarticle + +!! test +Subpage link +!! options +subpage title=[[Subpage test]] +!! input +[[/subpage]] +!! result +

    /subpage +

    +!! end + +!! test +Subpage noslash link +!! options +subpage title=[[Subpage test]] +!!input +[[/subpage/]] +!! result +

    subpage +

    +!! end + +# TODO: make this PHP-parser compatible! +!! test +Relative subpage noslash link +!! options +parsoid=wt2wt,wt2html,html2html +subpage title=[[Subpage test/1/2/3/4]] +!!input +[[../../subpage/]] + +[[../../subpage]] +!! result +

    subpage

    +

    Subpage_test/1/2/subpage

    +!! end + +# TODO: make this PHP-parser compatible! +!! test +Parsoid: dot-slash prefixed wikilinks +!! options +parsoid=wt2wt,wt2html,html2html +!!input +[[./foo]] + +[[././bar]] + +[[././baz/]] +!! result +

    foo

    +

    bar

    +

    baz/

    +!! end + +!! test +Disabled subpages +!! input +[[/subpage]] +!! result +

    /subpage +

    +!! end + +!! test +BUG 561: {{/Subpage}} +!! options +subpage title=[[Page]] +!! input +{{/Subpage}} +!! result +

    Page/Subpage +

    +!! end + +### +### Categories +### +!! article +Category:MediaWiki User's Guide +!! text +blah +!! endarticle + +!! test +Link to category +!! input +[[:Category:MediaWiki User's Guide]] +!! result +

    Category: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:}} +!! result +

    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]] +!! result +

    Foo Bar +

    Foo +Bar +

    Foo +Bar +

    Foo Bar +

    Foo +Bar +

    +!! end + +!! test +Parsoid: Serialize link to category page with colon escape +!! options +parsoid +!! input + +[[:Category:Foo]] +[[:Category:Foo|Bar]] +!! result +

    +Category:Foo +Bar +

    +!! end + +!! test +Parsoid: Link prefix/suffixes aren't applied to category links +!! options +parsoid=wt2html,wt2wt,html2html +language=is +!! input +x[[Category:Foo]]y +!! result +

    xy

    +!! end + +!! test +Parsoid: Serialize link to file page with colon escape +!! options +parsoid +!! input + +[[:File:Foo.png]] +[[:File:Foo.png|Bar]] +!! result +

    +File:Foo.png +Bar +

    +!! end + +!! test +Parsoid: Serialize a genuine category link without colon escape +!! options +parsoid +!! input +[[Category:Foo]] +[[Category:Foo|Bar]] +!! result + + +!! 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 +!! result +

    Headline 1[edit]

    +

    Some text +

    +

    Headline 2[edit]

    +

    More +

    +

    Smaller headline[edit]

    +

    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=== +!! result + + +

    Headline 1[edit]

    +

    Subheadline 1[edit]

    +
    Skipping a level[edit]
    +
    Skipping a level[edit]
    +

    Headline 2[edit]

    +

    Some text +

    +

    Another headline[edit]

    + +!! end + +# perl -e 'print "="x$_," Level $_ heading","="x$_,"\n" for 1..10' +!! test +Handling of sections up to level 6 and beyond +!! input += Level 1 Heading= +== Level 2 Heading== +=== Level 3 Heading=== +==== Level 4 Heading==== +===== Level 5 Heading===== +====== Level 6 Heading====== +======= Level 7 Heading======= +======== Level 8 Heading======== +========= Level 9 Heading========= +========== Level 10 Heading========== +!! result + + +

    Level 1 Heading[edit]

    +

    Level 2 Heading[edit]

    +

    Level 3 Heading[edit]

    +

    Level 4 Heading[edit]

    +
    Level 5 Heading[edit]
    +
    Level 6 Heading[edit]
    +
    = Level 7 Heading=[edit]
    +
    == Level 8 Heading==[edit]
    +
    === Level 9 Heading===[edit]
    +
    ==== Level 10 Heading====[edit]
    + +!! end + +!! test +TOC regression (bug 9764) +!! input +== title 1 == +=== title 1.1 === +==== title 1.1.1 ==== +=== title 1.2 === +== title 2 == +=== title 2.1 === +!! result + + +

    title 1[edit]

    +

    title 1.1[edit]

    +

    title 1.1.1[edit]

    +

    title 1.2[edit]

    +

    title 2[edit]

    +

    title 2.1[edit]

    + +!! end + +!! test +TOC with wgMaxTocLevel=3 (bug 6204) +!! options +wgMaxTocLevel=3 +!! input +== title 1 == +=== title 1.1 === +==== title 1.1.1 ==== +=== title 1.2 === +== title 2 == +=== title 2.1 === +!! result + + +

    title 1[edit]

    +

    title 1.1[edit]

    +

    title 1.1.1[edit]

    +

    title 1.2[edit]

    +

    title 2[edit]

    +

    title 2.1[edit]

    + +!! end + +!! test +TOC with wgMaxTocLevel=3 and two level four headings (bug 6204) +!! options +wgMaxTocLevel=3 +!! input +==Section 1== +===Section 1.1=== +====Section 1.1.1==== +====Section 1.1.1.1==== +==Section 2== +!! result +

    Contents

    + +
    + +

    Section 1[edit]

    +

    Section 1.1[edit]

    +

    Section 1.1.1[edit]

    +

    Section 1.1.1.1[edit]

    +

    Section 2[edit]

    + +!! end + + +!! test +Resolving duplicate section names +!! input +== Foo bar == +== Foo bar == +!! result +

    Foo bar[edit]

    +

    Foo bar[edit]

    + +!! end + +!! test +Resolving duplicate section names with differing case (bug 10721) +!! input +== Foo bar == +== Foo Bar == +!! result +

    Foo bar[edit]

    +

    Foo Bar[edit]

    + +!! end + +!! article +Template:sections +!! text +===Section 1=== +==Section 2== +!! endarticle + +!! test +Template with sections, __NOTOC__ +!! input +__NOTOC__ +==Section 0== +{{sections}} +==Section 4== +!! result +

    Section 0[edit]

    +

    Section 1[edit]

    +

    Section 2[edit]

    +

    Section 4[edit]

    + +!! end + +!! test +__NOEDITSECTION__ keyword +!! input +__NOEDITSECTION__ +==Section 1== +==Section 2== +!! result +

    Section 1

    +

    Section 2

    + +!! end + +!! test +Link inside a section heading +!! input +==Section with a [[Main Page|link]] in it== +!! result +

    Section with a link in it[edit]

    + +!! end + +!! test +TOC regression (bug 12077) +!! input +__TOC__ +== title 1 == +=== title 1.1 === +== title 2 == +!! result +

    Contents

    + +
    + +

    title 1[edit]

    +

    title 1.1[edit]

    +

    title 2[edit]

    + +!! end + +!! test +BUG 1219 URL next to image (good) +!! input +http://example.com [[Image:foobar.jpg]] +!! result +

    http://example.com Foobar.jpg +

    +!!end + +!! test +Short headings with trailing space should match behavior of Parser::doHeadings (bug 19910) +!! input +=== +The line above must have a trailing space! +=== +But just in case it doesn't... +!! result +

    =[edit]

    +

    The line above must have a trailing space! +

    +

    =[edit]

    +

    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 +!! result +

    The tooltips shall not show entities to the user (ie. be double escaped) +

    + + +

    text > text[edit]

    +

    section 1 +

    +

    text < text[edit]

    +

    section 2 +

    +

    text & text[edit]

    +

    section 3 +

    +

    text ' text[edit]

    +

    section 4 +

    +

    text " text[edit]

    +

    section 5 +

    +!! end + +!! test +Headers with excess '=' characters +(Are similar tests necessary beyond the 1st level?) +!! input +=foo== +==foo= +=''italic'' heading== +==''italic'' heading= +!! result + + +

    foo=[edit]

    +

    =foo[edit]

    +

    italic heading=[edit]

    +

    =italic heading[edit]

    + +!! end + +!! test +HTML headers vs TOC (bug 23393) +(__NOEDITSECTION__ for clearer output, doesn't matter here) +!! input +

    Header 1

    +== Header 1.1 == +== Header 1.2 == + +

    Header 2 +

    +== Header 2.1 == +== Header 2.2 == +__NOEDITSECTION__ +!! result + + +

    Header 1

    +

    Header 1.1

    +

    Header 1.2

    +

    Header 2

    +

    Header 2.1

    +

    Header 2.2

    + +!! end + +!! test +BUG 1219 URL next to image (broken) +!! input +http://example.com[[Image:foobar.jpg]] +!! result +

    http://example.comFoobar.jpg +

    +!!end + +!! test +Bug 1186 news: in the middle of text +!! input +http://en.wikinews.org/wiki/Wikinews:Workplace +!! result +

    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 +!! input +
    HTML rocks
    +!! result +
    HTML rocks
    + +!! end + +!! test +div with double-quoted attribute +!! input +
    HTML rocks
    +!! result +
    HTML rocks
    + +!! end + +!! test +div with single-quoted attribute +!! input +
    HTML rocks
    +!! result +
    HTML rocks
    + +!! end + +!! test +div with unquoted attribute +!! input +
    HTML rocks
    +!! result +
    HTML rocks
    + +!! end + +!! test +div with illegal double attributes +!! input +
    HTML rocks
    +!! result +
    HTML rocks
    + +!!end + +# FIXME: produce empty string instead of "class" in the PHP parser, following +# the HTML5 spec. +!! test +div with empty attribute value, space before equals +!! options +parsoid +!! input +
    HTML rocks
    +!! result +
    HTML rocks
    + +!! end + +# The PHP parser escapes the opening brace to { for some reason, so +# disabled this test for it. +!! test +div with braces in attribute value +!! options +parsoid +!! input +
    Foo
    +!! result +
    Foo
    +!! end + +# This it very inconsistent in the PHP parser: it returns +# class="class" if there is a space between the name and the equal sign (see +# 'div with empty attribute value, space before equals'), but strips the +# attribute completely if the space is missing. We hope that not much content +# depends on this, so are implementing the behavior below in Parsoid for +# consistencies' sake. Disabled for the PHP parser. +# FIXME: fix this behavior in the PHP parser? +!! test +div with empty attribute value, no space before equals +!! options +parsoid +!! input +
    HTML rocks
    +!! result +
    HTML rocks
    + +!! end + +!! test +HTML multiple attributes correction +!! input +

    Awesome!

    +!! result +

    Awesome!

    + +!!end + +!! test +Table multiple attributes correction +!! input +{| +!+ class="error" class="awesome"| status +|} +!! result + + +
    status +
    + +!!end + +!! test +DIV IN UPPERCASE +!! input +
    HTML ROCKS
    +!! result +
    HTML ROCKS
    + +!!end + +!! test +Non-ASCII pseudo-tags are rendered as text +!! input + +!! result +

    <khyô> +

    +!! end + +!! test +Pseudo-tag with URL 'name' renders as url link +!! input + +!! result +

    <http://example.com/> +

    +!! end + +!! test +text with amp in the middle of nowhere +!! input +Remember AT&T? +!!result +

    Remember AT&T? +

    +!! end + +!! test +text with character entity: eacute +!! input +I always thought é was a cute letter. +!! result +

    I always thought é was a cute letter. +

    +!! end + +!! test +text with entity-escaped character entity-like string: eacute +!! input +I always thought &eacute; was a cute letter. +!! result +

    I always thought &eacute; was a cute letter. +

    +!! end + +!! test +text with undefined character entity: xacute +!! input +I always thought &xacute; was a cute letter. +!! result +

    I always thought &xacute; was a cute letter. +

    +!! end + + +### +### Nesting tests (see bug 41545, 50604, 51081) +### + +# This test case is fixed in Parsoid by domino 1.0.12. (bug 50604) +# Note that html2wt is considerably more difficult if we use in +# the test case, instead of +!! test +Ensure that HTML adoption agency algorithm is properly implemented. +!! input +XYZ +!! result +

    XYZ +

    +!! end + +# This was bug 41545 in the PHP parser. +!! test +Nesting of +!! input +XYZ +!! result +

    XYZ +

    +!! end + +# The following cases were bug 51081 in the PHP parser. +# Note that there are some other nestable tags (b, i, etc) which are +# not covered; see bug 51081 for discussion. +!! test +Nesting of +!! input +XYZ +!! result +

    XYZ +

    +!! end + +!! test +Nesting of +!! input +XYZ +!! result +

    XYZ +

    +!! end + +!! test +Nesting of +!! input +XYZ +!! result +

    XYZ +

    +!! end + +!! test +Nesting of +!! input +XYZ +!! result +

    XYZ +

    +!! end + +!! test +Nesting of +!! input +XYZ +!! result +

    XYZ +

    +!! end + + +### +### Media links +### + +!! test +Media link +!! input +[[Media:Foobar.jpg]] +!! result +

    Media:Foobar.jpg +

    +!! end + +!! test +Media link with text +!! input +[[Media:Foobar.jpg|A neat file to look at]] +!! result +

    A neat file to look at +

    +!! 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
    " onmouseover="alert(document.cookie)" onfoo="
    ]] +!! 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 +

    Media:No such.jpg +

    +!! end + +!! test +Image link to nonexistent file (bug 1850 - good) +!! input +[[Image:No such.jpg]] +!! result +

    File:No such.jpg +

    +!! end + +!! test +:Image link to nonexistent file (bug 1850 - bad) +!! input +[[:Image:No such.jpg]] +!! result +

    Image:No such.jpg +

    +!! end + + + +!! test +Character reference normalization in link text (bug 1938) +!! input +[[Main Page|this&that]] +!! result +

    this&that +

    +!!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 +!! result +

    foo +

    +!! end + +!! test +Empty attribute crash test single-quotes (bug 2067) +!! input +foo +!! result +

    foo +

    +!! end + +!! test +Attribute test: equals, then nothing +!! input +foo +!! result +

    foo +

    +!! end + +!! test +Attribute test: unquoted value +!! input +foo +!! result +

    foo +

    +!! end + +!! test +Attribute test: unquoted but illegal value (hash) +!! input +foo +!! result +

    foo +

    +!! end + +!! test +Attribute test: no value +!! input +foo +!! result +

    foo +

    +!! end + +!! test +Bug 2095: link with three closing brackets +!! input +[[Main Page]]] +!! result +

    Main Page] +

    +!! end + +!! test +Bug 2095: link with pipe and three closing brackets +!! input +[[Main Page|link]]] +!! result +

    link] +

    +!! end + +!! test +Bug 2095: link with pipe and three closing brackets, version 2 +!! input +[[Main Page|[http://example.com/]]] +!! result +

    [http://example.com/] +

    +!! 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 +!! text +
    Magic div
    +!! endarticle + +!! test +Bug 2304: HTML attribute safety (safe template; regression bug 2309) +!! input +
    +!! result +
    + +!! end + +!! test +Bug 2304: HTML attribute safety (dangerous template; 2309) +!! input +
    +!! result +
    + +!! end + +!! test +Bug 2304: HTML attribute safety (dangerous style template; 2309) +!! input +
    +!! result +
    + +!! end + +!! test +Bug 2304: HTML attribute safety (safe parameter; 2309) +!! input +{{div style|width: 200px}} +!! result +
    Magic div
    + +!! end + +!! test +Bug 2304: HTML attribute safety (unsafe parameter; 2309) +!! input +{{div style|width: expression(alert(document.cookie))}} +!! result +
    Magic div
    + +!! end + +!! test +Bug 2304: HTML attribute safety (unsafe breakout parameter; 2309) +!! input +{{div style|">}} +!! result +
    <script>alert(document.cookie)</script>">Magic div
    + +!! end + +!! test +Bug 2304: HTML attribute safety (unsafe breakout parameter 2; 2309) +!! input +{{div style|" >}} +!! result +
    <script>alert(document.cookie)</script>">Magic div
    + +!! end + +!! test +Bug 2304: HTML attribute safety (link) +!! input +
    +!! result +
    + +!! end + +!! test +Bug 2304: HTML attribute safety (italics) +!! input +
    +!! result +
    + +!! end + +!! test +Bug 2304: HTML attribute safety (bold) +!! input +
    +!! result +
    + +!! end + + +!! test +Bug 2304: HTML attribute safety (ISBN) +!! input +
    +!! result +
    + +!! end + +!! test +Bug 2304: HTML attribute safety (RFC) +!! input +
    +!! result +
    + +!! end + +!! test +Bug 2304: HTML attribute safety (PMID) +!! input +
    +!! result +
    + +!! end + +!! test +Bug 2304: HTML attribute safety (web link) +!! input +
    +!! result +
    + +!! end + +!! test +Bug 2304: HTML attribute safety (named web link) +!! input +
    +!! result +
    + +!! end + +!! test +Bug 3244: HTML attribute safety (extension; safe) +!! input +
    +!! result +
    + +!! end + +!! test +Bug 3244: HTML attribute safety (extension; unsafe) +!! input +
    +!! result +
    + +!! end + +!! test +Opera -o-link CSS +!! input +
    X
    +!! result +
    X
    + +!! end + +# More MSIE fun discovered by Tom Gilder + +!! test +MSIE CSS safety test: spurious slash +!! input +
    evil
    +!! result +
    evil
    + +!! end + +!! test +MSIE CSS safety test: hex code +!! input +
    evil
    +!! result +
    evil
    + +!! end + +!! test +MSIE CSS safety test: comment in url +!! input +
    evil
    +!! result +
    evil
    + +!! end + +!! test +MSIE CSS safety test: comment in expression +!! input +
    evil4
    +!! result +
    evil4
    + +!! end + +!! test +CSS safety test: vertical tab +!! input +

    A

    +!! result +

    A

    + +!! end + +!! test +MSIE CSS safety test: Fullwidth +!! input +

    A

    +
    B
    +!! result +

    A

    +
    B
    + +!! end + +!! test +MSIE CSS safety test: IPA extensions +!! input +
    A
    +

    B

    +!! result +
    A
    +

    B

    + +!! end + +!! test +MSIE CSS safety test: sup/sub script +!! input +
    A
    +
    B
    +

    C

    +!! result +
    A
    +
    B
    +

    C

    + +!! end + +!! test +MSIE CSS safety test: Repetition markers +!! input +

    A

    +

    B

    +

    C

    +

    D

    +

    E

    +

    F

    +

    G

    +!! result +

    A

    +

    B

    +

    C

    +

    D

    +

    E

    +

    F

    +

    G

    + +!! end + +!! test +Table attribute legitimate extension +!! input +{| +!+ style="color:blue"| status +|} +!! result + + +
    status +
    + +!!end + +!! test +Table attribute safety +!! input +{| +!+ style="border-width:expression(0+alert(document.cookie))"| status +|} +!! result + + +
    status +
    + +!! end + +!! test +CSS line continuation 1 +!! input +
    +!! result +
    + +!! end + +!! test +CSS line continuation 2 +!! input +
    +!! result +
    + +!! end + +!! article +Template:Identity +!! text +{{{1}}} +!! endarticle + +!! test +Expansion of multi-line templates in attribute values (bug 6255) +!! input +
    -
    +!! result +
    -
    + +!! end + + +!! test +Expansion of multi-line templates in attribute values (bug 6255 sanity check) +!! input +
    -
    +!! result +
    -
    + +!! end + +!! test +Expansion of multi-line templates in attribute values (bug 6255 sanity check 2) +!! input +
    -
    +!! result +
    -
    + +!! end + +### +### Parser hooks (see tests/parser/parserTestsParserHook.php for the extension) +### +!! test +Parser hook: empty input +!! input + +!! result +
    +''
    +array (
    +)
    +
    + +!! end + +!! test +Parser hook: empty input using terminated empty elements +!! input + +!! result +
    +NULL
    +array (
    +)
    +
    + +!! end + +!! test +Parser hook: empty input using terminated empty elements (space before) +!! input + +!! result +
    +NULL
    +array (
    +)
    +
    + +!! end + +!! test +Parser hook: basic input +!! input +input +!! result +
    +'input'
    +array (
    +)
    +
    + +!! end + + +!! test +Parser hook: case insensitive +!! input +input +!! result +
    +'input'
    +array (
    +)
    +
    + +!! end + + +!! test +Parser hook: case insensitive, redux +!! input +input +!! result +
    +'input'
    +array (
    +)
    +
    + +!! end + +!! test +Parser hook: nested tags +!! options +noxml +!! input + +!! result +
    +''
    +array (
    +)
    +
    </tag> + +!! end + +!! test +Parser hook: basic arguments +!! input + +!! result +
    +''
    +array (
    +  'width' => '200',
    +  'height' => '100',
    +  'depth' => '50',
    +  'square' => 'square',
    +)
    +
    + +!! end + +!! test +Parser hook: argument containing a forward slash (bug 5344) +!! input + +!! result +
    +''
    +array (
    +  'filename' => '/tmp/bla',
    +)
    +
    + +!! end + +!! test +Parser hook: empty input using terminated empty elements (bug 2374) +!! input +text +!! result +
    +NULL
    +array (
    +  'foo' => 'bar',
    +)
    +
    text + +!! end + +#
    should be output literally since there is no matching tag that begins it +!! test +Parser hook: basic arguments using terminated empty elements (bug 2374) +!! input + +other stuff + +!! result +
    +NULL
    +array (
    +  'width' => '200',
    +  'height' => '100',
    +  'depth' => '50',
    +  'square' => 'square',
    +)
    +
    +

    other stuff +</tag> +

    +!! end + +### +### (see tests/parser/parserTestsParserHook.php for the extension) +### + +!! test +Parser hook: static parser hook not inside a comment +!! input +hello, world + +!! result +

    hello, world +

    +!! end + + +!! test +Parser hook: static parser hook inside a comment +!! input + + +!! result +


    +

    +!! end + +# Nested template calls; this case was broken by Parser.php rev 1.506, +# since reverted. + +!! article +Template:One-parameter +!! text +(My parameter is: {{{1}}}) +!! endarticle + +!! article +Template:Map-one-parameter +!! text +{{{{{1}}}|{{{2}}}}} +!! endarticle + +!! test +Nested template calls +!! input +{{Map-one-parameter|One-parameter|param}} +!! result +

    (My parameter is: param) +

    +!! end + + +### +### Sanitizer +### +!! test +Sanitizer: Closing of open tags +!! input +
    +!! result +
    + +!! end + +!! test +Sanitizer: Closing of open but not closed tags +!! input +foo +!! result +

    foo +

    +!! end + +!! test +Sanitizer: Closing of closed but not open tags +!! input +
    +!! result +

    </s> +

    +!! end + +!! test +Sanitizer: Closing of closed but not open table tags +!! input +Table not started +!! result +

    Table not started</td></tr></table> +

    +!! end + +!! test +Sanitizer: Escaping of spaces, multibyte characters, colons & other stuff in id="" +!! input +byte[[#æ: v|backlink]] +!! result +

    bytebacklink +

    +!! end + +!! test +Sanitizer: Validating the contents of the id attribute (bug 4515) +!! options +disabled +!! input +
    +!! result +Something, but definitely not
    ... +!! end + +!! test +Sanitizer: Validating id attribute uniqueness (bug 4515, bug 6301) +!! options +disabled +!! input +

    +!! result +Something need to be done. foo-2 ? +!! end + +!! test +Sanitizer: Validating that and work, but only for Microdata +!! input +
    + + + + + + +
    +!! result +
    +

    + <meta http-equiv="refresh" content="5"> + +

    + + <link rel="stylesheet" href="http://example.org"> + +
    + +!! end + +!! test +Language converter: output gets cut off unexpectedly (bug 5757) +!! options +language=zh +!! input +this bit is safe: }- + +but if we add a conversion instance: -{zh-cn:xxx;zh-tw:yyy}- + +then we get cut off here: }- + +all additional text is vanished +!! result +

    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 +!! input +
    Centered text
    +
    In div text
    +!! result +
    <font id="bug" />Centered text
    +
    <font id="bug2" />In div text
    + +!! end + +# +# +# + +!! test +Punctuation: nbsp before exclamation +!! input +C'est grave ! +!! result +

    C'est grave ! +

    +!! end + +!! test +Punctuation: CSS !important (bug 11874) +!! input +
    important
    +!! result +
    important
    + +!!end + +!! test +Punctuation: CSS ! important (bug 11874; with space after) +!! input +
    important
    +!! result +
    important
    + +!!end + + +!! test +HTML bullet list, closed tags (bug 5497) +!! input +
      +
    • One
    • +
    • Two
    • +
    +!! result +
      +
    • One
    • +
    • Two
    • +
    + +!! end + +!! test +HTML bullet list, unclosed tags (bug 5497) +!! options +disabled +!! input +
      +
    • One +
    • Two +
    +!! result +
      +
    • One +
    • +
    • Two +
    • +
    + +!! end + +!! test +HTML ordered list, closed tags (bug 5497) +!! input +
      +
    1. One
    2. +
    3. Two
    4. +
    +!! result +
      +
    1. One
    2. +
    3. Two
    4. +
    + +!! end + +!! test +HTML ordered list, unclosed tags (bug 5497) +!! options +disabled +!! input +
      +
    1. One +
    2. Two +
    +!! result +
      +
    1. One +
    2. +
    3. Two +
    4. +
    + +!! end + +!! test +HTML nested bullet list, closed tags (bug 5497) +!! input +
      +
    • One
    • +
    • Two: +
        +
      • Sub-one
      • +
      • Sub-two
      • +
      +
    • +
    +!! result +
      +
    • One
    • +
    • Two: +
        +
      • Sub-one
      • +
      • Sub-two
      • +
      +
    • +
    + +!! end + +!! test +HTML nested bullet list, open tags (bug 5497) +!! options +disabled +!! input +
      +
    • One +
    • Two: +
        +
      • Sub-one +
      • Sub-two +
      +
    +!! result +
      +
    • One +
    • +
    • Two: +
        +
      • Sub-one +
      • +
      • Sub-two +
      • +
      +
    • +
    + +!! end + +!! test +HTML nested ordered list, closed tags (bug 5497) +!! input +
      +
    1. One
    2. +
    3. Two: +
        +
      1. Sub-one
      2. +
      3. Sub-two
      4. +
      +
    4. +
    +!! result +
      +
    1. One
    2. +
    3. Two: +
        +
      1. Sub-one
      2. +
      3. Sub-two
      4. +
      +
    4. +
    + +!! end + +!! test +HTML nested ordered list, open tags (bug 5497) +!! options +disabled +!! input +
      +
    1. One +
    2. Two: +
        +
      1. Sub-one +
      2. Sub-two +
      +
    +!! result +
      +
    1. One +
    2. +
    3. Two: +
        +
      1. Sub-one +
      2. +
      3. Sub-two +
      4. +
      +
    4. +
    + +!! end + +!! test +HTML ordered list item with parameters oddity +!! input +
    1. One
    2. +
    +!! result +
    1. One
    2. +
    + +!! end + +!!test +bug 5918: autonumbering +!! input +[http://first/] [http://second] [ftp://ftp] + +ftp://inlineftp + +[mailto:enclosed@mail.tld With target] + +[mailto:enclosed@mail.tld] + +mailto:inline@mail.tld +!! result +

    [1] [2] [3] +

    ftp://inlineftp +

    With target +

    [4] +

    mailto:inline@mail.tld +

    +!! end + + +# +# Security and HTML correctness +# From Nick Jenkins' fuzz testing +# + +!! test +Fuzz testing: Parser13 +!! input +{| +| http://a| +!! result + + + + +
    +
    + +!! end + +!! test +Fuzz testing: Parser14 +!! input +== onmouseover= == +http://__TOC__ +!! result +

    onmouseover=[edit]

    +http://

    Contents

    + +
    + + +!! end + +!! test +Fuzz testing: Parser14-table +!! input +==a== +{| STYLE=__TOC__ +!! result +

    a[edit]

    + + +
    + +!! end + +# Known to produce bogus xml (extra ) +!! test +Fuzz testing: Parser16 +!! options +noxml +!! input +{| +!https://|||||| +!! result + + + + + + +
    https:// + +
    + +!! end + +!! test +Fuzz testing: Parser21 +!! input +{| +! irc://{{ftp://a" onmouseover="alert('hello world');" +| +!! result + + + + + +
    irc://{{ftp://a" onmouseover="alert('hello world');" + +
    + +!! end + +!! test +Fuzz testing: Parser22 +!! input +http://===r:::https://b + +{| +!!result +

    http://===r:::https://b +

    + + +
    + +!! end + +# Known to produce bad XML for now +!! test +Fuzz testing: Parser24 +!! options +noxml +!! input +{| +{{{| +}}}} > +
    + +MOVE YOUR MOUSE CURSOR OVER THIS TEXT +| +!! result + +{{{| +}}}} > +
    + +MOVE YOUR MOUSE CURSOR OVER THIS TEXT +
    + + +
    +
    + +!! end + +# Note: the current result listed for this is not what the original one was, +# but the original bug was JavaScript injection, which is fixed in any case. +# It's not clear that the original result listed was any more correct than the +# current one. Original result: +#

    {{{| +#

    +#
  • +# }}}blah" onmouseover="alert('hello world');" align="left"MOVE MOUSE CURSOR OVER HERE +!!test +Fuzz testing: Parser25 (bug 6055) +!! input +{{{ +| +
  • +}}}blah" onmouseover="alert('hello world');" align="left"'''MOVE MOUSE CURSOR OVER HERE +!! result +

    <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.com junk +!! result +

    http://example.com junk +

    +!!end + +!!test +Fuzz testing: URL adjacent extension (no space, dirty; nowiki) +!! options +!! input +http://example.comjunk +!! result +

    http://example.comjunk +

    +!!end + +!!test +Fuzz testing: URL adjacent extension (no space, dirty; pre) +!! options +!! input +http://example.com
    junk
    +!! result +http://example.com
    junk
    + +!!end + +!!test +Fuzz testing: image with bogus manual thumbnail +!!input +[[Image:foobar.jpg|thumbnail= ]] +!!result +
    Error creating thumbnail:
    + +!!end + +!! test +Fuzz testing: encoded newline in generated HTML replacements (bug 6577) +!! input +
    
    +!! result
    +
    
    +
    +!! end
    +
    +!! test
    +Parsing optional HTML elements (Bug 6171)
    +!! options
    +!! input
    +
    +  
    +    
    +    
    +  
    +
    Some tabular data More tabular data ... + And yet som tabular data
    +!! result + + + + + +
    Some tabular data More tabular data ... + And yet som tabular data
    + +!! end + +!! test +Correct handling of , (Bug 6171) +!! options +!! input + + + + + + +
    Some tabular data More tabular data ... And yet som tabular data
    +!! result + + + + + + +
    Some tabular data More tabular data ... And yet som tabular data
    + +!! end + + +!! test +Parsing crashing regression (fr:JavaScript) +!! input + +!! result +

    </body></x> +

    +!! end + +!! test +Inline wiki vs wiki block nesting +!! input +'''Bold paragraph + +New wiki paragraph +!! result +

    Bold paragraph +

    New wiki paragraph +

    +!! end + +!! test +Inline HTML vs wiki block nesting +!! options +disabled +!! input +Bold paragraph + +New wiki paragraph +!! result +

    Bold paragraph +

    New wiki paragraph +

    +!! end + +# Original result was this: +#

    boldboldbolditalics +#

    +# While that might be marginally more intuitive, maybe, the six-apostrophe +# construct is clearly pathological and the result stated here (which is what +# the parser actually does) is about as reasonable as anything. +!!test +Mixing markup for italics and bold +!! options +!! input +'''bold''''''bold''bolditalics''''' +!! result +

    'bold'boldbolditalics +

    +!! end + + +!! article +Xyzzyx +!! text +Article for special page transclusion test +!! endarticle + +!! test +Special page transclusion +!! options +!! input +{{Special:Prefixindex/Xyzzyx}} +!! result +
    Xyzzyx
    + +!! end + +!! test +Special page transclusion twice (bug 5021) +!! options +!! input +{{Special:Prefixindex/Xyzzyx}} +{{Special:Prefixindex/Xyzzyx}} +!! result +
    Xyzzyx
    +
    Xyzzyx
    + +!! end + +!! test +Transclusion of default MediaWiki message +!! input +{{MediaWiki:Mainpage}} +!!result +

    Main Page +

    +!! end + +!! test +Transclusion of nonexistent MediaWiki message +!! input +{{MediaWiki:Mainpagexxx}} +!!result +

    MediaWiki:Mainpagexxx +

    +!! end + +!! test +Transclusion of MediaWiki message with underscore +!! input +{{MediaWiki:history_short}} +!! result +

    History +

    +!! end + +!! test +Transclusion of MediaWiki message with space +!! input +{{MediaWiki:history short}} +!! result +

    History +

    +!! end + +!! test +Invalid header with following text +!! input += x = y +!! result +

    = x = y +

    +!! end + + +!! test +Section extraction test (section 0) +!! options +section=0 +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +start +!! end + +!! test +Section extraction test (section 1) +!! options +section=1 +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +==a== +===aa=== +====aaa==== +!! end + +!! test +Section extraction test (section 2) +!! options +section=2 +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +===aa=== +====aaa==== +!! end + +!! test +Section extraction test (section 3) +!! options +section=3 +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +====aaa==== +!! end + +!! test +Section extraction test (section 4) +!! options +section=4 +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +==b== +===ba=== +===bb=== +====bba==== +===bc=== +!! end + +!! test +Section extraction test (section 5) +!! options +section=5 +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +===ba=== +!! end + +!! test +Section extraction test (section 6) +!! options +section=6 +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +===bb=== +====bba==== +!! end + +!! test +Section extraction test (section 7) +!! options +section=7 +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +====bba==== +!! end + +!! test +Section extraction test (section 8) +!! options +section=8 +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +===bc=== +!! end + +!! test +Section extraction test (section 9) +!! options +section=9 +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +==c== +===ca=== +!! end + +!! test +Section extraction test (section 10) +!! options +section=10 +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +===ca=== +!! end + +!! test +Section extraction test (nonexistent section 11) +!! options +section=11 +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +!! end + +!! test +Section extraction test with bogus heading (section 1) +!! options +section=1 +!! input +==a== +==bogus== not a legal section +==b== +!! result +==a== +==bogus== not a legal section +!! end + +!! test +Section extraction test with bogus heading (section 2) +!! options +section=2 +!! input +==a== +==bogus== not a legal section +==b== +!! result +==b== +!! end + +!! test +Section extraction test with comment after heading (section 1) +!! options +section=1 +!! input +==a== +==b== +==c== +!! result +==a== +!! end + +!! test +Section extraction test with comment after heading (section 2) +!! options +section=2 +!! input +==a== +==b== +==c== +!! result +==b== +!! end + +!! test +Section extraction test with bogus heading (section 1) +!! options +section=1 +!! input +==a== +==bogus== not a legal section +==b== +!! result +==a== +==bogus== not a legal section +!! end + +!! test +Section extraction test with bogus heading (section 2) +!! options +section=2 +!! input +==a== +==bogus== not a legal section +==b== +!! result +==b== +!! end + + +# Formerly testing for bug 2587, now resolved by the use of unmarked sections +# instead of respecting commented sections +!! test +Section extraction prefixed by comment (section 1) +!! options +section=1 +!! input +==sec1== +==sec2== +!!result +==sec2== +!!end + +!! test +Section extraction prefixed by comment (section 2) +!! options +section=2 +!! input +==sec1== +==sec2== +!!result + +!!end + + +# Formerly testing for bug 2607, now resolved by the use of unmarked sections +# instead of respecting HTML-style headings +!! test +Section extraction, mixed wiki and html (section 1) +!! options +section=1 +!! input +

    unmarked

    +unmarked +==1== +one +==2== +two +!! result +==1== +one +!! end + +!! test +Section extraction, mixed wiki and html (section 2) +!! options +section=2 +!! input +

    unmarked

    +unmarked +==1== +one +==2== +two +!! result +==2== +two +!! end + + +# Formerly testing for bug 3342 +!! test +Section extraction, heading surrounded by +!! options +section=1 +!! input +==unmarked== +==marked== +!! result +==marked== +!!end + +# Test behavior of bug 19910 +!! test +Sectiion with all-equals +!! options +section=2 +!! input +=== +The line above must have a trailing space +=== +But just in case it doesn't... +!! result +=== +But just in case it doesn't... +!! end + +!! test +Section replacement test (section 0) +!! options +replace=0,"xxx" +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +xxx + +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! end + +!! test +Section replacement test (section 1) +!! options +replace=1,"xxx" +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +start +xxx + +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! end + +!! test +Section replacement test (section 2) +!! options +replace=2,"xxx" +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +start +==a== +xxx + +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! end + +!! test +Section replacement test (section 3) +!! options +replace=3,"xxx" +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +start +==a== +===aa=== +xxx + +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! end + +!! test +Section replacement test (section 4) +!! options +replace=4,"xxx" +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +start +==a== +===aa=== +====aaa==== +xxx + +==c== +===ca=== +!! end + +!! test +Section replacement test (section 5) +!! options +replace=5,"xxx" +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +start +==a== +===aa=== +====aaa==== +==b== +xxx + +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! end + +!! test +Section replacement test (section 6) +!! options +replace=6,"xxx" +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +xxx + +===bc=== +==c== +===ca=== +!! end + +!! test +Section replacement test (section 7) +!! options +replace=7,"xxx" +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +xxx + +===bc=== +==c== +===ca=== +!! end + +!! test +Section replacement test (section 8) +!! options +replace=8,"xxx" +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +xxx + +==c== +===ca=== +!!end + +!! test +Section replacement test (section 9) +!! options +replace=9,"xxx" +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +xxx +!! end + +!! test +Section replacement test (section 10) +!! options +replace=10,"xxx" +!! input +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +===ca=== +!! result +start +==a== +===aa=== +====aaa==== +==b== +===ba=== +===bb=== +====bba==== +===bc=== +==c== +xxx +!! end + +!! test +Section replacement test with initial whitespace (bug 13728) +!! options +replace=2,"xxx" +!! input + Preformatted initial line +==a== +===a=== +!! result + Preformatted initial line +==a== +xxx +!! end + + +!! test +Section extraction, heading followed by pre with 20 spaces (bug 6398) +!! options +section=1 +!! input +==a== + a +!! result +==a== + a +!! end + +!! test +Section extraction, heading followed by pre with 19 spaces (bug 6398 sanity check) +!! options +section=1 +!! input +==a== + a +!! result +==a== + a +!! end + + +!! test +Section extraction,
     around bogus header (bug 10309)
    +!! options
    +noxml section=2
    +!! input
    +== Section One ==
    +
    +=======
    +
    + +== Section Two == +stuff +!! result +== Section Two == +stuff +!! end + +!! test +Section replacement,
     around bogus header (bug 10309)
    +!! options
    +noxml replace=2,"xxx"
    +!! input
    +== Section One ==
    +
    +=======
    +
    + +== Section Two == +stuff +!! result +== Section One == +
    +=======
    +
    + +xxx +!! end + + + +!! test +Handling of in URLs +!! input +**irc:// a +!! result + + +!!end + +!! test +5 quotes, code coverage +1 line (php) +!! options +php +!! input +''''' +!! result +!! end +# The PHP parser strips the empty tags out for giggles; parsoid doesn't. +!! test +5 quotes, code coverage +1 line (parsoid) +!! options +parsoid +!! input +''''' +!! result +

    +!! end + +!! test +Special:Search page linking. +!! input +{{Special:search}} +!! result +

    Special:Search +

    +!! end + +!! test +Say the magic word +!! options +title=[[Parser test]] +!! input +* {{PAGENAME}} +* {{PAGENAMEE}} +* {{FULLPAGENAME}} +* {{FULLPAGENAMEE}} +* {{BASEPAGENAME}} +* {{BASEPAGENAMEE}} +* {{SUBPAGENAME}} +* {{SUBPAGENAMEE}} +* {{ROOTPAGENAME}} +* {{ROOTPAGENAMEE}} +* {{TALKPAGENAME}} +* {{TALKPAGENAMEE}} +* {{SUBJECTPAGENAME}} +* {{SUBJECTPAGENAMEE}} +* {{NAMESPACEE}} +* {{NAMESPACE}} +* {{NAMESPACENUMBER}} +* {{TALKSPACE}} +* {{TALKSPACEE}} +* {{SUBJECTSPACE}} +* {{SUBJECTSPACEE}} +* {{Dynamic|{{NUMBEROFUSERS}}|{{NUMBEROFPAGES}}|{{CURRENTVERSION}}|{{CONTENTLANGUAGE}}|{{DIRECTIONMARK}}|{{CURRENTTIMESTAMP}}|{{NUMBEROFARTICLES}}}} +!! result +
      +
    • Parser test +
    • +
    • Parser_test +
    • +
    • Parser test +
    • +
    • Parser_test +
    • +
    • Parser test +
    • +
    • Parser_test +
    • +
    • Parser test +
    • +
    • Parser_test +
    • +
    • Parser test +
    • +
    • Parser_test +
    • +
    • Talk:Parser test +
    • +
    • Talk:Parser_test +
    • +
    • Parser test +
    • +
    • Parser_test +
    • +
    • +
    • +
    • +
    • +
    • 0 +
    • +
    • Talk +
    • +
    • Talk +
    • +
    • +
    • +
    • +
    • +
    • Template:Dynamic +
    • +
    + +!! end +### Note: Above tests excludes the "{{NUMBEROFADMINS}}" magic word because it generates a MySQL error when included. + +!! test +Gallery +!! input + +image1.png | +image2.gif||||| + +image3| +image4 |300px| centre + image5.svg| http:///////// +[[x|xx]]]] +* image6 + +!! result + + +!! end + +!! test +Gallery (with options) +!! input + +File:Nonexistant.jpg|caption +File:Nonexistant.jpg +image:foobar.jpg|some '''caption''' [[Main Page]] +image:foobar.jpg +image:foobar.jpg|Blabla|alt=This is a foo-bar.|blabla. + +!! result + + +!! end + +!! test +Gallery with wikitext inside caption +!! input + +File:foobar.jpg|[[File:foobar.jpg|20px|desc|alt=inneralt]]|alt=galleryalt +File:foobar.jpg|{{Test|unamedParam|alt=param}}|alt=galleryalt + +!! result + + +!! end + +!! test +gallery (with showfilename option) +!! input + +File:Nonexistant.jpg|caption +File:Nonexistant.jpg +image:foobar.jpg|some '''caption''' [[Main Page]] +File:Foobar.jpg + +!! result + + +!! end + +!! test +Gallery (with namespace-less filenames) +!! input + +File:Nonexistant.jpg +Nonexistant.jpg +image:foobar.jpg +foobar.jpg + +!! result + + +!! end + +!! test +HTML Hex character encoding (spells the word "JavaScript") +!! input +JavaScript +!! result +

    JavaScript +

    +!! end + +!! test +HTML Hex character encoding bogus encoding (bug 26437 regression check) +!! input +&#xsee;&#XSEE; +!! result +

    &#xsee;&#XSEE; +

    +!! end + +!! test +HTML Hex character encoding mixed case +!! input +îî +!! result +

    îî +

    +!! end + +!! test +__FORCETOC__ override +!! input +__NEWSECTIONLINK__ +__FORCETOC__ +!! result +


    +

    +!! end + +!! test +ISBN code coverage +!! input +ISBN 978-0-1234-56 789 +!! result +

    ISBN 978-0-1234-56 789 +

    +!! end + +!! test +ISBN followed by 5 spaces +!! input +ISBN +!! result +

    ISBN +

    +!! end + +!! test +Double ISBN +!! input +ISBN ISBN 1234567890 +!! result +

    ISBN ISBN 1234567890 +

    +!! end + +!! test +Bug 22905: followed by ISBN followed by +!! input +(fr) ISBN 2753300917 [http://www.example.com example.com] +!! result +

    (fr) ISBN 2753300917 example.com +

    +!! end + +!! test +Double RFC +!! input +RFC RFC 1234 +!! result +

    RFC RFC 1234 +

    +!! end + +!! test +Double RFC with a wiki link +!! input +RFC [[RFC 1234]] +!! result +

    RFC RFC 1234 +

    +!! end + +!! test +RFC code coverage +!! input +RFC 983 987 +!! result +

    RFC 983 987 +

    +!! end + +!! test +Centre-aligned image +!! input +[[Image:foobar.jpg|centre]] +!! result +
    Foobar.jpg
    + +!!end + +!! test +None-aligned image +!! input +[[Image:foobar.jpg|none]] +!! result +
    Foobar.jpg
    + +!!end + +!! test +Width + Height sized image (using px) (height is ignored) +!! input +[[Image:foobar.jpg|640x480px]] +!! result +

    Foobar.jpg +

    +!!end + +!! test +Width-sized image (using px, no following whitespace) +!! input +[[Image:foobar.jpg|640px]] +!! result +

    Foobar.jpg +

    +!!end + +!! test +Width-sized image (using px, with following whitespace - test regression from r39467) +!! input +[[Image:foobar.jpg|640px ]] +!! result +

    Foobar.jpg +

    +!!end + +!! test +Width-sized image (using px, with preceding whitespace - test regression from r39467) +!! input +[[Image:foobar.jpg| 640px]] +!! result +

    Foobar.jpg +

    +!!end + +!! test +Another italics / bold test +!! input + ''' ''x' +!! result +
    ' x'
    +
    +!!end + +# Note the results may be incorrect, as parserTest output included this: +# XML error: Mismatched tag at byte 6120: +# ...
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +!!end + + +# Images with the "|" character in external URLs in comment tags; Eats half the comment, leaves unmatched "" tag. +!! test +Images with the "|" character in the comment +!! input +[[image:Foobar.jpg|thumb|An [http://test/?param1=|left|¶m2=|x external] URL]] +!! result +
    An external URL
    + +!!end + +!! test +[Before] HTML without raw HTML enabled ($wgRawHtml==false) +!! input + +!! result +

    <html><script>alert(1);</script></html> +

    +!! end + +!! test +HTML with raw HTML ($wgRawHtml==true) +!! options +wgRawHtml=1 +!! input + +!! result +

    +

    +!! end + +!! test +Parents of subpages, one level up +!! options +subpage title=[[Subpage test/L1/L2/L3]] +!! input +[[../|L2]] +!! result +

    L2 +

    +!! end + + +!! test +Parents of subpages, one level up, not named +!! options +subpage title=[[Subpage test/L1/L2/L3]] +!! input +[[../]] +!! result +

    Subpage test/L1/L2 +

    +!! end + + + +!! test +Parents of subpages, two levels up +!! options +subpage title=[[Subpage test/L1/L2/L3]] +!! input +[[../../|L1]]2 + +[[../../|L1]]l +!! result +

    L12 +

    L1l +

    +!! end + +!! test +Parents of subpages, two levels up, without trailing slash or name. +!! options +subpage title=[[Subpage test/L1/L2/L3]] +!! input +[[../..]] +!! result +

    [[../..]] +

    +!! end + +!! test +Parents of subpages, two levels up, with lots of extra trailing slashes. +!! options +subpage title=[[Subpage test/L1/L2/L3]] +!! input +[[../../////]] +!! result +

    /// +

    +!! end + +!! article +Subpage test/L1/L2/L3Sibling +!! text +Sibling article +!! endarticle + +!! test +Transclusion of a sibling page (one level up) +!! options +subpage title=[[Subpage test/L1/L2/L3]] +!! input +{{../L3Sibling}} +!! result +

    Sibling article +

    +!! end + +!! test +Transclusion of a child page +!! options +subpage title=[[Subpage test/L1/L2]] +!! input +{{/L3Sibling}} +!! result +

    Sibling article +

    +!! end + +!! test +Non-transclusion because of too many up levels +!! options +subpage title=[[Subpage test/L1/L2/L3]] +!! input +{{../../../../More than parent}} +!! result +

    {{../../../../More than parent}} +

    +!! end + +!! test +Definition list code coverage +!! input +; title : def +; title : def +;title: def +!! result +
    +
    title  
    +
    def +
    +
    title 
    +
    def +
    +
    title
    +
    def +
    +
    + +!! end + +!! test +Don't fall for the self-closing div +!! input +
    hello world
    +!! result +
    hello world
    + +!! end + +!! test +MSGNW magic word +!! input +{{MSGNW:msg}} +!! result +

    [[:Template:Msg]] +

    +!! end + +!! test +RAW magic word +!! input +{{RAW:QUERTY}} +!! result +

    Template:QUERTY +

    +!! end + +# This isn't needed for XHTML conformance, but would be handy as a fallback security measure +!! test +Always escape literal '>' in output, not just after '<' +!! input +><> +!! result +

    ><> +

    +!! end + +!! test +Template caching +!! input +{{Test}} +{{Test}} +!! result +

    This is a test template +This is a test template +

    +!! end + + +!! article +MediaWiki:Fake +!! text +==header== +!! endarticle + +!! test +Inclusion of !userCanEdit() content +!! input +{{MediaWiki:Fake}} +!! result +

    header[edit]

    + +!! end + + +!! test +Out-of-order TOC heading levels +!! input +==2== +======6====== +===3=== +=1= +=====5===== +==2== +!! result +

    Contents

    + +
    + +

    2[edit]

    +
    6[edit]
    +

    3[edit]

    +

    1[edit]

    +
    5[edit]
    +

    2[edit]

    + +!! end + + +!! test +ISBN with a dummy number +!! input +ISBN --- +!! result +

    ISBN --- +

    +!! end + + +!! test +ISBN with space-delimited number +!! input +ISBN 92 9017 032 8 +!! result +

    ISBN 92 9017 032 8 +

    +!! end + + +!! test +ISBN with multiple spaces, no number +!! input +ISBN foo +!! result +

    ISBN foo +

    +!! end + + +!! test +ISBN length +!! input +ISBN 123456789 + +ISBN 1234567890 + +ISBN 12345678901 +!! result +

    ISBN 123456789 +

    ISBN 1234567890 +

    ISBN 12345678901 +

    +!! end + + +!! test +ISBN with trailing year (bug 8110) +!! input +ISBN 1-234-56789-0 - 2006 + +ISBN 1 234 56789 0 - 2006 +!! result +

    ISBN 1-234-56789-0 - 2006 +

    ISBN 1 234 56789 0 - 2006 +

    +!! end + + +!! test +anchorencode +!! input +{{anchorencode:foo bar©#%n}} +!! result +

    foo_bar.C2.A9.23.25n +

    +!! end + +!! test +anchorencode trims spaces +!! input +{{anchorencode: __pretty__please__}} +!! result +

    pretty_please +

    +!! end + +!! test +anchorencode deals with links +!! input +{{anchorencode: [[hello|world]] [[hi]]}} +!! result +

    world_hi +

    +!! end + +!! test +anchorencode deals with templates +!! input +{{anchorencode: {{Foo}} }} +!! result +

    FOO +

    +!! end + +!! test +anchorencode encodes like the TOC generator: (bug 18431) +!! input +=== _ +:.3A%3A&&]] === +{{anchorencode: _ +:.3A%3A&&]] }} +__NOEDITSECTION__ +!! result +

    _ +:.3A%3A&&]]

    +

    .2B:.3A.253A.26.26.5D.5D +

    +!! end + +!! test +Bug 6200: blockquotes and paragraph formatting +!! input +
    +foo +
    + +bar + + baz +!! result +
    +

    foo +

    +
    +

    bar +

    +
    baz
    +
    +!! end + +!! test +Bug 8293: Use of center tag ruins paragraph formatting +!! input +
    +foo +
    + +bar + + baz +!! result +
    +

    foo +

    +
    +

    bar +

    +
    baz
    +
    +!! end + +!!test +Parsing of overlapping (improperly nested) inline html tags (PHP parser) +!!options +php +!!input +x +!!result +

    x</span> +

    +!!end + +!!test +Parsing of overlapping (improperly nested) inline html tags (Parsoid) +!!options +parsoid +!!input +x +!!result +

    x +

    +!!end + +### +### Language variants related tests +### +!! test +Self-link in language variants +!! options +title=[[Dunav]] language=sr +!! input +Both [[Dunav]] and [[Дунав]] are names for this river. +!! result +

    Both Dunav and Дунав are names for this river. +

    +!!end + +!! article +Дуна +!! text +content +!! endarticle + +!! test +Link to another existing title shouldn't be parsed as self-link even if it's a variant of this title +!! options +title=[[Duna]] language=sr +!! input +[[Дуна]] is not a self-link while [[Duna]] and [[Dуна]] are still self-links. +!! result +

    Дуна is not a self-link while Duna and Dуна are still self-links. +

    +!! end + +!! test +Link to a section of a variant of this title shouldn't be parsed as self-link +!! options +title=[[Duna]] language=sr +!! input +[[Dуна]] is a self-link while [[Dunа#Foo]] and [[Dуна#Foo]] are not self-links. +!! result +

    Dуна is a self-link while Dunа#Foo and Dуна#Foo are not self-links. +

    +!! end + +!! test +Link to pages in language variants +!! options +language=sr +!! input +Main Page can be written as [[Маин Паге]] +!! result +

    Main Page can be written as Маин Паге +

    +!!end + + +!! test +Multiple links to pages in language variants +!! options +language=sr +!! input +[[Main Page]] can be written as [[Маин Паге]] same as [[Маин Паге]]. +!! result +

    Main Page can be written as Маин Паге same as Маин Паге. +

    +!!end + + +!! test +Simple template in language variants +!! options +language=sr +!! input +{{тест}} +!! result +

    This is a test template +

    +!! end + + +!! test +Template with explicit namespace in language variants +!! options +language=sr +!! input +{{Template:тест}} +!! result +

    This is a test template +

    +!! end + + +!! test +Basic test for template parameter in language variants +!! options +language=sr +!! input +{{парамтест|param=foo}} +!! result +

    This is a test template with parameter foo +

    +!! end + + +!! test +Simple category in language variants +!! options +language=sr cat +!! input +[[Category:МедиаWики Усер'с Гуиде]] +!! result +MediaWiki User's Guide +!! end + + +!! article +Category:分类 +!! text +blah +!! endarticle + +!! article +Category:分類 +!! text +blah +!! endarticle + +!! test +Don't convert blue categorylinks to another variant (bug 33210) +!! options +language=zh cat +!! input +[[A]][[Category:分类]] +!! result +分类 +!! end + + +!! test +Stripping -{}- tags (language variants) +!! options +language=sr +!! input +Latin proverb: -{Ne nuntium necare}- +!! result +

    Latin proverb: Ne nuntium necare +

    +!! end + + +!! test +Prevent conversion with -{}- tags (language variants) +!! options +language=sr variant=sr-ec +!! input +Latinski: -{Ne nuntium necare}- +!! result +

    Латински: Ne nuntium necare +

    +!! end + + +!! test +Prevent conversion of text with -{}- tags (language variants) +!! options +language=sr variant=sr-ec +!! input +Latinski: -{Ne nuntium necare}- +!! result +

    Латински: Ne nuntium necare +

    +!! end + + +!! test +Prevent conversion of links with -{}- tags (language variants) +!! options +language=sr variant=sr-ec +!! input +-{[[Main Page]]}- +!! result +

    Main Page +

    +!! end + + +!! test +-{}- tags within headlines (within html for parserConvert()) +!! options +language=sr variant=sr-ec +!! input +== -{Naslov}- == +!! result +

    Naslov[уреди]

    + +!! end + + +!! test +Explicit definition of language variant alternatives +!! options +language=zh variant=zh-tw +!! input +-{zh:China;zh-tw:Taiwan}-, not China +!! result +

    Taiwan, not China +

    +!! end + + +!! test +Conversion around HTML tags +!! options +language=sr variant=sr-ec +!! input +-{H|span=>sr-ec:script;title=>sr-ec:src;}- +ski +!! result +

    +ски +

    +!! end + + +!! test +Explicit session-wise language variant mapping (A flag and - flag) +!! options +language=zh variant=zh-tw +!! input +Taiwan is not China. +But -{A|zh:China;zh-tw:Taiwan}- is China, +(This-{-|zh:China;zh-tw:Taiwan}- should be stripped!) +and -{China}- is China. +!! result +

    Taiwan is not China. +But Taiwan is Taiwan, +(This should be stripped!) +and China is China. +

    +!! end + +!! test +Explicit session-wise language variant mapping (H flag for hide) +!! options +language=zh variant=zh-tw +!! input +(This-{H|zh:China;zh-tw:Taiwan}- should be stripped!) +Taiwan is China. +!! result +

    (This should be stripped!) +Taiwan is Taiwan. +

    +!! end + +!! test +Adding explicit conversion rule for title (T flag) +!! options +language=zh variant=zh-tw showtitle +!! input +Should be stripped-{T|zh:China;zh-tw:Taiwan}-! +!! result +Taiwan +

    Should be stripped! +

    +!! end + +!! test +Testing that changing the language variant here in the tests actually works +!! options +language=zh variant=zh showtitle +!! input +Should be stripped-{T|zh:China;zh-tw:Taiwan}-! +!! result +China +

    Should be stripped! +

    +!! end + +!! test +Recursive conversion of alt and title attrs shouldn't clear converter state +!! options +language=zh variant=zh-cn showtitle +!! input +-{H|zh-cn:Exclamation;zh-tw:exclamation;}- +Should be stripped-{T|zh-cn:China;zh-tw:Taiwan}-! +!! result +China +

    +Should be stripped! +

    +!! end + +!! test +Bug 24072: more test on conversion rule for title +!! options +language=zh variant=zh-tw showtitle +!! input +This should be stripped-{T|zh:China;zh-tw:Taiwan}-! +This won't take interferes with the title rule-{H|zh:Beijing;zh-tw:Taipei}-. +!! result +Taiwan +

    This should be stripped! +This won't take interferes with the title rule. +

    +!! end + +!! test +Partly disable title conversion if variant == main language code +!! options +language=zh variant=zh title=[[ZH]] showtitle +!! input +-{T|zh-cn:CN;zh-tw:TW}- +!! result +ZH +

    +

    +!! end + +!! test +Partly disable title conversion if variant == main language code, more +!! options +language=zh variant=zh title=[[ZH]] showtitle +!! input +-{T|TW}- +!! result +ZH +

    +

    +!! end + +!! test +Raw output of variant escape tags (R flag) +!! options +language=zh variant=zh-tw +!! input +Raw: -{R|zh:China;zh-tw:Taiwan}- +!! result +

    Raw: zh:China;zh-tw:Taiwan +

    +!! end + +!! test +Nested using of manual convert syntax +!! options +language=zh variant=zh-hk +!! input +Nested: -{zh-hans:Hi -{zh-cn:China;zh-sg:Singapore;}-;zh-hant:Hello -{zh-tw:Taiwan;zh-hk:H-{ong}- K-{}-ong;}-;}-! +!! result +

    Nested: Hello Hong Kong! +

    +!! end + +!! test +Proper conversion of text in external links +!! options +language=sr variant=sr-ec +!! input +http://www.google.com +gopher://www.google.com +[http://www.google.com http://www.google.com] +[gopher://www.google.com gopher://www.google.com] +[https://www.google.com irc://www.google.com] +[ftp://www.google.com www.google.com/ftp://dir] +[//www.google.com www.google.com] +!! result +

    http://www.google.com +gopher://www.google.com +http://www.google.com +gopher://www.google.com +irc://www.google.com +www.гоогле.цом/фтп://дир +www.гоогле.цом +

    +!! end + +!! test +Do not convert roman numbers to language variants +!! options +language=sr variant=sr-ec +!! input +Fridrih IV je car. +!! result +

    Фридрих IV је цар. +

    +!! end + +!! test +Unclosed language converter markup "-{" +!! options +language=sr +!! input +-{T|hello +!! result +

    -{T|hello +

    +!! end + +!! test +Don't convert raw rule "-{R|=>}-" to "=>" +!! options +language=sr +!! input +-{R|=>}- +!! result +

    => +

    +!!end + +!! test +Bug 529: Uncovered bullet +!! input +* Foo {{bullet}} +!! result +
      +
    • Foo +
    • +
    • Bar +
    • +
    + +!! end + +# Plain MediaWiki does not remove empty lists, but tidy actually does. +# Templates in Wikipedia rely on this behavior, as tidy has always been +# enabled there. These tests are normally run *without* tidy, so specify the +# full output here. +# To test realistic parsing behavior, apply a tidy-like transformation to both +# the expected output and your parser's output. +!! test +Bug 529: Uncovered bullet leaving empty list, normally removed by tidy +!! input +******* Foo {{bullet}} +!! result +
      +
      • +
        • +
          • +
            • +
              • +
                • +
                • Foo +
                • +
                +
              • +
              +
            • +
            +
          • +
          +
        • +
        +
      • +
      +
    • +
    • Bar +
    • +
    + +!! end + +!! test +Bug 529: Uncovered table already at line-start +!! input +x + +{{table}} +y +!! result +

    x +

    + + + + + + +
    1 2 +
    3 4 +
    +

    y +

    +!! end + +!! test +Bug 529: Uncovered bullet in parser function result +!! input +* Foo {{lc:{{bullet}} }} +!! result +
      +
    • Foo +
    • +
    • bar +
    • +
    + +!! end + +!! test +Bug 5678: Double-parsed template argument +!! input +{{lc:{{{1}}}|hello}} +!! result +

    {{{1}}} +

    +!! end + +!! test +Bug 5678: Double-parsed template invocation +!! input +{{lc:{{paramtest {{!}} param = hello }} }} +!! result +

    {{paramtest | param = hello }} +

    +!! end + +!! test +Case insensitivity of parser functions for non-ASCII characters (bug 8143) +!! options +language=cs +title=[[Main Page]] +!! input +{{PRVNÍVELKÉ:ěščř}} +{{prvnívelké:ěščř}} +{{PRVNÍMALÉ:ěščř}} +{{prvnímalé:ěščř}} +{{MALÁ:ěščř}} +{{malá:ěščř}} +{{VELKÁ:ěščř}} +{{velká:ěščř}} +!! result +

    Ěščř +Ěščř +ěščř +ěščř +ěščř +ěščř +ĚŠČŘ +ĚŠČŘ +

    +!! end + +!! test +Morwen/13: Unclosed link followed by heading +!! input +[[link +==heading== +!! result +

    [[link +

    +

    heading[edit]

    + +!! end + +!! test +HHP2.1: Heuristics for headings in preprocessor parenthetical structures +!! input +{{foo| +=heading= +!! result +

    {{foo| +

    +

    heading

    + +!! end + +!! test +HHP2.2: Heuristics for headings in preprocessor parenthetical structures +!! input +{{foo| +==heading== +!! result +

    {{foo| +

    +

    heading[edit]

    + +!! end + +!! test +Tildes in comments +!! options +pst +!! input + +!! result + +!! end + +!! test +Paragraphs inside divs (no extra line breaks) +!! input +
    Line one + +Line two
    +!! result +
    Line one +Line two
    + +!! end + +!! test +Paragraphs inside divs (extra line break on open) +!! input +
    +Line one + +Line two
    +!! result +
    +

    Line one +

    +Line two
    + +!! end + +!! test +Paragraphs inside divs (extra line break on close) +!! input +
    Line one + +Line two +
    +!! result +
    Line one +

    Line two +

    +
    + +!! end + +!! test +Paragraphs inside divs (extra line break on open and close) +!! input +
    +Line one + +Line two +
    +!! result +
    +

    Line one +

    Line two +

    +
    + +!! end + +!! test +Nesting tags, paragraphs on lines which begin with
    +!! options +disabled +!! input +
    A +B +!! result +
    +

    A +B +

    +!! end + +# Bug 6200:
    should behave like
    with respect to line breaks +!! test +Bug 6200: paragraphs inside blockquotes (no extra line breaks) +!! input +
    Line one + +Line two
    +!! result +
    Line one +Line two
    + +!! end + +!! test +Bug 6200: paragraphs inside blockquotes (extra line break on open) +!! input +
    +Line one + +Line two
    +!! result +
    +

    Line one +

    +Line two
    + +!! end + +!! test +Bug 6200: paragraphs inside blockquotes (extra line break on close) +!! input +
    Line one + +Line two +
    +!! result +
    Line one +

    Line two +

    +
    + +!! end + +!! test +Bug 6200: paragraphs inside blockquotes (extra line break on open and close) +!! input +
    +Line one + +Line two +
    +!! result +
    +

    Line one +

    Line two +

    +
    + +!! end + +!! test +Paragraphs inside blockquotes/divs (no extra line breaks) +!! input +
    Line one + +Line two
    +!! result +
    Line one +Line two
    + +!! end + +!! test +Paragraphs inside blockquotes/divs (extra line break on open) +!! input +
    +Line one + +Line two
    +!! result +
    +

    Line one +

    +Line two
    + +!! end + +!! test +Paragraphs inside blockquotes/divs (extra line break on close) +!! input +
    Line one + +Line two +
    +!! result +
    Line one +

    Line two +

    +
    + +!! end + +!! test +Paragraphs inside blockquotes/divs (extra line break on open and close) +!! input +
    +Line one + +Line two +
    +!! result +
    +

    Line one +

    Line two +

    +
    + +!! end + +!! test +Interwiki links trounced by replaceExternalLinks after early LinkHolderArray expansion +!! options +wgLinkHolderBatchSize=0 +!! input +[[meatball:1]] +[[meatball:2]] +[[meatball:3]] +!! result +

    meatball:1 +meatball:2 +meatball:3 +

    +!! end + +!! test +Free external link invading image caption +!! input +[[Image:Foobar.jpg|thumb|http://x|hello]] +!! result +
    hello
    + +!! end + +!! test +Bug 15196: localised external link numbers +!! options +language=fa +!! input +[http://en.wikipedia.org/] +!! result +

    [۱] +

    +!! end + +!! test +Multibyte character in padleft +!! input +{{padleft:-Hello|7|Æ}} +!! result +

    Æ-Hello +

    +!! end + +!! test +Multibyte character in padright +!! input +{{padright:Hello-|7|Æ}} +!! result +

    Hello-Æ +

    +!! end + +!!test +formatdate parser function +!!input +{{#formatdate:2009-03-24}} +!! result +

    2009-03-24 +

    +!! end + +!!test +formatdate parser function, with default format +!!input +{{#formatdate:2009-03-24|mdy}} +!! result +

    March 24, 2009 +

    +!! end + +!! test +Spacing of numbers in formatted dates +!! input +{{#formatdate:January 15}} +!! result +

    January 15 +

    +!! end + +!! test +formatdate parser function, with default format and on a page of which the content language is always English and different from the wiki content language +!! options +language=nl title=[[MediaWiki:Common.css]] +!! input +{{#formatdate:2009-03-24|dmy}} +!! result +

    24 March 2009 +

    +!! end + +# +# +# + +# +# Edit comments +# + +!! test +Edit comment with link +!! options +comment +!! input +I like the [[Main Page]] a lot +!! result +I like the Main Page a lot +!!end + +!! test +Edit comment with link and link text +!! options +comment +!! input +I like the [[Main Page|best pages]] a lot +!! result +I like the best pages a lot +!!end + +!! test +Edit comment with link and link text with suffix +!! options +comment +!! input +I like the [[Main Page|best page]]s a lot +!! result +I like the best pages a lot +!!end + +!! test +Edit comment with section link (non-local, eg in history list) +!! options +comment title=[[Main Page]] +!! input +/* External links */ removed bogus entries +!! result +External links: removed bogus entries +!!end + +!! test +Edit comment with section link and text before it (non-local, eg in history list) +!! options +comment title=[[Main Page]] +!! input +pre-comment text /* External links */ removed bogus entries +!! result +pre-comment text External links: removed bogus entries +!!end + +!! test +Edit comment with section link (local, eg in diff view) +!! options +comment local title=[[Main Page]] +!! input +/* External links */ removed bogus entries +!! result +External links: removed bogus entries +!!end + +!! test +Edit comment with subpage link (bug 14080) +!! options +comment +subpage +title=[[Subpage test]] +!! input +Poked at a [[/subpage]] here... +!! result +Poked at a /subpage here... +!!end + +!! test +Edit comment with subpage link and link text (bug 14080) +!! options +comment +subpage +title=[[Subpage test]] +!! input +Poked at a [[/subpage|neat little page]] here... +!! result +Poked at a neat little page here... +!!end + +!! test +Edit comment with bogus subpage link in non-subpage NS (bug 14080) +!! options +comment +title=[[Subpage test]] +!! input +Poked at a [[/subpage]] here... +!! result +Poked at a /subpage here... +!!end + +!! test +Edit comment with bare anchor link (local, as on diff) +!! options +comment +local +title=[[Main Page]] +!!input +[[#section]] +!! result +#section +!! end + +!! test +Edit comment with bare anchor link (non-local, as on history) +!! options +comment +title=[[Main Page]] +!!input +[[#section]] +!! result +#section +!! end + +!! test +Anchor starting with underscore +!!input +[[#_ref|One]] +!! result +

    One +

    +!! end + +!! test +Id starting with underscore +!!input +
    +!! result +
    + +!! end + +!! test +Space normalisation on autocomment (bug 22784) +!! options +comment +title=[[Main Page]] +!!input +/* __hello__world__ */ +!! result +__hello__world__ +!! end + +!! test +percent-encoding and + signs in comments (Bug 26410) +!! options +comment +!!input +[[ABC%33D% ++]] [[ABC%33D% ++|+%20]] +!! result +ABC3D% ++ +%20 +!! end + +!! test +Bad images - basic functionality +!! options +disabled +!! input +[[File:Bad.jpg]] +!! result +!! end + +!! test +Bad images - bug 16039: text after bad image disappears +!! options +disabled +!! input +Foo bar +[[File:Bad.jpg]] +Bar foo +!! result +

    Foo bar +

    Bar foo +

    +!! end + +!! test +Verify that displaytitle works (bug #22501) no displaytitle +!! options +showtitle +!! config +wgAllowDisplayTitle=true +wgRestrictDisplayTitle=false +!! input +this is not the the title +!! result +Parser test +

    this is not the the title +

    +!! end + +!! test +Verify that displaytitle works (bug #22501) RestrictDisplayTitle=false +!! options +showtitle +title=[[Screen]] +!! config +wgAllowDisplayTitle=true +wgRestrictDisplayTitle=false +!! input +this is not the the title +{{DISPLAYTITLE:whatever}} +!! result +whatever +

    this is not the the title +

    +!! end + +!! test +Verify that displaytitle works (bug #22501) RestrictDisplayTitle=true mismatch +!! options +showtitle +title=[[Screen]] +!! config +wgAllowDisplayTitle=true +wgRestrictDisplayTitle=true +!! input +this is not the the title +{{DISPLAYTITLE:whatever}} +!! result +Screen +

    this is not the the title +

    +!! end + +!! test +Verify that displaytitle works (bug #22501) RestrictDisplayTitle=true matching +!! options +showtitle +title=[[Screen]] +!! config +wgAllowDisplayTitle=true +wgRestrictDisplayTitle=true +!! input +this is not the the title +{{DISPLAYTITLE:screen}} +!! result +screen +

    this is not the the title +

    +!! end + +!! test +Verify that displaytitle works (bug #22501) AllowDisplayTitle=false +!! options +showtitle +title=[[Screen]] +!! config +wgAllowDisplayTitle=false +!! input +this is not the the title +{{DISPLAYTITLE:screen}} +!! result +Screen +

    this is not the the title +Template:DISPLAYTITLE:screen +

    +!! end + +!! test +Verify that displaytitle works (bug #22501) AllowDisplayTitle=false no DISPLAYTITLE +!! options +showtitle +title=[[Screen]] +!! config +wgAllowDisplayTitle=false +!! input +this is not the the title +!! result +Screen +

    this is not the the title +

    +!! end + +!! test +Verify that displaytitle handles inline CSS styles (bug 26547) - rejected value +!! options +showtitle +title=[[Screen]] +!! config +wgAllowDisplayTitle=true +wgRestrictDisplayTitle=true +!! input +this is not the the title +{{DISPLAYTITLE:screen}} +!! result +screen +

    this is not the the title +

    +!! end + +!! test +Verify that displaytitle handles inline CSS styles (bug 26547) - accepted value +!! options +showtitle +title=[[Screen]] +!! config +wgAllowDisplayTitle=true +wgRestrictDisplayTitle=true +!! input +this is not the the title +{{DISPLAYTITLE:screen}} +!! result +screen +

    this is not the the title +

    +!! end + +!! test +preload: check and +!! options +preload +!! input +Hello cruelkind world. +!! result +Hello kind world. +!! end + +!! test +preload: check +!! options +preload +!! input +Goodbye Hello world +!! result +Hello world +!! end + +!! test +preload: can pass tags through if we want to +!! options +preload +!! input +<includeonly>Hello world</includeonly> +!! result +Hello world +!! end + +!! test +preload: check that it doesn't try to do tricks +!! options +preload +!! input +* ''{{world}}'' {{subst:How are you}}{{ {{{|safesubst:}}} #if:1|2|3}} +!! result +* ''{{world}}'' {{subst:How are you}}{{ {{{|safesubst:}}} #if:1|2|3}} +!! end + +!! test +Play a bit with r67090 and bug 3158 +!! options +disabled +!! input +
     
    +
     
    +
     
    +
     
    +!! result +
     
    +
     
    +
     
    +
     
    + +!! end + +!! test +HTML5 data attributes +!! input +Baz +

    Quuz

    +!! result +

    Baz +

    +

    Quuz

    + +!! end + +!! test +percent-encoding and + signs in internal links (Bug 26410) +!! input +[[User:+%]] [[Page+title%]] +[[%+]] [[%+|%20]] [[%+ ]] [[%+r]] +[[%]] [[+]] [[image:%+abc%39|foo|[[bar]]]] +[[%33%45]] [[%33%45+]] +!! result +

    User:+% Page+title% +%+ %20 %+ %+r +% + bar +3E 3E+ +

    +!! end + +!! test +Special characters in embedded file links (bug 27679) +!! input +[[File:Contains & ampersand.jpg]] +[[File:Does not exist.jpg|Title with & ampersand]] +!! result +

    File:Contains & ampersand.jpg +Title with & ampersand +

    +!! end + + +!! test +Confirm that 'apos' named character reference doesn't make it to output (not legal in HTML 4) +!! input +Text's been normalized? +!! result +

    Text's been normalized? +

    +!! end + +!! test +Bug 19052 U+3000 IDEOGRAPHIC SPACE should terminate free external links +!! input +http://www.example.org/ <-- U+3000 (vim: ^Vu3000) +!! result +

    http://www.example.org/ <-- U+3000 (vim: ^Vu3000) +

    +!! end + +!! test +Bug 19052 U+3000 IDEOGRAPHIC SPACE should terminate bracketed external links +!! input +[http://www.example.org/ ideograms] +!! result +

    ideograms +

    +!! end + +!! test +Bug 19052 U+3000 IDEOGRAPHIC SPACE should terminate external images links +!! input +http://www.example.org/pic.png <-- U+3000 (vim: ^Vu3000) +!! result +

    pic.png <-- U+3000 (vim: ^Vu3000) +

    +!! end + +!! article +Mediawiki:loop1 +!! text +{{Identical|A}} +!! endarticle + +!! article +Mediawiki:loop2 +!! text +{{Identical|B}} +!! endarticle + +!! article +Template:Identical +!! text +{{int:loop1}} +{{int:loop2}} +!! endarticle + +!! test +Bug 31098 Template which includes system messages which includes the template +!! input +{{Identical}} +!! result +

    Template loop detected: Template:Identical +Template loop detected: Template:Identical +

    +!! end + +!! test +Bug31490 Turkish: ucfirst 'blah' +!! options +language=tr +!! input +{{ucfirst:blah}} +!! result +

    Blah +

    +!! end + +!! test +Bug31490 Turkish: ucfirst 'ix' +!! options +language=tr +!! input +{{ucfirst:ix}} +!! result +

    İx +

    +!! end + +!! test +Bug31490 Turkish: lcfirst 'BLAH' +!! options +language=tr +!! input +{{lcfirst:BLAH}} +!! result +

    bLAH +

    +!! end + +!! test +Bug31490 Turkish: ucfırst (with a dotless i) +!! options +language=tr +!! input +{{ucfırst:blah}} +!! result +

    Şablon:Ucfırst:blah +

    +!! end + +!! test +Bug31490 ucfırst (with a dotless i) with English language +!! options +language=en +!! input +{{ucfırst:blah}} +!! result +

    Template:Ucfırst:blah +

    +!! end + +!! test +Bug 26375: TOC with italics +!! options +title=[[Main Page]] +!! input +__TOC__ +== ''Lost'' episodes == +!! result +

    Contents

    + +
    + +

    Lost episodes[edit]

    + +!! end + +!! test +Bug 26375: TOC with bold +!! options +title=[[Main Page]] +!! input +__TOC__ +== '''should be bold''' then normal text == +!! result + + +

    should be bold then normal text[edit]

    + +!! end + +!! test +Bug 33845: Headings become cursive in TOC when they contain an image +!! options +title=[[Main Page]] +!! input +__TOC__ +== Image [[Image:foobar.jpg]] == +!! result +

    Contents

    + +
    + +

    Image Foobar.jpg[edit]

    + +!! end + +!! test +Bug 33845 (2): Headings become bold in TOC when they contain a blockquote +!! options +title=[[Main Page]] +!! input +__TOC__ +==
    Quote
    == +!! result +

    Contents

    + +
    + +

    Quote
    [edit]

    + +!! end + +!! test +Unclosed tags in TOC +!! options +title=[[Main Page]] +!! input +__TOC__ +== Proof: 2 < 3 == +Hanc marginis exiguitas non caperet. +QED +!! result +

    Contents

    + +
    + +

    Proof: 2 < 3[edit]

    +

    Hanc marginis exiguitas non caperet. +QED +

    +!! end + +!! test +Multiple tags in TOC +!! input +__TOC__ +== Foo Bar == + +== Foo
    Bar
    == +!! result +

    Contents

    + +
    + +

    Foo Bar[edit]

    +

    Foo
    Bar
    [edit]

    + +!! end + +!! test +Tags with parameters in TOC +!! input +__TOC__ +== Hello == + +== Evilbye == +!! result +

    Contents

    + +
    + +

    Hello[edit]

    +

    b">Evilbye[edit]

    + +!! end + +!! test +span tags with directionality in TOC +!! input +__TOC__ +== C++ == + +== זבנג! == + +== The attributes on these span tags must be deleted from the TOC == + +== All attributes on these span tags must be deleted from the TOC == + +== Attributes after dir on these span tags must be deleted from the TOC == +!! result + + +

    C++[edit]

    +

    זבנג![edit]

    +

    The attributes on these span tags must be deleted from the TOC[edit]

    +

    All attributes on these span tags must be deleted from the TOC[edit]

    +

    Attributes after dir on these span tags must be deleted from the TOC[edit]

    + +!! end + +!! article +MediaWiki:Bug32057 +!! text +== {{int:headline_sample}} == +!! endarticle + +!! test +Bug 32057: Title needed when expanding nodes. +!! options +title=[[Main Page]] +!! input +{{int:Bug32057}} +!! result +

    Headline text[edit]

    + +!! end + +!! test +Strip marker in urlencode +!! input +{{urlencode:xy}} +{{urlencode:xy|wiki}} +{{urlencode:xy|path}} +!! result +

    xy +xy +xy +

    +!! end + +!! test +Strip marker in lc +!! input +{{lc:xy}} +!! result +

    xy +

    +!! end + +!! test +Strip marker in uc +!! input +{{uc:xy}} +!! result +

    XY +

    +!! end + +!! test +Strip marker in formatNum +!! input +{{formatnum:12}} +{{formatnum:12|R}} +!! result +

    12 +12 +

    +!! end + +!! test +Check noCommafy in formatNum +!! options +language=be-tarask +!! input +{{formatnum:123456.78}} +{{formatnum:123456.78|NOSEP}} +!! result +

    123 456,78 +123456.78 +

    +!! end + +!! test +Strip marker in grammar +!! options +language=fi +!! input +{{grammar:elative|foobar}} +!! result +

    foobarista +

    +!! end + +!! test +Strip marker in padleft +!! input +{{padleft:|2|xy}} +!! result +

    xy +

    +!! end + +!! test +Strip marker in padright +!! input +{{padright:|2|xy}} +!! result +

    xy +

    +!! end + +!! test +Strip marker in anchorencode +!! input +{{anchorencode:xy}} +!! result +

    xy +

    +!! end + +!! test +nowiki inside link inside heading (bug 18295) +!! input +==[[foo|xyz]]== +!! result +

    xyz[edit]

    + +!! end + +!! test +new support for bdi element (bug 31817) +!! input +

    ולדימיר לנין (ברוסית: Владимир Ленин, 24 באפריל 1870–22 בינואר 1924) הוא מנהיג פוליטי קומוניסטי רוסי.

    +!! result +

    ולדימיר לנין (ברוסית: Владимир Ленин, 24 באפריל 1870–22 בינואר 1924) הוא מנהיג פוליטי קומוניסטי רוסי.

    + +!!end + +!! test +Ignore pipe between table row attributes +!! input +{| +| quux +|- id=foo | style='color: red' +| bar +|} +!! result + + + + +
    quux +
    bar +
    + +!! end + +!!test +Gallery override link with WikiLink (bug 34852) +!! input + +File:foobar.jpg|caption|alt=galleryalt|link=InterWikiLink + +!! result + + +!! end + +!!test +Gallery override link with absolute external link (bug 34852) +!! input + +File:foobar.jpg|caption|alt=galleryalt|link=http://www.example.org + +!! result + + +!! end + +!!test +Gallery override link with malicious javascript (bug 34852) +!! input + +File:foobar.jpg|caption|alt=galleryalt|link=" onclick="alert('malicious javascript code!'); + +!! result + + +!! end + +!!test +Gallery with invalid title as link (bug 43964) +!! input + +File:foobar.jpg|link=< + +!! result + + +!! end + +!!test +Language parser function +!! input +{{#language:ar}} +!! result +

    العربية +

    +!! end + +!!test +Padleft and padright as substr +!! input +{{padleft:|3|abcde}} +{{padright:|3|abcde}} +!! result +

    abc +abc +

    +!! end + +!!test +Special parser function +!! input +{{#special:RandomPage}} +{{#special:BaDtItLe}} +{{#special:Foobar}} +!! result +

    Special:Random +Special:Badtitle +Special:Foobar +

    +!! end + +!!test +Bug 34939 - Case insensitive link parsing ([HttP://]) +!! input +[HttP://MediaWiki.Org/] +!! result +

    [1] +

    +!! end + +!!test +Bug 34939 - Case insensitive link parsing ([HttP:// title]) +!! input +[HttP://MediaWiki.Org/ MediaWiki] +!! result +

    MediaWiki +

    +!! end + +!!test +Bug 34939 - Case insensitive link parsing (HttP://) +!! input +HttP://MediaWiki.Org/ +!! result +

    HttP://MediaWiki.Org/ +

    +!! end + +!!test +Disable TOC +!! options +notoc +!! input +Lead +== Section 1 == +== Section 2 == +== Section 3 == +== Section 4 == +== Section 5 == +!! result +

    Lead +

    + +

    Section 1[edit]

    +

    Section 2[edit]

    +

    Section 3[edit]

    +

    Section 4[edit]

    +

    Section 5[edit]

    + +!! end + + +### +### Parsoids-specific tests +### Parsoid-PHP parser incompatibilities +### +!!test +1. SOL-sensitive wikitext tokens as template-args +!!options +parsoid=wt2html,wt2wt +!!input +{{echo|*a}} +{{echo|#a}} +{{echo|:a}} +!!result + +
    • a
    • +
    + +
    1. a
    2. +
    + +
    a
    +
    +!!end + +#### ---------------------------------------------------------------- +#### Parsoid-only testing of Parsoid's impl of and +#### tags. Parsoid's output for these tags differs from that of the +#### PHP parser. +#### ---------------------------------------------------------------- + +!!test +Ref: 1. ref-location should be replaced with an index span +!!options +parsoid +!!input +A foo +B foo +C +!!result +

    A [1] +B [2] +C [3]

    +!!end + +!!test +Ref: 2. ref-tags with identical names should all get the same index +!!options +parsoid +!!input +A foo +B +!!result +

    A [1] +B [1]

    +!!end + +!!test +Ref: 3. spaces in ref-names should be ignored +!!options +parsoid +!!input +A foo +B +C +!!result +

    A [1] +B [1] +C [1]

    +!!end + +!!test +Ref: 4. 'constructor' should be accepted as a valid ref-name +(NOTE: constructor is a predefined property in JS and constructor as a ref-name can clash with it if not handled properly) +!!options +parsoid +!!input +A foo +!!result +

    A [1]

    +!!end + +!!test +Ref: 5. body should accept generic wikitext +!!options +parsoid +!!input +A + This is a '''[[bolded link]]''' and this is a {{echo|transclusion}} + + + +!!result +

    A [1]

    + +
      +
    1. This is a bolded link and this is a transclusion +
    2. +
    +!!end + +!!test +Ref: 6. indent-pres should not be output in ref-body +!!options +parsoid +!!input +A + foo + bar + baz + + + +!!result +

    A [1]

    + +
      +
    1. foo + bar + baz +
    2. +
    +!!end + +!!test +Ref: 7. No p-wrapping in ref-body +!!options +parsoid +!!input +A +foo + +bar + + +baz + + + +booz + + + +!!result +

    A [1]

    + +
      +
    1. foo + +bar + + +baz + + + +booz +
    2. +
    +!!end + +!!test +Ref: 8. transclusion wikitext has lower precedence +!!options +parsoid +!!input +A foo {{echo| B C}} + + +!!result +

    A [1] B C}}

    + +
      +
    1. foo {{echo|
    2. +
    +!!end + +!!test +Ref: 9. unclosed comments should not leak out of ref-body +!!options +parsoid +!!input +A foo "},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref">[1] B C

    + +
      +
    1. foo
    2. +
    +!!end + +!!test +Ref: 10. Unclosed HTML tags should not leak out of ref-body +!!options +parsoid +!!input +A foo B C + + +!!result +

    A [1] B C

    + +
      +
    1. foo
    2. +
    +!!end + +!!test +Ref: 11. ref-tags acts like an inline element wrt P-wrapping +!!options +parsoid +!!input +A foo B +C bar D +!!result +

    A [1] B +C [2] D

    +!!end + +!!test +Ref: 12. ref-tags act as trailing newline migration barrier +!!options +parsoid +!!input +a + +b + + +c +!!result +

    a

    + + +

    b [1] +[2]

    + + +

    c

    +!!end + +!!test +Ref: 13. ref-tags are not SOL-transparent and block indent-pres +!!options +parsoid +!!input +foo A +bar + B +!!result +

    [1] A +[2] B

    +!!end + +!!test +Ref: 14. A nested ref-tag should be emitted as plain text +!!options +parsoid +!!input +foo bar baz + + +!!result +

    [1]

    + +
      +
    1. foo <ref>bar</ref> baz
    2. +
    +!!end + +!!test +Ref: 15. ref-tags with identical names should get identical indexes +!!options +parsoid +!!input +A1 foo A2 +B1 B2 bar + + +!!result +

    A1 [1] A2 [1] +B1 [2] B2 [2]

    + +
    1. 1.0 1.1 foo
    2. 2.0 2.1 bar
    3. +
    +!!end + +!!test +References: 1. references tag without any refs should be handled properly +!!options +parsoid +!!input + +!!result +
      +!!end + +!!test +References: 2. references tag with group only outputs references from that group +!!options +parsoid +!!input +A foo +B bar + + +!!result +

      A [a 1] +B [b 1]

      + +
      1. foo
      2. +
      +!!end + +!!test +References: 3. ref list should be cleared after processing references +!!options +parsoid +!!input +A foo + + + +B bar + + +!!result +

      A [1]

      + +
      1. foo
      2. +
      + +

      B [1]

      + +
      1. bar
      2. +
      +!!end + +!!test +References: 4. only referenced group should be cleared after processing references +!!options +parsoid +!!input +A afoo +B bfoo + + + +C cfoo + + +!!result +

      A [a 1] +B [1]

      + +
      1. afoo
      2. +
      + +

      C [2]

      + +
      1. bfoo
      2. cfoo
      3. +
      +!!end + +!!test +References: 5. ref tags in references should be processed while ignoring all other content +!!options +parsoid +!!input +A +B bar + + +foo +This should just get lost. + +!!result +

      A [1] +B [2]

      + +
      1. foo
      2. bar
      3. +
      +!!end + +!!test +References: 6. from a transclusion +!!options +parsoid +!!input +{{echo|}} +!!result +
        +!!end + +!! test +References: 7. Multiple references tags (one without and one with nested refs) should be correctly handled +!! options +parsoid +!! input +A foo bar for a +B + + + + +foo + +!! result +

        A [1] +B [2]

        + +
          +
        1. foo bar for a
        2. +
        3. +
        + +
          +
        1. foo
        2. +
        +!! end + +#### ---------------------------------------------------------------- +#### The following section of tests are primarily to test +#### wikitext escaping capabilities of Parsoid. Given that +#### escaping can be done any number of ways, the wikitext (input) +#### is always adjusted to reflect how Parsoid adds nowiki +#### escape tags. +#### +#### We are marking several tests as parsoid-only since the +#### HTML in the result section is different from what the +#### PHP parser generates for it. +#### ---------------------------------------------------------------- + + +#### --------------- Headings --------------- +#### 0. Unnested +#### 1. Nested inside html

        =foo=

        +#### 2. Outside heading nest on a single line

        foo

        *bar +#### 3. Nested inside html with wikitext split by html tags +#### 4. No escape needed +#### 5. Empty headings

        +#### 6. Heading chars in SOL context +#### ---------------------------------------- +!! test +Headings: 0. Unnested +!! options +parsoid +!! input +=foo= + + =foo= + +=foo= + +=foo''a''= +!! result +

        =foo=

        + +

        =foo= + +=foo=

        + +

        =fooa=

        +!!end + +!! test +Headings: 1. Nested inside html +!! options +parsoid +!! input +==foo== + +===foo=== + +====foo==== + +=====foo===== + +======foo====== + +=======foo======= +!! result +

        =foo=

        +

        =foo=

        +

        =foo=

        +

        =foo=

        +
        =foo=
        +
        =foo=
        +!!end + +!! test +Headings: 2. Outside heading nest on a single line

        foo

        *bar +!! options +parsoid +!! input +=foo= +*bar + +=foo= +=bar + +=foo= +=bar= +!! result +

        foo

        *bar +

        foo

        =bar +

        foo

        =bar= +!!end + +!! test +Headings: 3. Nested inside html with wikitext split by html tags +!! options +parsoid +!! input +=='''bold'''foo== +!! result +

        =boldfoo=

        +!!end + +!! test +Headings: 4a. No escaping needed (testing just h1 and h2) +!! options +parsoid +!! input +==foo= + +=foo== + += =foo= = + +==foo= bar= + +===foo== + +==foo=== + +=''=''foo== + +=== +!! result +

        =foo

        +

        foo=

        +

        =foo=

        +

        =foo= bar

        +

        =foo

        +

        foo=

        +

        =foo=

        +

        =

        +!!end + +!! test +Headings: 4b. No escaping needed (inside p-tags) +!! options +parsoid +!! input +=== +=foo= x +=foo= +!! result +

        === +=foo= x +=foo= +

        +!!end + +!! test +Headings: 5. Empty headings +!! options +parsoid +!! input +== + +==== + +====== + +======== + +========== + +============ +!! result +

        +

        +

        +

        +
        +
        +!!end + +!! test +Headings: 6a. Heading chars in SOL context (with trailing spaces) +!! options +parsoid +!! input +=a= + +=a= + +=a= + +=a= +!! result +

        =a=

        +

        =a=

        +

        =a=

        +

        =a=

        +!!end + +!! test +Headings: 6b. Heading chars in SOL context (with trailing newlines) +!! options +parsoid +!! input +=a= +b + +=a= +b + +=a= +b + +=a= +b +!! result +

        =a= +b

        +

        =a= +b

        +

        =a= +b

        +

        =a= +b

        +

        +!!end + +!! test +Headings: 6c. Heading chars in SOL context (leading newline break) +!! options +parsoid +!! input +a +=b= +!! result +

        a +=b=

        +!!end + +!! test +Headings: 6d. Heading chars in SOL context (with interspersed comments) +!! options +parsoid +!! input +=a= + +=a= +!! result +

        =a=

        +

        =a=

        +!!end + +!! test +Headings: 6d. Heading chars in SOL context (No escaping needed) +!! options +parsoid=html2wt +!! input +=a=
        b
        +!! result +=a=
        b
        +!!end + +#### --------------- Lists --------------- +#### 0. Outside nests (*foo, etc.) +#### 1. Nested inside html
        • *foo
        +#### 2. Inside definition lists +#### 3. Only bullets at start should be escaped +#### 4. No escapes needed +#### 5. No unnecessary escapes +#### 6. Escape bullets in SOL position +#### 7. Escape bullets in a multi-line context +#### ---------------------------------------- + +!! test +Lists: 0. Outside nests +!! input +*foo + +#foo +!! result +

        *foo +

        #foo +

        +!!end + +!! test +Lists: 1. Nested inside html +!! input +**foo + +*#foo + +*:foo + +*;foo + +#*foo + +##foo + +#:foo + +#;foo +!! result +
          +
        • *foo +
        • +
        +
          +
        • #foo +
        • +
        +
          +
        • :foo +
        • +
        +
          +
        • ;foo +
        • +
        +
          +
        1. *foo +
        2. +
        +
          +
        1. #foo +
        2. +
        +
          +
        1. :foo +
        2. +
        +
          +
        1. ;foo +
        2. +
        + +!!end + +!! test +Lists: 2. Inside definition lists +!! input +;;foo + +;:foo + +;:foo +:bar + +::foo +!! result +
        +
        ;foo +
        +
        +
        +
        :foo +
        +
        +
        +
        :foo +
        +
        bar +
        +
        +
        +
        :foo +
        +
        + +!!end + +!! test +Lists: 3. Only bullets at start of text should be escaped +!! input +**foo*bar + +**foo''it''*bar +!! result +
          +
        • *foo*bar +
        • +
        +
          +
        • *fooit*bar +
        • +
        + +!!end + +!! test +Lists: 4. No escapes needed +!! options +parsoid +!! input +*foo*bar + +*''foo''*bar + +*[[Foo]]: bar +!! result +
          +
        • foo*bar +
        • +
        +
          +
        • foo*bar +
        • +
        + +!!end + +!! test +Lists: 5. No unnecessary escapes +!! input +* bar [[foo]] + +*=bar [[foo]] + +*[[bar [[foo]] + +*]]bar [[foo]] + +*=bar foo]]= + +* : a +!! result +
          +
        • bar [[foo]] +
        • +
        +
          +
        • =bar [[foo]] +
        • +
        +
          +
        • [[bar [[foo]] +
        • +
        +
          +
        • ]]bar [[foo]] +
        • +
        +
          +
        • =bar foo]]= +
        • +
        +
          +
        • : a +
        • +
        + +!!end + +!! test +Lists: 6. Escape bullets in SOL position +!! options +parsoid +!! input +*foo +!! result +

        *foo

        +!!end + +!! test +Lists: 7. Escape bullets in a multi-line context +!! input +a +*b +!! result +

        a +*b +

        +!!end + +#### --------------- HRs --------------- +#### 1. Single line +#### ----------------------------------- + +!! test +HRs: 1. Single line +!! options +parsoid +!! input +-------- +----=foo= +----*foo +!! result +
        ---- +
        =foo= +
        *foo +!! end + +#### --------------- Tables --------------- +#### 1a. Simple example +#### 1b. No escaping needed (!foo) +#### 1c. No escaping needed (|foo) +#### 1d. No escaping needed (|}foo) +#### +#### 2a. Nested in td (foo|bar) +#### 2b. Nested in td (foo||bar) +#### 2c. Nested in td -- no escaping needed(foo!!bar) +#### +#### 3a. Nested in th (foo!bar) +#### 3b. Nested in th (foo!!bar) +#### 3c. Nested in th -- no escaping needed(foo||bar) +#### +#### 4a. Escape - +#### 4b. Escape + +#### 4c. No escaping needed +#### -------------------------------------- + +!! test +Tables: 1a. Simple example +!! input +{| +|} +!! result +

        {| +|} +

        +!! end + +!! test +Tables: 1b. No escaping needed +!! input +!foo +!! result +

        !foo +

        +!! end + +!! test +Tables: 1c. No escaping needed +!! input +|foo +!! result +

        |foo +

        +!! end + +!! test +Tables: 1d. No escaping needed +!! input +|}foo +!! result +

        |}foo +

        +!! end + +!! test +Tables: 2a. Nested in td +!! options +parsoid +!! input +{| +|foo|bar +|} +!! result + +
        foo|bar
        +!! end + +!! test +Tables: 2b. Nested in td +!! options +parsoid +!! input +{| +|foo||bar +|''it''foo||bar +|} +!! result + + +
        foo||baritfoo||bar
        +!! end + +!! test +Tables: 2c. Nested in td -- no escaping needed +!! options +parsoid +!! input +{| +|foo!!bar +|} +!! result +
        foo!!bar +
        + +!! end + +!! test +Tables: 3a. Nested in th +!! options +parsoid +!! input +{| +!foo!bar +|} +!! result +
        foo!bar +
        + +!! end + +!! test +Tables: 3b. Nested in th +!! options +parsoid +!! input +{| +!foo!!bar +|} +!! result + + +
        foo!!bar
        +!! end + +!! test +Tables: 3c. Nested in th -- no escaping needed +!! options +parsoid +!! input +{| +!foo||bar +|} +!! result + +
        foo||bar
        +!! end + +!! test +Tables: 4a. Escape - +!! options +parsoid +!! input +{| +!-bar +|- +|-bar +|} +!! result + + + +
        -bar
        -bar
        +!! end + +!! test +Tables: 4b. Escape + +!! options +parsoid +!! input +{| +!+bar +|- +|+bar +|} +!! result + + + +
        +bar
        +bar
        +!! end + +!! test +Tables: 4c. No escaping needed +!! options +parsoid +!! input +{| +|foo-bar +|foo+bar +|- +|''foo''-bar +|''foo''+bar +|- +|foo +bar|baz ++bar +-bar +|} +!! result + + + + +
        foo-barfoo+bar
        foo-barfoo+bar
        foo +

        bar|baz ++bar +-bar

        +!! end + +### SSS FIXME: Disabled right now because accurate html2wt +### on this snippet requires data-parsoid flags that we've +### stripped out of these tests. We should scheme how we +### we want to handle these kind of tests that require +### data-parsoid flags for accurate html2wt serialization + +!! test +Tables: 4d. No escaping needed +!! options +disabled +!! input +{| +||+1 +||-2 +|} +!! result + + + +
        +1 +-2 +
        + +!! end + +#### --------------- Links ---------------- +#### 1. Quote marks in link text +#### 2. Wikilinks: Escapes needed +#### 3. Wikilinks: No escapes needed +#### 4. Extlinks: Escapes needed +#### 5. Extlinks: No escapes needed +#### -------------------------------------- +!! test +Links 1. Quote marks in link text +!! options +parsoid +!! input +[[Foo|Foo''boo'']] +!! result +Foo''boo'' +!! end + +!! test +Links 2. WikiLinks: Escapes needed +!! options +parsoid +!! input +[[Foo|[Foobar]]] +[[Foo|Foobar]]] +[[Foo|x [Foobar] x]] +[[Foo|x [http://google.com g] x]] +[[Foo|[[Bar]]]] +[[Foo|x [[Bar]] x]] +[[Foo||Bar]] +[[Foo|]]bar]] +[[Foo|[[bar]] +[[Foo|x ]] y [[ z]] +!! result +[Foobar] +Foobar] +x [Foobar] x +x [http://google.com g] x +[[Bar]] +x [[Bar]] x +|Bar +]]bar +[[bar +x ]] y [[ z +!! end + +!! test +Links 3. WikiLinks: No escapes needed +!! options +parsoid +!! input +[[Foo|[Foobar]] +[[Foo|foo|bar]] +!! result +[Foobar +foo|bar +!! end + +!! test +Links 4. ExtLinks: Escapes needed +!! options +parsoid +!! input +[http://google.com [google]] +[http://google.com google]] +!! result +[google] +google] +!! end + +!! test +Links 5. ExtLinks: No escapes needed +!! options +parsoid +!! input +[http://google.com [google] +!! result +[google +!! end + +#### --------------- Quotes --------------- +#### 1. Quotes inside and +#### 2. Link fragments separated by and tags +#### 3. Link fragments inside and +#### 4. No escaping needed +#### -------------------------------------- +!! test +1. Quotes inside and +!! options +parsoid=html2wt,wt2wt +!! input +'''foo''' +''''foo'''' +'''''foo''''' +''foo'''s +''''foo'''' +'''''foo''''' +''''''foo'''''' +'''foo'''bar'''baz''' +'''foo''''s +'''foo'' +''foo''' +'''foo''' +''''foo''' +'''foo'''' +''''foo'''' +!! result +

        'foo' +''foo'' +'''foo''' +foo's +'foo' +''foo'' +'''foo''' +foo'bar'baz +foo's +'foo +foo' +'foo' +'foo +foo' +'foo'

        +!! end + +!! test +2. Link fragments separated by and tags +!! input +[[''foo''hello]] + +[['''foo'''hello]] +!! result +

        [[foohello]] +

        [[foohello]] +

        +!! end + +!! test +3. Link fragments inside and +(FIXME: Escaping one or both of [[ and ]] is also acceptable -- + this is one of the shortcomings of this format) +!! input +''[[foo'']] + +'''[[foo''']] +!! result +

        [[foo]] +

        [[foo]] +

        +!! end + +!! test +4. No escaping needed +!! input +'''bar''' +''''bar'''' +!! result +

        'bar' +'bar' +

        +!! end + +#### ----------- Paragraphs --------------- +#### 1. No unnecessary escapes +#### -------------------------------------- + +!! test +1. No unnecessary escapes +!! input +bar [[foo]] + +=bar [[foo]] + +[[bar [[foo]] + +]]bar [[foo]] + +=bar foo]]= +!! result +

        bar [[foo]] +

        =bar [[foo]] +

        [[bar [[foo]] +

        ]]bar [[foo]] +

        =bar foo]]= +

        +!!end + +#### ----------------------- PRE -------------------------- +#### 1. Leading whitespace in SOL context should be escaped +#### ------------------------------------------------------ +!! test +1. Leading whitespace in SOL context should be escaped +!! options +parsoid +!! input + a + + a + + a(tab) + + a + + a + +a + b + +a + b + +a + b +!! result +

        a

        +

        a

        +

        a(tab)

        +

        a

        +

        a

        +

        a + b

        +

        a + b

        +

        a + b

        +!! end + +#### --------------- Behavior Switches -------------------- +!! test +1. Valid behavior switches should be escaped +!! options +parsoid=html2wt +!! input +__TOC__ +!! result +__TOC__ +!! end + +!! test +2. Invalid behavior switches should not be escaped +!! options +parsoid=html2wt +!! input +__TOO__ +__|__ +!! result +__TOO__ +__|__ +!! end + +#### --------------- HTML tags --------------- +#### 1. a tags +#### 2. other tags +#### 3. multi-line html tag +#### ----------------------------------------- +!! test +1. a tags +!! options +parsoid +!! input +google +!! result +<a href="http://google.com">google</a> +!! end + +!! test +2. other tags +!! input +
        foo
        +
        foo
        +!! result +

        <div>foo</div> +<div style="color:red">foo</div> +

        +!! end + +!! test +3. multi-line html tag +!! input +
        foo
        +!! result +

        <div +>foo</div +> +

        +!! end + +!! test +4. extension tags +!! input +foo +!! result +

        <ref>foo</ref> +

        +!! end + +#### --------------- Others --------------- +!! test +Escaping nowikis +!! input +<nowiki>foo</nowiki> +!! result +

        <nowiki>foo</nowiki> +

        +!! end + +## The quote-char in the input is necessary for triggering the bug +!! test +(Bug 52035) Nowiki-escaping should not get tripped by " :" in text +!! options +parsoid=wt2wt,html2wt +!! input +foo's bar : +!! result +

        foo's bar :

        +!! end + +!! test + +Tag-like HTML structures are passed through as text +!! input + + + + + + +1>2 + +xb + +1f +!! result +

        <x y> +

        <x.y> +

        <x-y> +

        1>2 +

        x<y +

        a>b +

        1<d e>f +

        +!! end + + +# This was a bug in the PHP parser (see bug 17663 and its dups, +# https://bugzilla.wikimedia.org/show_bug.cgi?id=17663) +!! test +Tag names followed by punctuation should not be recognized as tags +!! input + text +!! result +

        <s.ome> text +

        +!! end + +!! test +HTML tag with necessary entities in attributes +!! input +foo +!! result +

        foo +

        +!! end + +!! test +HTML tag with 'unnecessary' entity encoding in attributes +!! input +foo +!! result +

        foo +

        +!! end + +!! test +HTML tag with broken attribute value quoting +!! input +Foo +!! result +

        Foo +

        +!! end + +!! test +Table with broken attribute value quoting +!! input +{| +| title="Hello world|Foo +|} +!! result + + +
        Foo +
        + +!! end + +!! test +Table with broken attribute value quoting on consecutive lines +!! input +{| +| title="Hello world|Foo +| style="color:red|Bar +|} +!! result + + + +
        Foo +Bar +
        + +!! end + +!! test +Parsoid-only: Table with broken attribute value quoting on consecutive lines +!! options +parsoid +!! input +{| +| title="Hello world|Foo +| style="color:red|Bar +|} +!! result + + +
        Foo +Bar +
        + +!! end + +!! test +Parsoid-only: Don't wrap broken template tags in on wt2wt (Bug 42353) +!! options +parsoid +!! input +{{}} +!! result +{{}} +!! end + +!! test +Parsoid-only: Don't wrap broken template tags in on wt2wt (Bug 42353) +!! options +parsoid +!! input +}}{{ +!! result +}}{{ +!! end + +!!test +Accept empty td cell attribute +!!input +{| +| align="center" | foo || | +|} +!!result + + + +
        foo +
        + +!!end + +!!test +Non-empty attributes in th-cells +!!input +{| +! Foo !! style="color: red" | Bar +|} +!!result + + + +
        Foo Bar +
        + +!!end + +!!test +Accept empty attributes in th-cells +!!input +{| +!| foo !!| bar +|} +!!result + + + +
        foo bar +
        + +!!end + +!!test +Empty table rows go away +!!input +{| +| Hello +| there +|- class="foo" +|- +|} +!! result + + + + + +
        Hello + there +
        + +!! end + +### +### Parsoid-centric tests for testing RTing of inter-element separators +### Edge cases not tested by existing parser tests and specific to +### Parsoid-specific serialization strategies. +### + +!!test +RT-ed inter-element separators should be valid separators +!!input +{| +|- [[foo]] +|} +!!result + + +
        + +!!end + +!!test +Trailing newlines in a deep dom-subtree that ends a wikitext line should be migrated out +(Parsoid-only since PHP parser relies on Tidy for correct output) +!!options +parsoid +!!input +{| +|foo +bar +|} + +{| +|foo +|} +!!result +!!end + +!!test +Empty TD followed by TD with tpl-generated attribute +!!input +{| +|- +| +|{{echo|style='color:red'}}|foo +|} +!!result + + + + +
        +foo +
        + +!!end + +!!test +Indented table with an empty td +!!input + {| + |- + | + |foo + |} +!!result + + + + +
        +foo +
        + +!!end + +!!test +Empty TR followed by a template-generated TR +(Parsoid-specific since PHP parser doesn't handle this mixed tbl-wikitext) +!!options +parsoid +!!input +{| +|- +{{echo|foo}} +|} +!!result + + + + + +
        foo
        +!!end + +## PHP and parsoid output differ for this, and since this is primarily +## for testing Parsoid's serializer, marking this Parsoid only +!!test +Empty TR followed by mixed-ws-comment line should RT correctly +!!options +parsoid +!!input +{| +|- + +|- + +|} +!!result + + + + + + +
        + +!!end + +!!test +Multi-line image caption generated by templates with/without trailing newlines +!!options +parsoid +!!input +[[File:foo.jpg|thumb|300px|foo\n{{echo|A}}\n{{echo|B}}\n{{echo|C}}]] +[[File:foo.jpg|thumb|300px|foo\n{{echo|A}}\n{{echo|B}}\n{{echo|C}}\n\n]] +!!result +
        File:Foo.jpg
        foo\nA\nB\nC
        +
        File:Foo.jpg
        foo\nA\nB\nC\n\n
        + +!!end + +## PHP emits broken html for this, and since this is primarily +## a Parsoid serializer test, marking this Parsoid only +!!test +Improperly nested inline or quotes tags with whitespace in between +!!options +parsoid +!!input + x +''' ''x''' '' +!!result +

        x + x +

        +!!end + +!!test +Encapsulate protected attributes from wt +!!options +parsoid +!!input +
        foo
        +!!result +
        foo
        + +!!end + +## Currently the p-wrapper is fragile in how adds / removes transformations. +## Having nested or stray pre tags results in the attempt to add duplicates, +## causing an assertion fail. This test tries to prevent that situation. +!!test +Ensure ParagraphWrapper can deal with stray closing pre tags +!!options +parsoid=wt2html +!!input +plain text
        +!!result +plain text +!!end + +!!test +Ensure fostered text content is wrapped in spans +!!options +parsoid=wt2html +!!input +hi
        ho
        +!!result +hi +
        +ho +
        +!!end + +!!test +Encapsulation properly handles null DSR information from foster box +!!options +parsoid=wt2html,wt2wt +!!input +{{echo|foo
        bar
        }} +!!result +foo + + + +
        bar
        +!!end + +!!test +1. Encapsulate foster-parented transclusion content +!!options +parsoid=wt2wt,wt2html +!!input +{{echo|foo}}
        bar
        +!!result +foo + + + +
        bar
        +!!end + +!!test +2. Encapsulate foster-parented transclusion content +!!options +parsoid=wt2wt,wt2html +!!input +
        {{echo|foo}}
        bar
        +!!result +
        foo
        + + + +
        bar
        +!!end + +!!test +3. Encapsulate foster-parented transclusion content +!!options +parsoid=wt2wt,wt2html +!!input +

        {{echo|foo

        }}bar
        +!!result +
        +

        foo

        + + + +
        bar
        +!!end + +!!test +4. Encapsulate foster-parented transclusion content +!!options +parsoid=wt2wt,wt2html +!!input +

        {{echo|foo

        }}bar
        +!!result +
        +

        foo

        + + + +
        bar
        +!!end + +!!test +5. Encapsulate foster-parented transclusion content +!!options +parsoid=wt2wt,wt2html +!!input +foo}}

        {{echo|foo

        +!!result +foo + + + +
        +
        +

        foo

        +!!end + +!!test +6. Encapsulate foster-parented transclusion content +!!options +parsoid=wt2wt,wt2html +!!input +foo

        {{echo|foo

        }}

        ok

        +!!result +foo + + + +
        +
        +

        foo

        +

        ok

        +!!end + +!!test +7. Encapsulate foster-parented transclusion content +!!options +parsoid=wt2wt,wt2html +!!input +{{echo|

        foo

        }}
        bar
        +!!result +

        foo

        + + + +
        bar
        +!!end + +!!test +8. Encapsulate foster-parented transclusion content +!!options +parsoid=wt2wt,wt2html +!!input +{{echo|a +}}{|{{echo|style='color:red'}} +|- +|b +|} +!!result +

        a

        {{{1}}} + + + +
        b
        +!!end + +# ----------------------------------------------------------------- +# The following section of tests are primarily to spec requirements +# around serialization of new/edited content. +# +# All these tests are marked Parsoid html2wt and html2html only +# ---------------------------------------------------------------- + +!! test +Image: Modifying size of an image +!! options +parsoid=html2wt +!! input +[[Image:Wiki.png|230x230px]] +!! result +

        +!!end + +!! test +Image: New block level image should have \n before and after +!! options +parsoid=html2wt +!! input +123 +[[File:Wiki.png|right|thumb|150x150px]] +456 +!! result +

        123

        456

        +!!end + +# Wacky -- the leading newline in input is required because +# that is what the serializer emits. To be fixed. Not fixing +# the test because this test is required to test serialization of +# new content and preferred whitespace style. +!! test +Lists: Serialize correctly even when list content is wrapped in p-tags (like VE does) +!! options +parsoid=html2wt +!! input + +* foo +!! result +
          +
        • foo

        • +
        +!! end + +# Wacky -- the leading newline in input is required because +# that is what the serializer emits. To be fixed. Not fixing +# the test because this test is required to test serialization of +# new content and preferred whitespace style. +!! test +Lists: Add space after bullets +!! options +parsoid=html2wt +!! input + +* foo +* bar +* baz +!! result +
          +
        • foo
        • +
        • bar
        • +
        • baz
        • +
        +!! end + +!! test +Parsoid: Serialize positional parameters with = in them as named parameter +!! options +parsoid=html2wt +!! input +{{echo|1 = f=oo}} + +{{echo|1 = f=oo|2 = bar}} + + + +{{echo|f=oo|bar}} +!! result +

        foo

        + +

        foo

        + + + +

        foo

        +!! end + +!! test +Parsoid: Correctly serialize block-node children when they are a combination of text and p-nodes +!! options +parsoid=html2wt +!! input +
        a +b +
        +
        a +b +
        +
        +a + +b +
        +!! result +
        a

        b

        +
        a +

        b

        +
        +a +

        b

        +!! end + +#----------------------------- +# I/B quote minimization tests +#----------------------------- + +!! test +1. I/B quote minimization: wikitext-only tags should be combined +!! options +parsoid=html2wt +!! input +''AB'' + +'''AB''' + +''A'''B''''' + +'''A''B''''' + +'''A''BC''D''' + +'''''AB''''' + +'''''AB''''' + +'''''AB''''' +!! result +

        AB

        +

        AB

        +

        AB

        +

        AB

        +

        ABCD

        +

        AB

        +

        AB

        +

        AB

        +!! end + +!! test +2. I/B quote minimization: wikitext and html tags should not be combined +!! options +parsoid=html2wt +!! input +''A''B + +''A'''''B''' +!! result +

        AB

        +

        AB

        +!! end + +!! test +3. I/B quote minimization: templated content stops minimization +!! options +parsoid=html2wt +!! input +''A''{{echo|''B''}} + +''A''{{echo|'''''B'''''}} +!! result +

        AB +

        AB +!! end + +!! test +4. I/B quote minimization: new content should be mimimized with adjacent old content +!! options +parsoid=html2wt +!! input +''AB'' + +'''AB''' + +''A'''B''''' +!! result +

        AB

        +

        AB

        +

        AB

        +!! end + +# ----------------------------------------------------------------- +# End of section for Parsoid-only html2wt tests for serialization +# of new content +# ----------------------------------------------------------------- + +TODO: +more images +more tables +character entities +and much more +Try for 100% code coverage -- cgit v1.2.2