###
!! test
Blank input
-!! input
-!! result
+!! wikitext
+!! html
!! end
!! test
Simple paragraph
-!! input
+!! wikitext
This is a simple paragraph.
-!! result
+!! html
<p>This is a simple paragraph.
</p>
!! end
!! test
Paragraphs with extra newline spacing
-!! input
+!! wikitext
foo
bar
booz
-!! result
+!! html
<p>foo
</p><p>bar
</p><p><br />
!! test
Paragraphs with newline spacing with comment lines in between
-!! input
+!! wikitext
----
a
<!--foo-->
<!--foo-->
b
----
-!! result
+!! html
<hr />
<p>a
b
!! test
Paragraphs with newline spacing with non-empty white-space lines in between
-!! input
+!! wikitext
----
a
b
----
-!! result
+!! html
<hr />
<p>a
</p><p>b
!! test
Paragraphs with newline spacing with non-empty mixed comment and white-space lines in between
-!! input
+!! wikitext
----
a
<!--foo-->
b
----
-!! result
+!! html
<hr />
<p>a
b
!! test
Extra newlines: More paragraphs with indented comment
-!! input
+!! wikitext
a
<!--boo-->
b
-!!result
+!! html
<p>a
</p><p><br />
b
!! test
Extra newlines followed by heading
-!! input
+!! wikitext
a
=b=
-!! result
+!! html
<p>a
</p><p><br />
</p>
!! test
Extra newlines between heading and content are swallowed
-!! input
+!! wikitext
=b=
[[a]]
-!! result
+!! html
<h1><span class="mw-headline" id="b">b</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: b">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
<p><a href="/index.php?title=A&action=edit&redlink=1" class="new" title="A (page does not exist)">a</a>
</p>
!! test
Parsing an URL
-!! input
+!! wikitext
http://fr.wikipedia.org/wiki/🍺
<!-- EasterEgg we love beer, better be able be able to link to it -->
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://fr.wikipedia.org/wiki/🍺">http://fr.wikipedia.org/wiki/🍺</a>
</p>
!! end
!! test
Simple list
-!! input
+!! wikitext
* Item 1
* Item 2
-!! result
+!! html
<ul>
<li> Item 1
</li>
!! test
Italics and bold
-!! input
+!! wikitext
* plain
* plain''italic''plain
* plain''italic''plain''italic''plain
* plain'''bold''bold-italic'''''plain
* plain l'''italic''plain
* plain l''''bold''' plain
-!! result
+!! html
<ul>
<li> plain
</li>
# this example taken from the [[simple:Moon]] article (bug 47326)
!! test
Italics and possessives (1)
-!! input
+!! wikitext
obtained by ''[[Lunar Prospector]]'''s gamma-ray spectrometer
-!! result
+!! html
<p>obtained by <i><a href="/index.php?title=Lunar_Prospector&action=edit&redlink=1" class="new" title="Lunar Prospector (page does not exist)">Lunar Prospector</a>'</i>s gamma-ray spectrometer
</p>
!! end
# this example taken from [[en:Flaming Pie]] (bug 49926)
!! test
Italics and possessives (2)
-!! input
+!! wikitext
'''''Flaming Pie''''' is ... released in 1997. In ''Flaming Pie'''s liner notes
-!! result
+!! html
<p><i><b>Flaming Pie</b></i> is ... released in 1997. In <i>Flaming Pie'</i>s liner notes
</p>
!! end
# this example taken from [[en:Dictionary]] (bug 49926)
!! test
Italics and possessives (3)
-!! input
+!! wikitext
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
+!! html
<p>The first monolingual dictionary written in a Romance language was <i>Sebastián Covarrubias'</i> <i>Tesoro de la lengua castellana o española</i>, published in 1611 in Madrid. In 1612 the first edition of the <i>Vocabolario dell'<a href="/index.php?title=Accademia_della_Crusca&action=edit&redlink=1" class="new" title="Accademia della Crusca (page does not exist)">Accademia della Crusca</a></i>, for Italian, was published. In 1690 in Rotterdam was published, posthumously, the <i>Dictionnaire Universel</i>.
</p>
!! end
###
!! test
Italics and bold: 2-quote opening sequence: (2,2)
-!! input
+!! wikitext
''foo''
-!! result
+!! html
<p><i>foo</i>
</p>
!!end
!! test
Italics and bold: 2-quote opening sequence: (2,3)
-!! input
+!! wikitext
''foo'''
-!! result
+!! html
<p><i>foo'</i>
</p>
!!end
!! test
Italics and bold: 2-quote opening sequence: (2,4)
-!! input
+!! wikitext
''foo''''
-!! result
+!! html
<p><i>foo''</i>
</p>
!!end
+# The PHP parser strips the empty tags out for giggles; parsoid doesn't.
!! test
-Italics and bold: 2-quote opening sequence: (2,5) (php)
-!! options
-php
-!! input
+Italics and bold: 2-quote opening sequence: (2,5)
+!! wikitext
''foo'''''
-!! result
+!! html/php
<p><i>foo</i>
</p>
-!!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
+!! html/parsoid
<p><i>foo</i><b></b>
</p>
!!end
!! test
Italics and bold: 3-quote opening sequence: (3,2)
-!! input
+!! wikitext
'''foo''
-!! result
+!! html
<p>'<i>foo</i>
</p>
!!end
!! test
Italics and bold: 3-quote opening sequence: (3,3)
-!! input
+!! wikitext
'''foo'''
-!! result
+!! html
<p><b>foo</b>
</p>
!!end
!! test
Italics and bold: 3-quote opening sequence: (3,4)
-!! input
+!! wikitext
'''foo''''
-!! result
+!! html
<p><b>foo'</b>
</p>
!!end
+# The PHP parser strips the empty tags out for giggles; parsoid doesn't.
!! test
-Italics and bold: 3-quote opening sequence: (3,5) (php)
-!! options
-php
-!! input
+Italics and bold: 3-quote opening sequence: (3,5)
+!! wikitext
'''foo'''''
-!! result
+!! html/php
<p><b>foo</b>
</p>
-!!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
+!! html/parsoid
<p><b>foo</b><i></i>
</p>
!!end
!! test
Italics and bold: 4-quote opening sequence: (4,2)
-!! input
+!! wikitext
''''foo''
-!! result
+!! html
<p>''<i>foo</i>
</p>
!!end
!! test
Italics and bold: 4-quote opening sequence: (4,3)
-!! input
+!! wikitext
''''foo'''
-!! result
+!! html
<p>'<b>foo</b>
</p>
!!end
!! test
Italics and bold: 4-quote opening sequence: (4,4)
-!! input
+!! wikitext
''''foo''''
-!! result
+!! html
<p>'<b>foo'</b>
</p>
!!end
+# The PHP parser strips the empty tags out for giggles; parsoid doesn't.
!! test
-Italics and bold: 4-quote opening sequence: (4,5) (php)
-!! options
-php
-!! input
+Italics and bold: 4-quote opening sequence: (4,5)
+!! wikitext
''''foo'''''
-!! result
+!! html/php
<p>'<b>foo</b>
</p>
-!!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
+!! html/parsoid
<p>'<b>foo</b><i></i>
</p>
!!end
!! test
Italics and bold: 5-quote opening sequence: (5,2)
!! options
-!! input
+!! wikitext
'''''foo''
-!! result
+!! html
<p><b><i>foo</i></b>
</p>
!!end
!! test
Italics and bold: 5-quote opening sequence: (5,3)
-!! input
+!! wikitext
'''''foo'''
-!! result
+!! html
<p><i><b>foo</b></i>
</p>
!!end
!! test
Italics and bold: 5-quote opening sequence: (5,4)
-!! input
+!! wikitext
'''''foo''''
-!! result
+!! html
<p><i><b>foo'</b></i>
</p>
!!end
!! test
Italics and bold: 5-quote opening sequence: (5,5)
-!! input
+!! wikitext
'''''foo'''''
-!! result
+!! html
<p><i><b>foo</b></i>
</p>
!!end
###
!! test
Italics and bold: multiple quote sequences: (2,4,2)
-!! input
+!! wikitext
''foo''''bar''
-!! result
+!! html
<p><i>foo'<b>bar</b></i>
</p>
!!end
!! test
Italics and bold: multiple quote sequences: (2,4,3)
-!! input
+!! wikitext
''foo''''bar'''
-!! result
+!! html
<p><i>foo'<b>bar</b></i>
</p>
!!end
!! test
Italics and bold: multiple quote sequences: (2,4,4)
-!! input
+!! wikitext
''foo''''bar''''
-!! result
+!! html
<p><i>foo'<b>bar'</b></i>
</p>
!!end
+# The PHP parser strips the empty tags out for giggles; parsoid doesn't.
!! test
-Italics and bold: multiple quote sequences: (3,4,2) (php)
-!! options
-php
-!! input
+Italics and bold: multiple quote sequences: (3,4,2)
+!! wikitext
'''foo''''bar''
-!! result
+!! html/php
<p><b>foo'</b>bar
</p>
-!!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
+!! html/parsoid
<p><b>foo'</b>bar<i></i>
</p>
!!end
+# The PHP parser strips the empty tags out for giggles; parsoid doesn't.
!! test
-Italics and bold: multiple quote sequences: (3,4,3) (php)
-!! options
-php
-!! input
+Italics and bold: multiple quote sequences: (3,4,3)
+!! wikitext
'''foo''''bar'''
-!! result
+!! html/php
<p><b>foo'</b>bar
</p>
-!!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
+!! html/parsoid
<p><b>foo'</b>bar<b></b>
</p>
!!end
###
!! test
Italics and bold: other quote tests: (2,3,5)
-!! input
+!! wikitext
''this is about '''foo's family'''''
-!! result
+!! html
<p><i>this is about <b>foo's family</b></i>
</p>
!!end
!! test
Italics and bold: other quote tests: (2,(3,3),2)
-!! input
+!! wikitext
''this is about '''foo's''' family''
-!! result
+!! html
<p><i>this is about <b>foo's</b> family</i>
</p>
!!end
!! test
Italics and bold: other quote tests: (3,2,3,2)
-!! input
+!! wikitext
'''this is about ''foo'''s family''
-!! result
+!! html
<p><b>this is about <i>foo</i></b><i>s family</i>
</p>
!!end
!! test
Italics and bold: other quote tests: (3,2,3,3)
!! options
-!! input
+!! wikitext
'''this is about ''foo'''s family'''
-!! result
+!! html
<p>'<i>this is about </i>foo<b>s family</b>
</p>
!!end
!! test
Italics and bold: other quote tests: (3,(2,2),3)
-!! input
+!! wikitext
'''this is about ''foo's'' family'''
-!! result
+!! html
<p><b>this is about <i>foo's</i> family</b>
</p>
!!end
!! test
Italicized possessive
-!! input
+!! wikitext
The ''[[Main Page]]'''s talk page.
-!! result
+!! html
<p>The <i><a href="/wiki/Main_Page" title="Main Page">Main Page</a>'</i>s talk page.
</p>
!! end
(Requires tidy for PHP parser output to be fixed up)
!! options
parsoid=wt2html,wt2wt
-!! input
+!! wikitext
{|
!''a!!''b
|''a||''b
|}
-!! result
+!! html
<table>
<tbody><tr><th><i>a</i></th><th><i>b</i></th>
<td><i>a</i></td><td><i>b</i></td></tr>
!! test
Non-html5 tags should be accepted
-!! input
+!! wikitext
<center>''foo''</center>
<big>''foo''</big>
<font>''foo''</font>
<strike>''foo''</strike>
<tt>''foo''</tt>
-!! result
+!! html
<center><i>foo</i></center>
<p><big><i>foo</i></big>
<font><i>foo</i></font>
!! test
<wbr> is valid wikitext (bug 52468)
-!! input
+!! wikitext
<wbr>
-!! result
+!! html
<p><wbr />
</p>
!! end
# <strike> is HTML4, <s> is HTML4/5.
!! test
<s> or <strike> for strikethrough
-!! input
+!! wikitext
<strike>strike</strike>
<s>s</s>
-!! result
+!! html
<p><strike>strike</strike>
</p><p><s>s</s>
</p>
!! test
Non-word characters don't terminate tag names (bug 17663, 40670, 52022)
-!! input
+!! wikitext
<b→> doesn't work! </b→>
<bä> doesn't work! </bä>
<s.foo>s.foo</s.foo>
<sub-ID#1>
-!! result
+!! html
<p><b→> doesn't work! </b→>
</p><p><bä> doesn't work! </bä>
</p><p><boo> works fine </boo>
!! test
Isolated close tags should be treated as literal text (bug 52760)
-!! input
+!! wikitext
</b>
<s.foo>s</s>
-!! result
+!! html
<p></b>
</p><p><s.foo>s</s>
</p>
!! test
Bare pipe character (bug 52363)
-!! input
+!! wikitext
|
-!! result
+!! html
<p>|
</p>
!! end
!! test
Bare pipe character from a template (bug 52363)
-!! input
+!! wikitext
{{pipe}}
-!! result
+!! html
<p>|
</p>
!! end
!! test
<nowiki> unordered list
-!! input
+!! wikitext
<nowiki>* This is not an unordered list item.</nowiki>
-!! result
+!! html
<p>* This is not an unordered list item.
</p>
!! end
!! test
<nowiki> spacing
-!! input
+!! wikitext
<nowiki>Lorem ipsum dolor
sed abit.
:and a colon
</nowiki>
-!! result
+!! html
<p>Lorem ipsum dolor
sed abit.
!! test
nowiki 3
-!! input
+!! wikitext
:There is not nowiki.
:There is <nowiki>nowiki</nowiki>.
*There is not nowiki.
*There is <nowiki>nowiki</nowiki>.
-!! result
+!! html
<dl>
<dd>There is not nowiki.
</dd>
!! test
Entities inside <nowiki>
-!! input
+!! wikitext
<nowiki><</nowiki>
-!! result
+!! html
<p><
</p>
!! end
Entities inside template parameters
!! options
parsoid
-!! input
+!! wikitext
{{echo|–}}
-!! result
+!! html
<p><span typeof="mw:Transclusion mw:Entity" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&ndash;"}},"i":0}}]}'>–</span>
</p>
!! end
###
!! test
Comments and Indent-Pre
-!! input
+!! wikitext
<!-- comment 1 --> asdf
<!-- comment 1 --> asdf
<!-- comment 1 --> asdf
<!-- comment 2 --> xyz
-!! result
+!! html
<pre>asdf
</pre>
<pre>asdf
!! test
Comment test 2a
-!! input
+!! wikitext
asdf
<!-- comment 1 -->
jkl
-!! result
+!! html
<p>asdf
jkl
</p>
!! test
Comment test 2b
-!! input
+!! wikitext
asdf
<!-- comment 1 -->
jkl
-!! result
+!! html
<p>asdf
</p><p>jkl
</p>
!! test
Comment test 3
-!! input
+!! wikitext
asdf
<!-- comment 1 -->
<!-- comment 2 -->
jkl
-!! result
+!! html
<p>asdf
jkl
</p>
!! test
Comment test 4
-!! input
+!! wikitext
asdf<!-- comment 1 -->jkl
-!! result
+!! html
<p>asdfjkl
</p>
!! end
!! test
Comment spacing
-!! input
+!! wikitext
a
<!-- foo --> b <!-- bar -->
c
-!! result
+!! html
<p>a
</p>
<pre> b
!! test
Comment whitespace
-!! input
+!! wikitext
<!-- returns a single newline, not nothing, since the newline after > is not stripped -->
-!! result
+!! html
!! end
!! test
Comment semantics and delimiters
-!! input
+!! wikitext
<!-- --><!----><!-----><!------>
-!! result
+!! html
!! end
!! test
Comment semantics and delimiters, redux
-!! input
+!! wikitext
<!-- In SGML every "foo" here would actually show up in the text -- foo -- bar
-- foo -- funky huh? ... -->
-!! result
+!! html
!! end
!! test
Comment semantics and delimiters: directors cut
-!! input
+!! wikitext
<!-- ... However we like to keep things simple and somewhat XML-ish so we eat
everything starting with < followed by !-- until the first -- and > we see,
that wouldn't be valid XML however, since in XML -- has to terminate a comment
-->-->
-!! result
+!! html
<p>-->
</p>
!! end
!! test
Comment semantics: nesting
-!! input
+!! wikitext
<!--<!-- no, we're not going to do anything fancy here -->-->
-!! result
+!! html
<p>-->
</p>
!! end
!! test
Comment semantics: unclosed comment at end
-!! input
+!! wikitext
<!--This comment will run out to the end of the document
-!! result
+!! html
!! end
!! test
Comment in template title
-!! input
+!! wikitext
{{f<!---->oo}}
-!! result
+!! html
<p>FOO
</p>
!! end
!! test
Comment on its own line post-expand
-!! input
+!! wikitext
a
{{blank}}<!---->
b
-!! result
+!! html
<p>a
</p><p>b
</p>
!! test
Comment on its own line post-expand with non-significant whitespace
-!! input
+!! wikitext
a
{{blank}} <!---->
b
-!! result
+!! html
<p>a
</p><p>b
</p>
###
!! test
No block tags
-!! input
+!! wikitext
a
b
-!! result
+!! html
<p>a
</p><p>b
</p>
!! test
Block tag on one line (<div>)
-!! input
+!! wikitext
a <div>foo</div>
b
-!! result
+!! html
a <div>foo</div>
<p>b
</p>
!! test
Block tag on one line (<blockquote>)
-!! input
+!! wikitext
a <blockquote>foo</blockquote>
b
-!! result
+!! html
a <blockquote>foo</blockquote>
<p>b
</p>
!! test
Block tag on both lines (<div>)
-!! input
+!! wikitext
a <div>foo</div>
b <div>foo</div>
-!! result
+!! html
a <div>foo</div>
b <div>foo</div>
!! test
Block tag on both lines (<blockquote>)
-!! input
+!! wikitext
a <blockquote>foo</blockquote>
b <blockquote>foo</blockquote>
-!! result
+!! html
a <blockquote>foo</blockquote>
b <blockquote>foo</blockquote>
!! test
Multiple lines without block tags
-!! input
+!! wikitext
<div>foo</div> a
b
c
d<!--foo--> e
x <div>foo</div> z
-!! result
+!! html
<div>foo</div> a
<p>b
c
!! test
Empty lines between lines with block tags
-!! input
+!! wikitext
<div></div>
<div>e</div>
-!! result
+!! html
<div></div>
<p><br />
</p>
## PHP parser emits output which is broken
!! test
Unclosed HTML p-tags should be handled properly
-!! options
-parsoid
-!! input
+!! wikitext
<div><p>foo</div>
a
b
-!! result
+!! html/parsoid
<div data-parsoid='{"stx":"html"}'><p data-parsoid='{"stx":"html", "autoInsertedEnd":true}'>foo</p></div>
<p>a</p>
<p>b</p>
###
!! test
Preformatted text
-!! input
+!! wikitext
This is some
Preformatted text
With ''italic''
And '''bold'''
And a [[Main Page|link]]
-!! result
+!! html
<pre>This is some
Preformatted text
With <i>italic</i>
!! test
Tabs don't trigger preformatted text
-!! input
+!! wikitext
This is not
preformatted text.
This is preformatted text.
So is this.
-!! result
+!! html
<p> This is not
preformatted text.
</p>
!! test
Ident preformatting with inline content
-!! input
+!! wikitext
a
''b''
-!! result
+!! html
<pre>a
<i>b</i>
</pre>
!! test
<pre> with <nowiki> inside (compatibility with 1.6 and earlier)
-!! input
+!! wikitext
<pre><nowiki>
<b>
<cite>
<em>
</nowiki></pre>
-!! result
+!! html
<pre>
<b>
<cite>
!! test
Regression with preformatted in <center>
-!! input
+!! wikitext
<center>
Blah
</center>
-!! result
+!! html
<center>
<pre>Blah
</pre>
!! test
Bug 52763: Preformatted in <blockquote>
-!! input
+!! wikitext
<blockquote>
Blah
{|
indented cell (no pre-wrapping!)
|}
</blockquote>
-!! result
+!! html
<blockquote>
<p> Blah
</p>
!! test
Bug 51086: Double newlines in blockquotes should be turned into paragraphs
-!! input
+!! wikitext
<blockquote>
Foo
Bar
</blockquote>
-!! result
+!! html
<blockquote>
<p>Foo
</p><p>Bar
!! test
Bug 15491: <ins>/<del> in blockquote
-!! input
+!! wikitext
<blockquote>
Foo <del>bar</del> <ins>baz</ins> quux
</blockquote>
-!! result
+!! html
<blockquote>
<p>Foo <del>bar</del> <ins>baz</ins> quux
</p>
# below in a <p> tag. (see comment 23-25 of bug #6200)
!! test
Bug 15491: <ins>/<del> in blockquote (2)
-!! input
+!! wikitext
<blockquote>Foo <del>bar</del> <ins>baz</ins> quux
</blockquote>
-!! result
+!! html
<blockquote>Foo <del>bar</del> <ins>baz</ins> quux
</blockquote>
!! test
<pre> with attributes (bug 3202)
-!! input
+!! wikitext
<pre style="background: blue; color:white">Bluescreen of WikiDeath</pre>
-!! result
+!! html
<pre style="background: blue; color:white">Bluescreen of WikiDeath</pre>
!! end
!! test
<pre> with width attribute (bug 3202)
-!! input
+!! wikitext
<pre width="8">Narrow screen goodies</pre>
-!! result
+!! html
<pre width="8">Narrow screen goodies</pre>
!! end
!! test
<pre> with forbidden attribute (bug 3202)
-!! input
+!! wikitext
<pre width="8" onmouseover="alert(document.cookie)">Narrow screen goodies</pre>
-!! result
+!! html
<pre width="8">Narrow screen goodies</pre>
!! end
!! test
Entities inside <pre>
-!! input
+!! wikitext
<pre><</pre>
-!! result
+!! html
<pre><</pre>
!! end
!! test
<pre> with forbidden attribute values (bug 3202)
-!! input
+!! wikitext
<pre width="8" style="border-width: expression(alert(document.cookie))">Narrow screen goodies</pre>
-!! result
+!! html
<pre width="8" style="/* insecure input */">Narrow screen goodies</pre>
!! end
!! test
<nowiki> inside <pre> (bug 13238)
-!! input
+!! wikitext
<pre>
<nowiki>
</pre>
<nowiki></nowiki>
</pre>
<pre><nowiki><nowiki></nowiki>Foo<nowiki></nowiki></nowiki></pre>
-!! result
+!! html
<pre>
<nowiki>
</pre>
!! test
<nowiki> and <pre> preference (first one wins)
-!! input
+!! wikitext
<pre>
<nowiki>
</pre>
</nowiki>
</pre>
-!! result
+!! html
<pre>
<nowiki>
</pre>
!! test
</pre> inside nowiki
-!! input
+!! wikitext
<nowiki></pre></nowiki>
-!! result
+!! html
<p></pre>
</p>
!! end
!! test
Empty pre; pre inside other HTML tags (bug 54946)
-!! input
+!! wikitext
a
<div><pre>
foo
</pre></div>
<pre></pre>
-!! result
+!! html
<p>a
</p>
<div><pre>
!! test
HTML pre followed by indent-pre
-!! input
+!! wikitext
<pre>foo</pre>
bar
-!! result
+!! html
<pre>foo</pre>
<pre>bar
</pre>
Block tag pre
!!options
parsoid
-!!input
+!! wikitext
<p><pre>foo</pre></p>
-!!result
+!! html
<p data-parsoid='{"stx":"html","autoInsertedEnd":true}'></p><pre data-parsoid='{"stx":"html"}'>foo</pre><p data-parsoid='{"autoInsertedStart":true,"stx":"html"}'></p>
!!end
!!test
Templates: Indent-Pre: 1a. Templates that break a line should suppress <pre>
-!!input
+!! wikitext
{{echo|}}
-!!result
+!! html
!!end
!!test
Templates: Indent-Pre: 1b. Templates that break a line should suppress <pre>
-!!input
+!! wikitext
{{echo|
foo}}
-!!result
+!! html
<p>foo
</p>
!!end
!! test
Templates: Indent-Pre: 1c: Wrapping should be based on expanded content
-!! input
+!! wikitext
{{echo|a
b}}
-!!result
+!! html
<pre>a
</pre>
<p>b
!! test
Templates: Indent-Pre: 1d: Wrapping should be based on expanded content
-!! input
+!! wikitext
{{echo|a
b
c
d
e
}}
-!!result
+!! html
<pre>a
</pre>
<p>b
!!test
Templates: Indent-Pre: 1e. Wrapping should be based on expanded content
-!!input
+!! wikitext
{{echo| foo}}
{{echo| foo}}{{echo| bar}}
<!--cmt-->{{echo| foo}}
{{echo|{{echo| }}bar}}
-!!result
+!! html
<pre>foo
</pre>
<pre>foo bar
!! test
Templates: Indent-Pre: 1f: Wrapping should be based on expanded content
-!! input
+!! wikitext
{{echo| }}a
{{echo|
{{echo|a
}} b
-!!result
+!! html
<pre>a
</pre>
<p><br />
!! test
Things that look like <pre> tags aren't treated as such
-!! input
+!! wikitext
Barack Obama <President> of the United States
-!! result
+!! html
<p>Barack Obama <President> of the United States
</p>
!! end
Parsoid: handle pre with space after attribute
!! options
parsoid=wt2html
-!! input
+!! wikitext
<pre style="width:50%;" >{{echo|foo}}</pre>
-!! result
+!! html
<pre style="width:50%;">{{echo|foo}}</pre>
!! end
Parsoid: Don't paragraph-wrap fosterable content
!! options
parsoid=wt2html
-!! input
+!! wikitext
{|
<td></td>
<td></td>
|}
-!! result
+!! html
<table>
<tbody>
Parsoid: Don't paragraph-wrap fosterable content even if table syntax is unbalanced
!! options
parsoid=wt2html
-!! input
+!! wikitext
{|
<td>
<td>
|}
-!! result
+!! html
<table>
<tbody>
#--------------------------------------------------------------------
!! test
Templates: Strip leading and trailing whitespace from named-param values
-!! input
+!! wikitext
{{echo|1= a }}
{{echo|1= {{echo|b}} }}
{{echo| 1 =
* d
}}
-!! result
+!! html
<p>a
</p><p>b
</p><p>c
!! test
Templates: Don't strip whitespace from positional-param values
-!! input
+!! wikitext
{{echo|a }}
{{echo|{{echo|b}} }}
{{echo|
}}g
-!! result
+!! html
<p>a
</p><p>b
</p>
!! test
Templates: Handle empty comment-and-ws-only lines correctly
-!! input
+!! wikitext
{{echo|foo
<!--should be ignored-->
<!--should be ignored as well-->
bar}}
-!! result
+!! html
<p>foo
bar
</p>
Templates: Parsoid parameter escaping test 1
!! options
parsoid
-!! input
+!! wikitext
{{echo|[foo]|{{echo|[bar]}}}}
-!! result
+!! html
<p about="#mwt1" typeof="mw:Transclusion"
data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[foo]"},"2":{"wt":"{{echo|[bar]}}"}},"i":0}}]}'>[foo]</p>
!! end
Parsoid: Pipes in external links in template parameter
!! options
parsoid
-!! input
+!! wikitext
{{echo|[{{echo|http://example.com}} link]}}
-!! result
+!! html
<p><a rel="mw:ExtLink" href="http://example.com" about="#mwt31" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[{{echo|http://example.com}} link]"}},"i":0}}]}'>link</a></p>
!! end
Parsoid: pipe in transclusion parameter
!! options
parsoid
-!! input
+!! wikitext
{{echo|http://foo.com/a|b}}
-!! result
+!! html
<p><a rel="mw:ExtLink" href="http://foo.com/a|b" about="#mwt1"
typeof="mw:Transclusion"
data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"http://foo.com/a&#124;b"}},"i":0}}]}'>http://foo.com/a|b</a></p>
Parsoid: Pipe in external link target and content in template parameter
!! options
parsoid=html2wt,wt2wt
-!! input
+!! wikitext
{{echo|[http://foo.com/a|b a|b]}}
-!! result
+!! html
<p><a rel="mw:ExtLink" href="http://foo.com/a|b" about="#mwt1"
typeof="mw:Transclusion"
data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},
Templates: Don't escape already nowiki-escaped text in template parameters
!! options
parsoid=html2wt,wt2wt
-!! input
+!! wikitext
{{echo|foo<nowiki>|</nowiki>bar}}
{{echo|<nowiki><div></nowiki>}}
{{echo|<nowiki></nowiki>}}
-!! result
+!! html
<p><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo<nowiki>|</nowiki>bar"}},"i":0}}]}'}'>foo</span><span typeof="mw:Nowiki" about="#mwt1">|</span><span about="#mwt1">bar</span>
<span typeof="mw:Transclusion mw:Nowiki" about="#mwt2" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<nowiki>&lt;div&gt;</nowiki>"}},"i":0}}]}'><span typeof="mw:Entity"><</span>div<span typeof="mw:Entity">></span></span>
<span typeof="mw:Transclusion mw:Nowiki" about="#mwt3" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<nowiki></nowiki>"}},"i":0}}]}'></span>
Templates: '=' char in nested transclusions should not trigger nowiki escapes or conversion to named param
!! options
parsoid=html2wt,wt2wt
-!! input
+!! wikitext
{{echo|{{echo|1=bar}}}}
-!! result
+!! html
<p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{echo|1=bar}}"}},"i":0}}]}'>bar</p>
!! end
Templates parameters with special tokenizing behavior dont get modified because of arg escaping
!! options
parsoid
-!! input
+!! wikitext
{{echo|a : b}}
-!! result
+!! html
<p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a : b"}},"i":0}}]}'>a<span typeof="mw:Placeholder" data-parsoid='{"isDisplayHack":true}'> </span>: b</p>
!! end
!!test
1a. Indent-Pre and Comments
-!!input
+!! wikitext
a
<!--a-->
c
-!!result
+!! html
<pre>a
</pre>
<p>c
!!test
1b. Indent-Pre and Comments
-!!input
+!! wikitext
a
<!--a-->
c
-!!result
+!! html
<pre>a
</pre>
<p>c
!!test
1c. Indent-Pre and Comments
-!!input
+!! wikitext
<!--a--> a
<!--a--> a
-!!result
+!! html
<pre> a
</pre>
<pre> a
!!test
1d. Indent-Pre and Comments
(Pre-handler currently cannot distinguish between comment/ws order and normalizes them to [comment,ws] order)
-!!input
+!! wikitext
<!--a--> a
<!--b-->b
-!!result
+!! html
<pre>a
</pre>
<pre>b
!!test
2a. Indent-Pre and tables
-!!input
+!! wikitext
{|
|-
!h1!!h2
|foo||bar
|}
-!!result
+!! html
<table>
<tr>
!!test
2b. Indent-Pre and tables
-!!input
+!! wikitext
{|
|-
|foo
|}
-!!result
+!! html
<table>
<tr>
!!test
2c. Indent-Pre and tables (bug 42252)
-!!input
+!! wikitext
{|
|+ foo
! | bar
|}
-!!result
+!! html
<table>
<caption> foo
</caption>
!!test
3a. Indent-Pre and block tags (single-line html)
-!!input
+!! wikitext
a <p> foo </p>
b <div> foo </div>
c <blockquote> foo </blockquote>
<span> foo </span>
-!!result
+!! html
a <p> foo </p>
b <div> foo </div>
c <blockquote> foo </blockquote>
!!test
3b. Indent-Pre and block tags (multi-line html)
-!!input
+!! wikitext
a <span>foo</span>
b <div> foo </div>
-!!result
+!! html
<pre>a <span>foo</span>
</pre>
b <div> foo </div>
!!test
3c. Indent-Pre and block tags (pre-content on separate line)
-!!input
+!! wikitext
<p>
foo
</p>
foo
</li></ul>
-!!result
+!! html
<p>
foo
</p>
!!test
4. Indent-Pre and extension tags
-!!input
+!! wikitext
a <gallery>
File:foobar.jpg
</gallery>
-!!result
+!! html
a <ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
<div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" /></a></div></div>
Leading pipes outside of tables
!! options
parsoid
-!! input
+!! wikitext
| foo
-!! result
+!! html
<p>| foo</p>
!! end
Leading pipes outside of tables 2
!! options
parsoid
-!! input
+!! wikitext
a
| foo
b
-!! result
+!! html
<p>a
| foo
b</p>
Leading pipes outside of tables 3
!! options
parsoid
-!! input
+!! wikitext
a
| class="foo bar" | baz
b
-!! result
+!! html
<p>a
| class="foo bar" | baz
b</p>
!!test
Render paragraphs when indent-pre is suppressed in blocklevels
-!!input
+!! wikitext
<blockquote>
foo
bar
</blockquote>
-!! result
+!! html
<blockquote>
<p> foo
</p><p> bar
!!test
4. Multiple spaces at start-of-line
-!!input
+!! wikitext
<p> foo </p>
foo
{|
|foo
|}
-!!result
+!! html
<p> foo </p>
<pre> foo
</pre>
## NOTE: the leading white-space chars on empty line are significant
!! test
5a. White-space in indent-pre
-!! input
+!! wikitext
a<br />
b
-!! result
+!! html
<pre>a<br />
b
## NOTE: the leading white-space chars on empty line are significant
!! test
5b. White-space in indent-pre
-!! input
+!! wikitext
a
b
c
-!! result
+!! html
<pre>a
b
!! test
5c. White-space in indent-pre
-!! input
+!! wikitext
''a''
''b''
''c''
-!! result
+!! html
<pre><i>a</i>
<i>b</i>
<i>c</i>
!! test
6. Pre-blocks should extend across lines with leading WS even when there is no wrappable content
-!! input
+!! wikitext
a
<!-- continue -->
c
d
-!! result
+!! html
<pre>a
b
7a. Indent-pre and category links
!! options
parsoid=wt2html,wt2wt
-!! input
+!! wikitext
[[Category:foo]] <!-- No pre-wrapping -->
{{echo| [[Category:foo]]}} <!-- No pre-wrapping -->
-!! result
+!! html
<link rel="mw:PageProp/Category" href="./Category:Foo"> <!-- No pre-wrapping -->
<span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":" [[Category:foo]]"}},"i":0}}]}'> </span>
<link rel="mw:PageProp/Category" href="./Category:Foo" about="#mwt1"> <!-- No pre-wrapping -->
7b. Indent-pre and category links
!! options
parsoid=wt2html,wt2wt
-!! input
+!! wikitext
[[Category:foo]] a
[[Category:foo]] {{echo|b}}
-!! result
+!! html
<pre>
<link rel="mw:PageProp/Category" href="./Category:Foo"> a
!!test
HTML-pre: 1. embedded newlines
-!!input
+!! wikitext
<pre>foo</pre>
<pre>
foo
</pre>
-!!result
+!! html
<pre>foo</pre>
<pre>
foo
!!test
HTML-pre: 2: indented text
-!!input
+!! wikitext
<pre>
foo
</pre>
-!!result
+!! html
<pre>
foo
</pre>
!!test
HTML-pre: 3: other wikitext
-!!input
+!! wikitext
<pre>
* foo
# bar
'' no-italic ''
[[ NoLink ]]
</pre>
-!!result
+!! html
<pre>
* foo
# bar
###
!! test
Simple definition
-!! input
+!! wikitext
; name : Definition
-!! result
+!! html
<dl>
<dt> name </dt>
<dd> Definition
!! test
Definition list for indentation only
-!! input
+!! wikitext
: Indented text
-!! result
+!! html
<dl>
<dd> Indented text
</dd>
!! test
Definition list with no space
-!! input
+!! wikitext
;name:Definition
-!! result
+!! html
<dl>
<dt>name</dt>
<dd>Definition
!! test
Definition list with URL link
-!! input
+!! wikitext
; http://example.com/ : definition
-!! result
+!! html
<dl>
<dt> <a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a> </dt>
<dd> definition
!! test
Definition list with bracketed URL link
-!! input
+!! wikitext
;[http://www.example.com/ Example]:Something about it
-!! result
+!! html
<dl>
<dt><a rel="nofollow" class="external text" href="http://www.example.com/">Example</a></dt>
<dd>Something about it
!! test
Definition list with wikilink containing colon
-!! input
+!! wikitext
; [[Help:FAQ]]: The least-read page on Wikipedia
-!! result
+!! html
<dl>
<dt> <a href="/index.php?title=Help:FAQ&action=edit&redlink=1" class="new" title="Help:FAQ (page does not exist)">Help:FAQ</a></dt>
<dd> The least-read page on Wikipedia
# At Brion's and JeLuF's insistence... :)
!! test
Definition list with news link containing colon
-!! input
+!! wikitext
; news:alt.wikipedia.rox: This isn't even a real newsgroup!
-!! result
+!! html
<dl>
<dt> <a rel="nofollow" class="external free" href="news:alt.wikipedia.rox">news:alt.wikipedia.rox</a></dt>
<dd> This isn't even a real newsgroup!
!! test
Malformed definition list with colon
-!! input
+!! wikitext
; news:alt.wikipedia.rox -- don't crash or enter an infinite loop
-!! result
+!! html
<dl>
<dt> <a rel="nofollow" class="external free" href="news:alt.wikipedia.rox">news:alt.wikipedia.rox</a> -- don't crash or enter an infinite loop
</dt>
!! test
Definition lists: colon in external link text
-!! input
+!! wikitext
; [http://www.wikipedia2.org/ Wikipedia : The Next Generation]: OK, I made that up
-!! result
+!! html
<dl>
<dt> <a rel="nofollow" class="external text" href="http://www.wikipedia2.org/">Wikipedia : The Next Generation</a></dt>
<dd> OK, I made that up
!! test
Definition lists: colon in HTML attribute
-!! input
+!! wikitext
;<b style="display: inline">bold</b>
-!! result
+!! html
<dl>
<dt><b style="display: inline">bold</b>
</dt>
!! test
Definition lists: self-closed tag
-!! input
+!! wikitext
;one<br/>two : two-line fun
-!! result
+!! html
<dl>
<dt>one<br />two </dt>
<dd> two-line fun
!! test
Bug 11748: Literal closing tags
-!! input
+!! wikitext
<dl>
<dt>test 1</dt>
<dd>test test test test test</dd>
<dt>test 2</dt>
<dd>test test test test test</dd>
</dl>
-!! result
+!! html
<dl>
<dt>test 1</dt>
<dd>test test test test test</dd>
!! test
Definition and unordered list using wiki syntax nested in unordered list using html tags.
-!! input
+!! wikitext
<ul><li>
; term : description
* unordered
</li></ul>
-!! result
+!! html
<ul><li>
<dl>
<dt> term </dt>
!! test
Definition list with empty definition and following paragraph
-!! input
+!! wikitext
; term:
Paragraph text
-!! result
+!! html
<dl>
<dt> term</dt>
<dd>
!! test
Nested definition lists using html syntax
-!! input
+!! wikitext
<dl><dd>
<dl>
<dd>Foo</dd>
</dl>
</dd></dl>
-!! result
+!! html
<dl><dd>
<dl>
<dd>Foo</dd>
!! test
Definition Lists: No nesting: Multiple dd's
-!! input
+!! wikitext
;x
:a
:b
-!! result
+!! html
<dl>
<dt>x
</dt>
!! test
Definition Lists: Indentation: Regular
-!! input
+!! wikitext
:i1
::i2
:::i3
-!! result
+!! html
<dl>
<dd>i1
<dl>
!! test
Definition Lists: Indentation: Missing 1st level
-!! input
+!! wikitext
::i2
:::i3
-!! result
+!! html
<dl>
<dd><dl>
<dd>i2
!! test
Definition Lists: Indentation: Multi-level indent
-!! input
+!! wikitext
:::i3
-!! result
+!! html
<dl>
<dd><dl>
<dd><dl>
!! test
Definition Lists: Hacky use to indent tables
-!! input
+!! wikitext
::{|
|foo
|bar
|}
this text
should be left alone
-!! result
+!! html
<dl><dd><dl><dd><table>
<tr>
<td>foo
Definition Lists: Hacky use to indent tables (WS-insensitive)
!! options
parsoid
-!! input
+!! wikitext
: {|
|a
|}
-!! result
+!! html
<dl>
<dd> <table><tr><td>a</td></tr></table> </dd>
</dl>
!! test
Table / list interaction: indented table with lists in table contents
-!! input
+!! wikitext
:{|
|-
| a
| c
* d
|}
-!! result
+!! html
<dl><dd><table>
<tr>
!!test
Table / list interaction: lists nested in tables nested in indented lists
-!!input
+!! wikitext
:{|
|
:a
*e
*f
-!!result
+!! html
<dl><dd><table>
<tr>
<td>
Definition Lists: Nesting: Multi-level (Parsoid only)
!! options
parsoid
-!! input
+!! wikitext
;t1 :d1
;;t2 ::d2
;;;t3 :::d3
-!! result
+!! html
<dl>
<dt>t1 </dt>
<dd>d1</dd>
Definition Lists: Nesting: Test 2 (Parsoid only)
!! options
parsoid
-!! input
+!! wikitext
;t1
::d2
-!! result
+!! html
<dl>
<dt>t1</dt>
<dd>
Definition Lists: Nesting: Test 3 (Parsoid only)
!! options
parsoid
-!! input
+!! wikitext
:;t1
::::d2
-!! result
+!! html
<dl>
<dd>
<dl>
!! test
Definition Lists: Nesting: Test 4
-!! input
+!! wikitext
::;t3
:::d3
-!! result
+!! html
<dl>
<dd><dl>
<dd><dl>
## bug in the PHP parser. (Parsoid team thinks the PHP parser is
## wrong to close the <dl> after the <dt> containing the <ul>.)
!! test
-Definition Lists: Mixed Lists: Test 1 (php)
-!! options
-php
-!! input
+Definition Lists: Mixed Lists: Test 1
+!! wikitext
:;* foo
::* bar
:; baz
-!! result
+!! html/php
<dl>
<dd><dl>
<dt><ul>
</dd>
</dl>
-!! end
-!! test
-Definition Lists: Mixed Lists: Test 1 (parsoid)
-!! options
-parsoid
-!! input
-:;* foo
-::* bar
-:; baz
-!! result
+!! html/parsoid
<dl>
<dd><dl>
<dt><ul>
!! test
Definition Lists: Mixed Lists: Test 2
-!! input
+!! wikitext
*: d1
*: d2
-!! result
+!! html
<ul>
<li><dl>
<dd> d1
!! test
Definition Lists: Mixed Lists: Test 3
-!! input
+!! wikitext
*::: d1
*::: d2
-!! result
+!! html
<ul>
<li><dl>
<dd><dl>
!! test
Definition Lists: Mixed Lists: Test 4
-!! input
+!! wikitext
*;d1 :d2
*;d3 :d4
-!! result
+!! html
<ul>
<li><dl>
<dt>d1 </dt>
!! test
Definition Lists: Mixed Lists: Test 5
-!! input
+!! wikitext
*:d1
*:: d2
-!! result
+!! html
<ul>
<li><dl>
<dd>d1
!! test
Definition Lists: Mixed Lists: Test 6
-!! input
+!! wikitext
#*:d1
#*::: d3
-!! result
+!! html
<ol>
<li><ul>
<li><dl>
!! test
Definition Lists: Mixed Lists: Test 7
-!! input
+!! wikitext
:* d1
:* d2
-!! result
+!! html
<dl>
<dd><ul>
<li> d1
!! test
Definition Lists: Mixed Lists: Test 8
-!! input
+!! wikitext
:* d1
::* d2
-!! result
+!! html
<dl>
<dd><ul>
<li> d1
!! test
Definition Lists: Mixed Lists: Test 9
-!! input
+!! wikitext
*;foo :bar
-!! result
+!! html
<ul>
<li><dl>
<dt>foo </dt>
!! test
Definition Lists: Mixed Lists: Test 10
-!! input
+!! wikitext
*#;foo :bar
-!! result
+!! html
<ul>
<li><ol>
<li><dl>
# still-open tags around until the nesting is complete.
!! test
-Definition Lists: Mixed Lists: Test 11 (php)
-!! options
-php
-!! input
+Definition Lists: Mixed Lists: Test 11
+!! wikitext
*#*#;*;;foo :bar
*#*#;boo :baz
-!! result
+!! html/php
<ul>
<li><ol>
<li><ul>
</li>
</ul>
-!! end
-!! test
-Definition Lists: Mixed Lists: Test 11 (parsoid)
-!! options
-parsoid
-!! input
-*#*#;*;;foo :bar
-*#*#;boo :baz
-!! result
+!! html/parsoid
<ul>
<li>
<ol>
!! test
-Definition Lists: Weird Ones: Test 1 (php)
-!! options
-php
-!! input
+Definition Lists: Weird Ones: Test 1
+!! wikitext
*#;*::;; foo : bar (who uses this?)
-!! result
+!! html/php
<ul>
<li><ol>
<li><dl>
</li>
</ul>
-!! end
-!! test
-Definition Lists: Weird Ones: Test 1 (parsoid)
-!! options
-parsoid
-!! input
-*#;*::;; foo : bar (who uses this?)
-!! result
+!! html/parsoid
<ul>
<li>
<ol>
###
!! test
External links: non-bracketed
-!! input
+!! wikitext
Non-bracketed: http://example.com
-!! result
+!! html
<p>Non-bracketed: <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
</p>
!! end
!! test
External links: numbered
-!! input
+!! wikitext
Numbered: [http://example.com]
Numbered: [http://example.net]
Numbered: [http://example.com]
-!! result
+!! html
<p>Numbered: <a rel="nofollow" class="external autonumber" href="http://example.com">[1]</a>
Numbered: <a rel="nofollow" class="external autonumber" href="http://example.net">[2]</a>
Numbered: <a rel="nofollow" class="external autonumber" href="http://example.com">[3]</a>
!! test
External links: specified text
-!! input
+!! wikitext
Specified text: [http://example.com link]
-!! result
+!! html
<p>Specified text: <a rel="nofollow" class="external text" href="http://example.com">link</a>
</p>
!!end
!! test
External links: trail
-!! input
+!! wikitext
Linktrails should not work for external links: [http://example.com link]s
-!! result
+!! html
<p>Linktrails should not work for external links: <a rel="nofollow" class="external text" href="http://example.com">link</a>s
</p>
!! end
!! test
External links: dollar sign in URL
-!! input
+!! wikitext
http://example.com/1$2345
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://example.com/1$2345">http://example.com/1$2345</a>
</p>
!! end
!! test
External links: dollar sign in URL (named)
-!! input
+!! wikitext
[http://example.com/1$2345]
-!! result
+!! html
<p><a rel="nofollow" class="external autonumber" href="http://example.com/1$2345">[1]</a>
</p>
!!end
!! test
External links: open square bracket forbidden in URL (bug 4377)
-!! input
+!! wikitext
http://example.com/1[2345
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://example.com/1">http://example.com/1</a>[2345
</p>
!! end
!! test
External links: open square bracket forbidden in URL (named) (bug 4377)
-!! input
+!! wikitext
[http://example.com/1[2345]
-!! result
+!! html
<p><a rel="nofollow" class="external text" href="http://example.com/1">[2345</a>
</p>
!!end
!! test
External links: nowiki in URL link text (bug 6230)
-!!input
+!! wikitext
[http://example.com/ <nowiki>''example site''</nowiki>]
-!! result
+!! html
<p><a rel="nofollow" class="external text" href="http://example.com/">''example site''</a>
</p>
!! end
!! test
External links: newline forbidden in text (bug 6230 regression check)
-!! input
+!! wikitext
[http://example.com/ first
second]
-!! result
+!! html
<p>[<a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a> first
second]
</p>
!! test
External links: Pipe char between url and text
-!! input
+!! wikitext
[http://example.com | link]
-!! result
+!! html
<p><a rel="nofollow" class="external text" href="http://example.com">| link</a>
</p>
!!end
!! test
External links: protocol-relative URL in brackets
-!! input
+!! wikitext
[//example.com/ Test]
-!! result
+!! html
<p><a rel="nofollow" class="external text" href="//example.com/">Test</a>
</p>
!! end
!! test
External links: protocol-relative URL in brackets without text
-!! input
+!! wikitext
[//example.com]
-!! result
+!! html
<p><a rel="nofollow" class="external autonumber" href="//example.com">[1]</a>
</p>
!! end
!! test
External links: protocol-relative URL in free text is left alone
-!! input
+!! wikitext
//example.com/Foo
-!! result
+!! html
<p>//example.com/Foo
</p>
!!end
!! test
External links: protocol-relative URL in the middle of a word is left alone (bug 30269)
-!! input
+!! wikitext
foo//example.com/Foo
-!! result
+!! html
<p>foo//example.com/Foo
</p>
!! end
!! test
External image
-!! input
+!! wikitext
External image: http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png
-!! result
+!! html
<p>External image: <img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" />
</p>
!! end
!! test
External image from https
-!! input
+!! wikitext
External image from https: https://meta.wikimedia.org/upload/f/f1/Ncwikicol.png
-!! result
+!! html
<p>External image from https: <img src="https://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" />
</p>
!! end
External image (when not allowed)
!! options
wgAllowExternalImages=0
-!! input
+!! wikitext
External image: http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png
-!! result
+!! html
<p>External image: <a rel="nofollow" class="external free" href="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png">http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png</a>
</p>
!! end
!! test
Link to non-http image, no img tag
-!! input
+!! wikitext
Link to non-http image, no img tag: ftp://example.com/test.jpg
-!! result
+!! html
<p>Link to non-http image, no img tag: <a rel="nofollow" class="external free" href="ftp://example.com/test.jpg">ftp://example.com/test.jpg</a>
</p>
!! end
!! test
External links: terminating separator
-!! input
+!! wikitext
Terminating separator: http://example.com/thing,
-!! result
+!! html
<p>Terminating separator: <a rel="nofollow" class="external free" href="http://example.com/thing">http://example.com/thing</a>,
</p>
!! end
!! test
External links: intervening separator
-!! input
+!! wikitext
Intervening separator: http://example.com/1,2,3
-!! result
+!! html
<p>Intervening separator: <a rel="nofollow" class="external free" href="http://example.com/1,2,3">http://example.com/1,2,3</a>
</p>
!! end
!! test
External links: old bug with URL in query
-!! input
+!! wikitext
Old bug with URL in query: [http://example.com/thing?url=http://example.com link]
-!! result
+!! html
<p>Old bug with URL in query: <a rel="nofollow" class="external text" href="http://example.com/thing?url=http://example.com">link</a>
</p>
!! end
!! test
External links: old URL-in-URL bug, mixed protocols
-!! input
+!! wikitext
And again with mixed protocols: [ftp://example.com?url=http://example.com link]
-!! result
+!! html
<p>And again with mixed protocols: <a rel="nofollow" class="external text" href="ftp://example.com?url=http://example.com">link</a>
</p>
!!end
!! test
External links: URL in text
-!! input
+!! wikitext
URL in text: [http://example.com http://example.com]
-!! result
+!! html
<p>URL in text: <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
</p>
!! end
!! test
External links: Clickable images
-!! input
+!! wikitext
ja-style clickable images: [http://example.com http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png]
-!! result
+!! html
<p>ja-style clickable images: <a rel="nofollow" class="external text" href="http://example.com"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" /></a>
</p>
!!end
!! test
External links: raw ampersand
-!! input
+!! wikitext
Old & use: http://x&y
-!! result
+!! html
<p>Old & use: <a rel="nofollow" class="external free" href="http://x&y">http://x&y</a>
</p>
!! end
!! test
External links: encoded ampersand
-!! input
+!! wikitext
Old & use: http://x&y
-!! result
+!! html
<p>Old & use: <a rel="nofollow" class="external free" href="http://x&y">http://x&y</a>
</p>
!! end
!! test
External links: encoded equals (bug 6102)
-!! input
+!! wikitext
http://example.com/?foo=bar
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://example.com/?foo=bar">http://example.com/?foo=bar</a>
</p>
!! end
!! test
External links: [raw ampersand]
-!! input
+!! wikitext
Old & use: [http://x&y]
-!! result
+!! html
<p>Old & use: <a rel="nofollow" class="external autonumber" href="http://x&y">[1]</a>
</p>
!! end
!! test
External links: [encoded ampersand]
-!! input
+!! wikitext
Old & use: [http://x&y]
-!! result
+!! html
<p>Old & use: <a rel="nofollow" class="external autonumber" href="http://x&y">[1]</a>
</p>
!! end
!! test
External links: [encoded equals] (bug 6102)
-!! input
+!! wikitext
[http://example.com/?foo=bar]
-!! result
+!! html
<p><a rel="nofollow" class="external autonumber" href="http://example.com/?foo=bar">[1]</a>
</p>
!! end
!! test
External links: [IDN ignored character reference in hostname; strip it right off]
-!! input
+!! wikitext
[http://e‌xample.com/]
-!! result
+!! html
<p><a rel="nofollow" class="external autonumber" href="http://example.com/">[1]</a>
</p>
!! end
# The Parsoid team.
!! test
External links: IDN ignored character reference in hostname; strip it right off
-!! input
+!! wikitext
http://e‌xample.com/
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a>
</p>
!! end
!! test
External links: www.jpeg.org (bug 554)
-!! input
+!! wikitext
http://www.jpeg.org
-!!result
+!! html
<p><a rel="nofollow" class="external free" href="http://www.jpeg.org">http://www.jpeg.org</a>
</p>
!! end
!! test
External links: URL within URL (original bug 2)
-!! input
+!! wikitext
[http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp]
-!! result
+!! html
<p><a rel="nofollow" class="external autonumber" href="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp">[1]</a>
</p>
!! end
!! test
BUG 361: URL inside bracketed URL
-!! input
+!! wikitext
[http://www.example.com/foo http://www.example.com/bar]
-!! result
+!! html
<p><a rel="nofollow" class="external text" href="http://www.example.com/foo">http://www.example.com/bar</a>
</p>
!! end
!! test
BUG 361: URL within URL, not bracketed
-!! input
+!! wikitext
http://www.example.com/foo?=http://www.example.com/bar
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://www.example.com/foo?=http://www.example.com/bar">http://www.example.com/foo?=http://www.example.com/bar</a>
</p>
!! end
!! test
BUG 289: ">"-token in URL-tail
-!! input
+!! wikitext
http://www.example.com/<hello>
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://www.example.com/">http://www.example.com/</a><hello>
</p>
!!end
!! test
BUG 289: literal ">"-token in URL-tail
-!! input
+!! wikitext
http://www.example.com/<b>html</b>
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://www.example.com/">http://www.example.com/</a><b>html</b>
</p>
!!end
!! test
BUG 289: ">"-token in bracketed URL
-!! input
+!! wikitext
[http://www.example.com/<hello> stuff]
-!! result
+!! html
<p><a rel="nofollow" class="external text" href="http://www.example.com/"><hello> stuff</a>
</p>
!!end
!! test
BUG 289: literal ">"-token in bracketed URL
-!! input
+!! wikitext
[http://www.example.com/<b>html</b> stuff]
-!! result
+!! html
<p><a rel="nofollow" class="external text" href="http://www.example.com/"><b>html</b> stuff</a>
</p>
!!end
!! test
BUG 289: literal double quote at end of URL
-!! input
+!! wikitext
http://www.example.com/"hello"
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://www.example.com/">http://www.example.com/</a>"hello"
</p>
!!end
!! test
BUG 289: literal double quote in bracketed URL
-!! input
+!! wikitext
[http://www.example.com/"hello" stuff]
-!! result
+!! html
<p><a rel="nofollow" class="external text" href="http://www.example.com/">"hello" stuff</a>
</p>
!!end
!! test
External links: multiple legal whitespace is fine, Magnus. Don't break it please. (bug 5081)
-!! input
+!! wikitext
[http://www.example.com test]
-!! result
+!! html
<p><a rel="nofollow" class="external text" href="http://www.example.com">test</a>
</p>
!! end
!! test
External links: link text with spaces
-!! input
+!! wikitext
[http://www.example.com a b c]
[http://www.example.com ''a'' ''b'']
-!! result
+!! html
<p><a rel="nofollow" class="external text" href="http://www.example.com">a b c</a>
<a rel="nofollow" class="external text" href="http://www.example.com"><i>a</i> <i>b</i></a>
</p>
!! test
External links: wiki links within external link (Bug 3695)
-!! options
-php
-!! input
+!! wikitext
[http://example.com [[wikilink]] embedded in ext link]
-!! result
+!! html/php
<p><a rel="nofollow" class="external text" href="http://example.com"></a><a href="/index.php?title=Wikilink&action=edit&redlink=1" class="new" title="Wikilink (page does not exist)">wikilink</a><a rel="nofollow" class="external text" href="http://example.com"> embedded in ext link</a>
</p>
-!! end
-
-!! test
-Parsoid: External links: wiki links within external link (Bug 3695)
-!! options
-parsoid
-!! input
-[http://example.com [[wikilink]] embedded in ext link]
-!! result
+!! html/parsoid
<p><a rel="mw:ExtLink" href="http://example.com"></a><a rel="mw:WikiLink" href="./Wikilink">wikilink</a><span> embedded in ext link</span></p>
!! end
!! test
BUG 787: Links with one slash after the url protocol are invalid
-!! input
+!! wikitext
http:/example.com
[http:/example.com title]
-!! result
+!! html
<p>http:/example.com
</p><p>[http:/example.com title]
</p>
!! test
Bracketed external links with template-generated invalid target
-!! input
+!! wikitext
[{{echo|http:/example.com}} title]
-!! result
+!! html
<p>[http:/example.com title]
</p>
!! end
!! test
Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
-!! input
+!! wikitext
''[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
+!! html
<p><a rel="nofollow" class="external text" href="http://example.com"><i>text</i></a>
<a rel="nofollow" class="external text" href="http://example.com"><b>text</b></a>
<i>Something </i><a rel="nofollow" class="external text" href="http://example.com"><i>in italic</i></a>
!! test
Bug 4781: %26 in URL
-!! input
+!! wikitext
http://www.example.com/?title=AT%26T
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://www.example.com/?title=AT%26T">http://www.example.com/?title=AT%26T</a>
</p>
!! end
# % is actually legal in HTML5. Any change in output would need testing though.
!! test
Bug 4781, 5267: %25 in URL
-!! input
+!! wikitext
http://www.example.com/?title=100%25_Bran
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://www.example.com/?title=100%25_Bran">http://www.example.com/?title=100%25_Bran</a>
</p>
!! end
!! test
Bug 4781, 5267: %28, %29 in URL
-!! input
+!! wikitext
http://www.example.com/?title=Ben-Hur_%281959_film%29
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">http://www.example.com/?title=Ben-Hur_%281959_film%29</a>
</p>
!! end
!! test
Bug 4781: %26 in autonumber URL
-!! input
+!! wikitext
[http://www.example.com/?title=AT%26T]
-!! result
+!! html
<p><a rel="nofollow" class="external autonumber" href="http://www.example.com/?title=AT%26T">[1]</a>
</p>
!! end
!! test
Bug 4781, 5267: %26 in autonumber URL
-!! input
+!! wikitext
[http://www.example.com/?title=100%25_Bran]
-!! result
+!! html
<p><a rel="nofollow" class="external autonumber" href="http://www.example.com/?title=100%25_Bran">[1]</a>
</p>
!! end
!! test
Bug 4781, 5267: %28, %29 in autonumber URL
-!! input
+!! wikitext
[http://www.example.com/?title=Ben-Hur_%281959_film%29]
-!! result
+!! html
<p><a rel="nofollow" class="external autonumber" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">[1]</a>
</p>
!! end
!! test
Bug 4781: %26 in bracketed URL
-!! input
+!! wikitext
[http://www.example.com/?title=AT%26T link]
-!! result
+!! html
<p><a rel="nofollow" class="external text" href="http://www.example.com/?title=AT%26T">link</a>
</p>
!! end
!! test
Bug 4781, 5267: %26 in bracketed URL
-!! input
+!! wikitext
[http://www.example.com/?title=100%25_Bran link]
-!! result
+!! html
<p><a rel="nofollow" class="external text" href="http://www.example.com/?title=100%25_Bran">link</a>
</p>
!! end
!! test
Bug 4781, 5267: %28, %29 in bracketed URL
-!! input
+!! wikitext
[http://www.example.com/?title=Ben-Hur_%281959_film%29 link]
-!! result
+!! html
<p><a rel="nofollow" class="external text" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">link</a>
</p>
!! end
!! test
External link containing double-single-quotes in text '' (bug 4598 sanity check)
-!! input
+!! wikitext
Some [http://example.com/ pretty ''italics'' and stuff]!
-!! result
+!! html
<p>Some <a rel="nofollow" class="external text" href="http://example.com/">pretty <i>italics</i> and stuff</a>!
</p>
!! end
!! test
External link containing double-single-quotes in text embedded in italics (bug 4598 sanity check)
-!! input
+!! wikitext
''Some [http://example.com/ pretty ''italics'' and stuff]!''
-!! result
+!! html
<p><i>Some </i><a rel="nofollow" class="external text" href="http://example.com/"><i>pretty </i>italics<i> and stuff</i></a><i>!</i>
</p>
!! end
!! test
External link containing double-single-quotes with no space separating the url from text in italics
-!! options
-php
-!! input
+!! wikitext
[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
+!! html/php
<p><a rel="nofollow" class="external text" href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm"><i>La muerte de Casagemas</i> (1901) en el sitio de <a href="/index.php?title=Museo_Picasso_(Par%C3%ADs)&action=edit&redlink=1" class="new" title="Museo Picasso (París) (page does not exist)">Museo Picasso</a>.</a>
</p>
-!! end
-
-!! test
-Parsoid:External link containing double-single-quotes with no space separating the url from text in italics
-!! options
-parsoid
-!! 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
+!! html/parsoid
<p><a rel="mw:ExtLink" href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm"><i>La muerte de Casagemas</i> (1901) en el sitio de </a><a rel="mw:WikiLink" href="./Museo_Picasso_(París)">Museo Picasso</a><span>.</span></p>
!! end
!! test
External link with comments in link text
-!! input
+!! wikitext
[http://www.google.com Google <!-- comment -->]
-!! result
+!! html
<p><a rel="nofollow" class="external text" href="http://www.google.com">Google </a>
</p>
!! end
!! test
URL-encoding in URL functions (single parameter)
-!! input
+!! wikitext
{{localurl:Some page|amp=&}}
-!! result
+!! html
<p>/index.php?title=Some_page&amp=&
</p>
!! end
!! test
URL-encoding in URL functions (multiple parameters)
-!! input
+!! wikitext
{{localurl:Some page|q=?&=&}}
-!! result
+!! html
<p>/index.php?title=Some_page&q=?&amp=&
</p>
!! end
!! test
Brackets in urls
-!! input
+!! wikitext
http://example.com/index.php?foozoid%5B%5D=bar
http://example.com/index.php?foozoid[]=bar
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://example.com/index.php?foozoid%5B%5D=bar">http://example.com/index.php?foozoid%5B%5D=bar</a>
</p><p><a rel="nofollow" class="external free" href="http://example.com/index.php?foozoid%5B%5D=bar">http://example.com/index.php?foozoid%5B%5D=bar</a>
</p>
IPv6 urls (bug 21261)
!! options
disabled
-!! input
+!! wikitext
http://[2404:130:0:1000::187:2]/index.php
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://[2404:130:0:1000::187:2]/index.php">http://[2404:130:0:1000::187:2]/index.php</a>
</p>
!! end
!! test
Non-extlinks in brackets
-!! input
+!! wikitext
[foo]
[foo bar]
[foo ''bar'']
[{{echo|foo}}l's errand]
[url={{echo|foo}}]
[url=http://example.com]
-!! result
+!! html
<p>[foo]
[foo bar]
[foo <i>bar</i>]
!! end
!! test
-Parsoid: Percent encoding in external links
-!! options
-parsoid
-!! input
+Percent encoding in external links
+!! wikitext
[https://github.com/search?l=&q=ResourceLoader+%40wikimedia Search]
-!! result
+!! html/php
+<p><a rel="nofollow" class="external text" href="https://github.com/search?l=&q=ResourceLoader+%40wikimedia">Search</a>
+</p>
+!! html/parsoid
<p><a rel="mw:ExtLink"
href="https://github.com/search?l=&q=ResourceLoader+%40wikimedia">Search</a></p>
!! end
!! test
-Parsoid: use url link syntax for links where the content is equal the link
-target
-!! options
-parsoid
-!! input
+Use url link syntax for links where the content is equal the link target
+!! wikitext
http://example.com
-!! result
+!! html/php
+<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
+</p>
+!! html/parsoid
<p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a></p>
!! end
!! test
Parenthesis in external links, especially URL links
-!! options
-php
-!! input
+!! wikitext
http://example.com)
http://example.com/test)
http://example.com/a)b
[http://example.com) foo]
-!! result
+!! html/php
<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>)
</p><p><a rel="nofollow" class="external free" href="http://example.com/test">http://example.com/test</a>)
</p><p><a rel="nofollow" class="external free" href="http://example.com/(test)">http://example.com/(test)</a>
</p><p><a rel="nofollow" class="external free" href="http://example.com/a)b">http://example.com/a)b</a>
</p><p><a rel="nofollow" class="external text" href="http://example.com)">foo</a>
</p>
-!! end
-
-!! test
-Parenthesis in external links, especially URL links (Parsoid)
-!! options
-parsoid
-!! input
-http://example.com)
-
-http://example.com/test)
-
-http://example.com/(test)
-
-http://example.com/((test)
-
-(http://example.com/(test))
-
-(http://example.com/(test)))))
-
-http://example.com/a)b
-
-[http://example.com) foo]
-!! result
+!! html/parsoid
<p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a>)</p>
<p><a rel="mw:ExtLink" href="http://example.com/test">http://example.com/test</a>)</p>
<p><a rel="mw:ExtLink" href="http://example.com/(test)">http://example.com/(test)</a></p>
!! test
Parenthesis in external links, w/ transclusion or comment
-!! options
-parsoid
-!! input
+!! wikitext
(http://example.com/{{echo|hi}})
(http://example.com<!-- hi -->)
-!! result
+!! html/php
+<p>(<a rel="nofollow" class="external free" href="http://example.com/hi">http://example.com/hi</a>)
+</p><p>(<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>)
+</p>
+!! html/parsoid
<p>(<a data-mw='{"attribs":[[{"txt":"href"},{"html":"http://example.com/<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-mw=\"{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo&quot;,&quot;href&quot;:&quot;./Template:Echo&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;hi&quot;}},&quot;i&quot;:0}}]}\" data-parsoid=\"{&quot;dsr&quot;:[20,31,null,null],&quot;pi&quot;:[[{&quot;k&quot;:&quot;1&quot;,&quot;spc&quot;:[&quot;&quot;,&quot;&quot;,&quot;&quot;,&quot;&quot;]}]]}\">hi</span>"}]]}' typeof="mw:ExpandedAttrs" about="#mwt2" rel="mw:ExtLink" href="http://example.com/hi" data-parsoid='{"stx":"url","a":{"href":"http://example.com/hi"},"sa":{"href":"http://example.com/{{echo|hi}}"}}'>http://example.com/hi</a>)</p>
<p>(<a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url","a":{"href":"http://example.com"},"sa":{"href":"http://example.com<!-- hi -->"}}'>http://example.com</a>)</p>
!! test
Quotes
-!! input
+!! wikitext
Normal text. '''Bold text.''' Normal text. ''Italic text.''
Normal text. '''''Bold italic text.''''' Normal text.
-!!result
+!! html
<p>Normal text. <b>Bold text.</b> Normal text. <i>Italic text.</i>
</p><p>Normal text. <i><b>Bold italic text.</b></i> Normal text.
</p>
!! 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 (php)
-!! options
-php
-!! input
+Unclosed and unmatched quotes
+!! wikitext
'''''Bold italic text '''with bold deactivated''' in between.'''''
'''''Bold italic text ''with italic deactivated'' in between.'''''
''Tom'''s car is bigger than ''Susan'''s.
Plain ''italic'''s plain
-!! result
+!! html/php
<p><i><b>Bold italic text </b>with bold deactivated<b> in between.</b></i>
</p><p><b><i>Bold italic text </i>with italic deactivated<i> in between.</i></b>
</p><p><b>Bold text..</b>
</p><p><i>Tom<b>s car is bigger than </b></i><b>Susan</b>s.
</p><p>Plain <i>italic'</i>s plain
</p>
-!! 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.
-
-<!-- Unmatching number of opening, closing tags: -->
-'''This year''''s election ''should'' beat '''last year''''s.
-
-''Tom'''s car is bigger than ''Susan'''s.
-
-Plain ''italic'''s plain
-!! result
+!! html/parsoid
<p><i><b>Bold italic text </b>with bold deactivated<b> in between.</b></i>
</p><p><b><i>Bold italic text </i>with italic deactivated<i> in between.</i></b>
</p><p><b>Bold text..</b>
# This should not produce <table></table> as <table><tr><td></td></tr></table>
# 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)
+A table with no data.
!! options
parsoid=wt2html
-!! input
+!! wikitext
{||}
-!! result
+!! html/php
+
+!! html/parsoid
<table></table>
!! end
A table with stray table end tags on start tag line (wt2html)
!! options
parsoid=wt2html
-!! input
+!! wikitext
{|style="color: red;"|}
{|style="color: red;" |}
{|style="color: red;" |} id="foo"
|foo
|}
-!! result
+!! html
<table style="color: red;"></table>
<table style="color: red;">
!! end
!! test
-A table with no data (take 2) (parsoid)
-!! options
-parsoid
-!! input
+A table with no data (take 2)
+!! wikitext
{|
|}
-!! result
+!! html/parsoid
<table></table>
!! end
# A table with nothing but a caption is invalid XHTML, we might want to render
# this as <p>caption</p>
+# Parsoid team replies: table with only a caption is legal in HTML5
!! test
-A table with nothing but a caption (php)
-!! options
-php
-!! input
+A table with nothing but a caption
+!! wikitext
{|
|+ caption
|}
-!! result
+!! html/php
<table>
<caption> caption
</caption><tr><td></td></tr></table>
-!! 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
+!! html/parsoid
<table><caption> caption</caption></table>
!! end
!! test
A table with caption with default-spaced attributes and a table row
-!! input
+!! wikitext
{|
|+ style="color: red;" | caption1
|-
| foo
|}
-!! result
+!! html
<table>
<caption style="color: red;"> caption1
</caption>
!! test
A table with captions with non-default spaced attributes and a table row
-!! input
+!! wikitext
{|
|+style="color: red;"|caption2
|+ style="color: red;"| caption3
|-
| foo
|}
-!! result
+!! html
<table>
<caption style="color: red;">caption2
</caption>
!! test
Table td-cell syntax variations
-!! input
+!! wikitext
{|
| foo bar foo | baz
| foo bar foo || baz
| style='color:red;' | baz
| style='color:red;' || baz
|}
-!! result
+!! html
<table>
<tr>
<td> baz
!! test
Simple table
-!! input
+!! wikitext
{|
| 1 || 2
|-
| 3 || 4
|}
-!! result
+!! html
<table>
<tr>
<td> 1 </td>
!! test
Simple table but with multiple dashes for row wikitext
-!! input
+!! wikitext
{|
| foo
|-----
| bar
|}
-!! result
+!! html
<table>
<tr>
<td> foo
!! end
!! test
Multiplication table
-!! input
+!! wikitext
{| border="1" cellpadding="2"
|+Multiplication table
|-
! 5
| 5 || 10 || 15
|}
-!! result
+!! html
<table border="1" cellpadding="2">
<caption>Multiplication table
</caption>
!! test
Accept "||" in table headings
-!! input
+!! wikitext
{|
!h1 || h2
|}
-!! result
+!! html
<table>
<tr>
<th>h1 </th>
!! test
Accept "||" in indented table headings
-!! input
+!! wikitext
:{|
!h1 || h2
|}
-!! result
+!! html
<dl><dd><table>
<tr>
<th>h1 </th>
!! test
Accept empty attributes in td/th cells (td/th cells starting with leading ||)
-!! input
+!! wikitext
{|
!| h1
|| a
|}
-!! result
+!! html
<table>
<tr>
<th> h1
!!test
Accept "| !" at start of line in tables (ignore !-attribute)
-!!input
+!! wikitext
{|
|-
| !style="color:red" | bar
|}
-!!result
+!! html
<table>
<tr>
!!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
+!! wikitext
{|
|-
|style='color:red;'|+1
| +1
| -1
|}
-!!result
+!! html
<table>
<tr>
!! test
Table rowspan
-!! input
+!! wikitext
{| border=1
| Cell 1, row 1
|rowspan=2| Cell 2, row 1 (and 2)
| Cell 1, row 2
| Cell 3, row 2
|}
-!! result
+!! html
<table border="1">
<tr>
<td> Cell 1, row 1
!! test
Nested table
-!! input
+!! wikitext
{| border=1
| α
|
|}
|the original table again
|}
-!! result
+!! html
<table border="1">
<tr>
<td> α
!! test
Invalid attributes in table cell (bug 1830)
-!! input
+!! wikitext
{|
|Cell:|broken
|}
-!! result
+!! html
<table>
<tr>
<td>broken
!! test
Table security: embedded pipes (http://lists.wikimedia.org/mailman/htdig/wikitech-l/2006-April/022293.html)
-!! input
+!! wikitext
{|
| |[ftp://|x||]" onmouseover="alert(document.cookie)">test
-!! result
+!! html
<table>
<tr>
<td>[<a rel="nofollow" class="external free" href="ftp://%7Cx">ftp://%7Cx</a></td>
!! test
Indented table markup mixed with indented pre content (proposed in bug 6200)
-!! input
+!! wikitext
<table>
<tr>
<td>
</td>
</tr>
</table>
-!! result
+!! html
<table>
<tr>
<td>
!! test
Template-generated table cell attributes and cell content
-!! input
+!! wikitext
{|
|{{table_attribs}}
| {{table_attribs}}
|}
-!! result
+!! html
<table>
<tr>
<td style="color: red"> Foo
!! test
Template-generated table cell attributes and cell content (2)
-!! input
+!! wikitext
{|
|align=center {{table_attribs}}
|}
-!! result
+!! html
<table>
<tr>
<td align="center" style="color: red"> Foo
!! test
Template-generated table cell attributes and cell content (3)
-!! input
+!! wikitext
{|
|align=center {{table_cells}}
|}
-!! result
+!! html
<table>
<tr>
<td align="center" style="color: red"> Foo </td>
!! test
Table with row followed by newlines and table heading
-!! input
+!! wikitext
{|
|-
! foo
|}
-!! result
+!! html
<table>
!! test
Table with empty line following the start tag
-!! input
+!! wikitext
{|
|-
| foo
|}
-!! result
+!! html
<table>
# the PHP parser. Parsoid implements the behavior below.
!! test
Table attributes with empty value
-!! options
-parsoid
-!! input
+!! wikitext
{|
| style=| hello
|}
-!! result
+!! html/parsoid
<table>
<tbody>
<tr>
!! test
Wikitext table with a lot of comments
-!! input
+!! wikitext
{|
<!-- c0 -->
| foo
|<!-- c4 -->
<!-- c5 -->
|}
-!! result
+!! html
<table>
<tr>
<td> foo
!! test
Wikitext table with double-line table cell
-!! input
+!! wikitext
{|
|a
b
|}
-!! result
+!! html
<table>
<tr>
<td>a
!! test
Table cell with a single comment
-!! input
+!! wikitext
{|
| <!-- c1 -->
| a
|}
-!! result
+!! html
<table>
<tr>
<td>
# 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
+Wikitext table with html-syntax row
+!! wikitext
{|
|-
<td>foo</td>
|}
-!! result
+!! html/parsoid
<table>
<tbody>
<tr>
(PHP parser relies on Tidy to add the missing <td> tags)
!! options
parsoid=wt2html,wt2wt
-!! input
+!! wikitext
{|
|-
a
|}
-!! result
+!! html
<table>
<tr><td>a</td></tr>
</table>
(PHP parser relies on Tidy to add the missing <td> tags)
!! options
parsoid=wt2html,wt2wt
-!! input
+!! wikitext
{|
|-
|
|-
b
|}
-!! result
+!! html
<table>
<tbody>
<tr><td><pre>a</pre></td></tr>
(PHP parser relies on Tidy to add the missing <td> tags)
!! options
parsoid=wt2html,wt2wt
-!! input
+!! wikitext
{|
|-
*a
|}
-!! result
+!! html
<table>
<tr>
<td><ul>
Parsoid: Round-trip tables directly followed by content (bug 51219)
!! options
parsoid=wt2html,wt2wt
-!! input
+!! wikitext
{|
|foo
|} bar
{|
|baz
|}<b>quux</b>
-!! result
+!! html
<table><tbody>
<tr>
<td>foo</td></tr></tbody></table> bar
Parsoid: Default to a newline after tables in new content (bug 51219)
!! options
parsoid=html2wt
-!! input
+!! wikitext
{|
|foo
|}
|baz
|}
'''quux'''
-!! result
+!! html
<table><tbody>
<tr><td>foo</td></tr></tbody></table> bar
<table><tbody>
Parsoid: newline inducing block nodes don't suppress <nowiki>
!! options
parsoid=html2wt
-!! input
+!! wikitext
<nowiki> </nowiki>a
= foo =
-!! result
+!! html
a<h1>foo</h1>
!! end
###
!! test
Plain link, capitalized
-!! input
+!! wikitext
[[Main Page]]
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
</p>
!! end
!! test
Plain link, uncapitalized
-!! input
+!! wikitext
[[main Page]]
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">main Page</a>
</p>
!! end
!! test
Piped link
-!! input
+!! wikitext
[[Main Page|The Main Page]]
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">The Main Page</a>
</p>
!! end
!! test
Piped link with comment in link text
-!! input
+!! wikitext
[[Main Page|The Main<!--front--> Page]]
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">The Main Page</a>
</p>
!! end
!! test
Broken link
-!! input
+!! wikitext
[[Zigzagzogzagzig]]
-!! result
+!! html
<p><a href="/index.php?title=Zigzagzogzagzig&action=edit&redlink=1" class="new" title="Zigzagzogzagzig (page does not exist)">Zigzagzogzagzig</a>
</p>
!! end
!! test
Broken link with fragment
-!! input
+!! wikitext
[[Zigzagzogzagzig#zug]]
-!! result
+!! html
<p><a href="/index.php?title=Zigzagzogzagzig&action=edit&redlink=1" class="new" title="Zigzagzogzagzig (page does not exist)">Zigzagzogzagzig#zug</a>
</p>
!! end
!! test
Special page link with fragment
-!! input
+!! wikitext
[[Special:Version#anchor]]
-!! result
+!! html
<p><a href="/wiki/Special:Version#anchor" title="Special:Version">Special:Version#anchor</a>
</p>
!! end
!! test
Nonexistent special page link with fragment
-!! input
+!! wikitext
[[Special:ThisNameWillHopefullyNeverBeUsed#anchor]]
-!! result
+!! html
<p><a href="/wiki/Special:ThisNameWillHopefullyNeverBeUsed" class="new" title="Special:ThisNameWillHopefullyNeverBeUsed (page does not exist)">Special:ThisNameWillHopefullyNeverBeUsed#anchor</a>
</p>
!! end
!! test
Link with prefix
-!! input
+!! wikitext
xxx[[main Page]], xxx[[Main Page]], Xxx[[main Page]] XXX[[main Page]], XXX[[Main Page]]
-!! result
+!! html
<p>xxx<a href="/wiki/Main_Page" title="Main Page">main Page</a>, xxx<a href="/wiki/Main_Page" title="Main Page">Main Page</a>, Xxx<a href="/wiki/Main_Page" title="Main Page">main Page</a> XXX<a href="/wiki/Main_Page" title="Main Page">main Page</a>, XXX<a href="/wiki/Main_Page" title="Main Page">Main Page</a>
</p>
!! end
!! test
Link with suffix
-!! input
+!! wikitext
[[Main Page]]xxx, [[Main Page]]XXX, [[Main Page]]!!!
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">Main Pagexxx</a>, <a href="/wiki/Main_Page" title="Main Page">Main Page</a>XXX, <a href="/wiki/Main_Page" title="Main Page">Main Page</a>!!!
</p>
!! end
!! test
Bug 43661: Piped links with identical prefixes
-!! input
+!! wikitext
[[prefixed article|prefixed articles with spaces]]
[[prefixed article|prefixed articlesaoeu]]
[[Main Page|Main Page test]]
-!! result
+!! html
<p><a href="/wiki/Prefixed_article" title="Prefixed article">prefixed articles with spaces</a>
</p><p><a href="/wiki/Prefixed_article" title="Prefixed article">prefixed articlesaoeu</a>
</p><p><a href="/wiki/Main_Page" title="Main Page">Main Page test</a>
!! test
Link with HTML entity in suffix / tail
-!! input
+!! wikitext
[[Main Page]]", [[Main Page]]a
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>", <a href="/wiki/Main_Page" title="Main Page">Main Page</a>a
</p>
!! end
!! test
Link with 3 brackets
-!! input
+!! wikitext
[[[Main Page]]]
-!! result
+!! html
<p>[[[Main Page]]]
</p>
!! end
!! test
Link with 4 brackets
-!! input
+!! wikitext
[[[[Main Page]]]]
-!! result
+!! html
<p>[[<a href="/wiki/Main_Page" title="Main Page">Main Page</a>]]
</p>
!! end
!! test
Piped link with 3 brackets
-!! input
+!! wikitext
[[[main page|the main page]]]
-!! result
+!! html
<p>[[[main page|the main page]]]
</p>
!! end
!! test
Piped link with extlink-like text
-!! input
+!! wikitext
[[Main Page|[bar]]]
[[Main Page|This is a [bar]]]
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">[bar]</a>
<a href="/wiki/Main_Page" title="Main Page">This is a [bar]</a>
</p>
!! test
Link with multiple pipes
-!! input
+!! wikitext
[[Main Page|The|Main|Page]]
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">The|Main|Page</a>
</p>
!! end
!! test
Link to namespaces
-!! input
+!! wikitext
[[Talk:Parser testing]], [[Meta:Disclaimers]]
-!! result
+!! html
<p><a href="/index.php?title=Talk:Parser_testing&action=edit&redlink=1" class="new" title="Talk:Parser testing (page does not exist)">Talk:Parser testing</a>, <a href="/index.php?title=Meta:Disclaimers&action=edit&redlink=1" class="new" title="Meta:Disclaimers (page does not exist)">Meta:Disclaimers</a>
</p>
!! end
!! test
Namespace takes precedence over interwiki link (bug 51680)
-!! input
+!! wikitext
[[MemoryAlpha:AlphaTest]]
-!! result
+!! html
<p><a href="/wiki/MemoryAlpha:AlphaTest" title="MemoryAlpha:AlphaTest">MemoryAlpha:AlphaTest</a>
</p>
!! end
Link to namespace preferred over interwiki with correct rel attribute
!! options
parsoid=html2wt,html2html
-!! input
+!! wikitext
[[MemoryAlpha:AlphaTest]]
-!! result
+!! html
<p><a rel="mw:WikiLink" href="./MemoryAlpha:AlphaTest">MemoryAlpha:AlphaTest</a>
</p>
!! end
!! test
Piped link to namespace
-!! input
+!! wikitext
[[Meta:Disclaimers|The disclaimers]]
-!! result
+!! html
<p><a href="/index.php?title=Meta:Disclaimers&action=edit&redlink=1" class="new" title="Meta:Disclaimers (page does not exist)">The disclaimers</a>
</p>
!! end
!! test
Link containing }
-!! input
+!! wikitext
[[Usually caused by a typo (oops}]]
-!! result
+!! html
<p>[[Usually caused by a typo (oops}]]
</p>
!! end
!! test
Link containing % (not as a hex sequence)
-!! input
+!! wikitext
[[7% Solution]]
-!! result
+!! html
<p><a href="/index.php?title=7%25_Solution&action=edit&redlink=1" class="new" title="7% Solution (page does not exist)">7% Solution</a>
</p>
!! end
!! test
Link containing % as a single hex sequence interpreted to char
-!! input
+!! wikitext
[[7%25 Solution]]
-!! result
+!! html
<p><a href="/index.php?title=7%25_Solution&action=edit&redlink=1" class="new" title="7% Solution (page does not exist)">7% Solution</a>
</p>
!!end
!! test
Link containing % as a double hex sequence interpreted to hex sequence
-!! input
+!! wikitext
[[7%2525 Solution]]
-!! result
+!! html
<p>[[7%2525 Solution]]
</p>
!!end
!! test
Link containing "#<" and "#>" % as a hex sequences- these are valid section anchors
Example for such a section: == < ==
-!! input
+!! wikitext
[[%23%3c]][[%23%3e]]
-!! result
+!! html
<p><a href="#.3C">#<</a><a href="#.3E">#></a>
</p>
!! end
!! test
Link containing "<#" and ">#" as a hex sequences
-!! input
+!! wikitext
[[%3c%23]][[%3e%23]]
-!! result
+!! html
<p>[[%3c%23]][[%3e%23]]
</p>
!! end
!! test
Link containing an equals sign
-!! input
+!! wikitext
[[Special:BookSources/isbn=4-00-026157-6]]
-!! result
+!! html
<p><a href="/wiki/Special:BookSources/isbn%3D4-00-026157-6" title="Special:BookSources/isbn=4-00-026157-6">Special:BookSources/isbn=4-00-026157-6</a>
</p>
!! end
# seen by the parser.
!! test
Link containing a tilde
-!! input
+!! wikitext
[[Foo~bar]]
-!! result
+!! html
<p><a href="/wiki/Foo%7Ebar" title="Foo~bar">Foo~bar</a>
</p>
!! end
!! test
Link containing double-single-quotes '' (bug 4598)
-!! input
+!! wikitext
[[Lista d''e paise d''o munno]]
-!! result
+!! html
<p><a href="/index.php?title=Lista_d%27%27e_paise_d%27%27o_munno&action=edit&redlink=1" class="new" title="Lista d''e paise d''o munno (page does not exist)">Lista d''e paise d''o munno</a>
</p>
!! end
!! test
Link containing double-single-quotes '' in text (bug 4598 sanity check)
-!! input
+!! wikitext
Some [[Link|pretty ''italics'' and stuff]]!
-!! result
+!! html
<p>Some <a href="/index.php?title=Link&action=edit&redlink=1" class="new" title="Link (page does not exist)">pretty <i>italics</i> and stuff</a>!
</p>
!! end
!! test
Link containing double-single-quotes '' in text embedded in italics (bug 4598 sanity check)
-!! input
+!! wikitext
''Some [[Link|pretty ''italics'' and stuff]]!
-!! result
+!! html
<p><i>Some <a href="/index.php?title=Link&action=edit&redlink=1" class="new" title="Link (page does not exist)">pretty <i>italics</i> and stuff</a>!</i>
</p>
!! end
!! test
Link with double quotes in title part (literal) and alternate part (interpreted)
-!! input
+!! wikitext
[[File:Denys Savchenko ''Pentecoste''.jpg]]
[[''Pentecoste'']]
[[''Pentecoste''|Pentecoste]]
[[''Pentecoste''|''Pentecoste'']]
-!! result
+!! html
<p><a href="/index.php?title=Special:Upload&wpDestFile=Denys_Savchenko_%27%27Pentecoste%27%27.jpg" class="new" title="File:Denys Savchenko ''Pentecoste''.jpg">File:Denys Savchenko <i>Pentecoste</i>.jpg</a>
</p><p><a href="/index.php?title=%27%27Pentecoste%27%27&action=edit&redlink=1" class="new" title="''Pentecoste'' (page does not exist)">''Pentecoste''</a>
</p><p><a href="/index.php?title=%27%27Pentecoste%27%27&action=edit&redlink=1" class="new" title="''Pentecoste'' (page does not exist)">Pentecoste</a>
!! test
Broken image links with HTML captions (bug 39700)
-!! input
+!! wikitext
[[File:Nonexistent|<script></script>]]
[[File:Nonexistent|100px|<script></script>]]
[[File:Nonexistent|<]]
[[File:Nonexistent|a<i>b</i>c]]
-!! result
+!! html
<p><a href="/index.php?title=Special:Upload&wpDestFile=Nonexistent" class="new" title="File:Nonexistent"><script></script></a>
<a href="/index.php?title=Special:Upload&wpDestFile=Nonexistent" class="new" title="File:Nonexistent"><script></script></a>
<a href="/index.php?title=Special:Upload&wpDestFile=Nonexistent" class="new" title="File:Nonexistent"><</a>
!! test
Plain link to URL
-!! input
+!! wikitext
[[http://www.example.com]]
-!! result
+!! html
<p>[<a rel="nofollow" class="external autonumber" href="http://www.example.com">[1]</a>]
</p>
!! end
!! test
Plain link to URL with link text
-!! input
+!! wikitext
[[http://www.example.com Link text]]
-!! result
+!! html
<p>[<a rel="nofollow" class="external text" href="http://www.example.com">Link text</a>]
</p>
!! end
!! test
Plain link to protocol-relative URL
-!! input
+!! wikitext
[[//www.example.com]]
-!! result
+!! html
<p>[<a rel="nofollow" class="external autonumber" href="//www.example.com">[1]</a>]
</p>
!! end
!! test
Plain link to protocol-relative URL with link text
-!! input
+!! wikitext
[[//www.example.com Link text]]
-!! result
+!! html
<p>[<a rel="nofollow" class="external text" href="//www.example.com">Link text</a>]
</p>
!! end
!! test
Plain link to page with question mark in title
-!! input
+!! wikitext
[[A?b]]
[[A?b|Baz]]
-!! result
+!! html
<p><a href="/wiki/A%3Fb" title="A?b">A?b</a>
</p><p><a href="/wiki/A%3Fb" title="A?b">Baz</a>
</p>
# -- wtm
!! test
Piped link to URL
-!! input
+!! wikitext
Piped link to URL: [[http://www.example.com|an example URL]]
-!! result
+!! html
<p>Piped link to URL: [<a rel="nofollow" class="external text" href="http://www.example.com%7Can">example URL</a>]
</p>
!! end
!! test
BUG 2: [[page|http://url/]] should link to page, not http://url/
-!! input
+!! wikitext
[[Main Page|http://url/]]
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">http://url/</a>
</p>
!! end
BUG 337: Escaped self-links should be bold
!! options
title=[[Bug462]]
-!! input
+!! wikitext
[[Bug462]] [[Bug462]]
-!! result
+!! html
<p><strong class="selflink">Bug462</strong> <strong class="selflink">Bug462</strong>
</p>
!! end
Self-link to section should not be bold
!! options
title=[[Main Page]]
-!! input
+!! wikitext
[[Main Page#section]]
-!! result
+!! html
<p><a href="/wiki/Main_Page#section" title="Main Page">Main Page#section</a>
</p>
!! end
Self-link to numeric title
!!options
title=[[0]]
-!!input
+!! wikitext
[[0]]
-!!result
+!! html
<p><strong class="selflink">0</strong>
</p>
!!end
Link to numeric-equivalent title
!!options
title=[[0]]
-!!input
+!! wikitext
[[00]]
-!!result
+!! html
<p><a href="/wiki/00" title="00">00</a>
</p>
!!end
!! test
<nowiki> inside a link
-!! input
+!! wikitext
[[Main<nowiki> Page</nowiki>]] [[Main Page|the main page <nowiki>[it's not very good]</nowiki>]]
-!! result
+!! html
<p>[[Main Page]] <a href="/wiki/Main_Page" title="Main Page">the main page [it's not very good]</a>
</p>
!! end
!! test
Non-breaking spaces in title
-!! input
+!! wikitext
[[ Main Page ]]
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">  Main   Page  </a>
</p>
!!end
Internal link with ca linktrail, surrounded by bold apostrophes (bug 27473 primary issue)
!! options
language=ca
-!! input
+!! wikitext
'''[[Main Page]]'''
-!! result
+!! html
<p><b><a href="/wiki/Main_Page" title="Main Page">Main Page</a></b>
</p>
!! end
Internal link with ca linktrail, surrounded by italic apostrophes (bug 27473 primary issue)
!! options
language=ca
-!! input
+!! wikitext
''[[Main Page]]''
-!! result
+!! html
<p><i><a href="/wiki/Main_Page" title="Main Page">Main Page</a></i>
</p>
!! end
Internal link with en linktrail: no apostrophes (bug 27473)
!! options
language=en
-!! input
+!! wikitext
[[Something]]'nice
-!! result
+!! html
<p><a href="/index.php?title=Something&action=edit&redlink=1" class="new" title="Something (page does not exist)">Something</a>'nice
</p>
!! end
Internal link with ca linktrail with apostrophes (bug 27473)
!! options
language=ca
-!! input
+!! wikitext
[[Something]]'nice
-!! result
+!! html
<p><a href="/index.php?title=Something&action=edit&redlink=1" class="new" title="Something (encara no existeix)">Something'nice</a>
</p>
!! end
Internal link with kaa linktrail with apostrophes (bug 27473)
!! options
language=kaa
-!! input
+!! wikitext
[[Something]]'nice
-!! result
+!! html
<p><a href="/index.php?title=Something&action=edit&redlink=1" class="new" title="Something (bet ele jaratılmag'an)">Something'nice</a>
</p>
!! end
1. Interaction of linktrail and template encapsulation
!! options
parsoid
-!! input
+!! wikitext
{{echo|[[Foo]]}}l
-!! result
+!! html
<p><a rel="mw:WikiLink" href="Foo" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Foo]]"}},"i":0}},"l"]}'>Fool</a></p>
!! end
2. Interaction of linktrail and template encapsulation
!! options
parsoid
-!! input
+!! wikitext
{{echo|Some [[Fool]]}}s
-!! result
+!! html
<p data-parsoid='{}'><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Some [[Fool]]"}},"i":0}},"s"]}' data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}'>Some </span><a rel="mw:WikiLink" href="./Fool" about="#mwt1" data-parsoid='{"stx":"simple","a":{"href":"./Fool"},"sa":{"href":"Fool"},"tail":"s"}'>Fools</a></p>
!! end
3. Interaction of linktrail and template encapsulation
!! options
parsoid
-!! input
+!! wikitext
{{echo|Some [[Fool]]s are '''bold and foolish'''}}
-!! result
+!! html
<p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Some [[Fool]]s are '''bold and foolish'''"}},"i":0}}]}' data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}'>Some <a rel="mw:WikiLink" href="./Fool" data-parsoid='{"stx":"simple","a":{"href":"./Fool"},"sa":{"href":"Fool"},"tail":"s"}'>Fools</a> are <b data-parsoid="{}">bold and foolish</b></p>
!! end
Internal link with is link prefix
!! options
language=is
-!! input
+!! wikitext
Aðrir mótmælenda[[söfnuður|söfnuðir]] og
-!! result
+!! html
<p>Aðrir <a href="/wiki/S%C3%B6fnu%C3%B0ur" title="Söfnuður">mótmælendasöfnuðir</a> og
</p>
!! end
Internal link with is link trail and link prefix
!! options
language=is
-!! input
+!! wikitext
[[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
+!! html
<p><a href="/wiki/M%C3%B3tm%C3%A6lendatr%C3%BA" title="Mótmælendatrú">xxxar</a>
<a href="/wiki/M%C3%B3tm%C3%A6lendatr%C3%BA" title="Mótmælendatrú">mótmælendatrúar</a>
<a href="/wiki/S%C3%B6fnu%C3%B0ur" title="Söfnuður">mótmælendasöfnuður</a>
Parsoid link trail escaping
!! options
parsoid=html2wt,html2html
-!! input
+!! wikitext
[[apple]]<nowiki/>s
-!! result
+!! html
<p><a rel="mw:WikiLink" href="Apple">apple</a>s</p>
!! end
!! options
language=is
parsoid=html2wt,html2html
-!! input
+!! wikitext
Aðrir mótmælenda<nowiki/>[[söfnuður]]
-!! result
+!! html
<p>Aðrir mótmælenda<a rel="mw:WikiLink" href="Söfnuður">söfnuður</a></p>
!! end
!! test
Parsoid-centric test: Whitespace in ext- and wiki-links should be preserved
-!! input
+!! wikitext
[[Foo| bar]]
[[Foo| ''bar'']]
[http://wp.org foo]
[http://wp.org ''foo'']
-!! result
+!! html
<p><a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)"> bar</a>
</p><p><a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)"> <i>bar</i></a>
</p><p><a rel="nofollow" class="external text" href="http://wp.org">foo</a>
Parsoid: Scoped parsing should handle mixed transclusions and plain text
!! options
parsoid
-!! input
+!! wikitext
[[Foo|{{echo|a}} b {{echo|c}}]]
-!! result
+!! html
<p><a rel="mw:WikiLink" href="Foo"><span about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a"}},"i":0}}]}'>a</span> b <span about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"c"}},"i":0}}]}'>c</span></a></p>
!! end
!! test
Inline interwiki link
-!! input
+!! wikitext
[[MeatBall:SoftSecurity]]
-!! result
+!! html
<p><a href="http://www.usemod.com/cgi-bin/mb.pl?SoftSecurity" class="extiw" title="meatball:SoftSecurity">MeatBall:SoftSecurity</a>
</p>
!! end
!! test
Inline interwiki link with empty title (bug 2372)
-!! input
+!! wikitext
[[MeatBall:]]
-!! result
+!! html
<p><a href="http://www.usemod.com/cgi-bin/mb.pl" class="extiw" title="meatball:">MeatBall:</a>
</p>
!! end
!! test
Interwiki link encoding conversion (bug 1636)
-!! input
+!! wikitext
*[[Wikipedia:ro:Olteniţa]]
*[[Wikipedia:ro:Olteniţa]]
-!! result
+!! html
<ul>
<li><a href="http://en.wikipedia.org/wiki/ro:Olteni%C5%A3a" class="extiw" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteniţa</a>
</li>
!! test
Interwiki link with fragment (bug 2130)
-!! input
+!! wikitext
[[MeatBall:SoftSecurity#foo]]
-!! result
+!! html
<p><a href="http://www.usemod.com/cgi-bin/mb.pl?SoftSecurity#foo" class="extiw" title="meatball:SoftSecurity">MeatBall:SoftSecurity#foo</a>
</p>
!! end
Different interwiki prefixes mapping to the same URL
!! options
parsoid
-!! input
+!! wikitext
[[wikipedia:Foo]]
[[:en:Foo]]
-!! result
+!! html
<p><a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/Foo" data-parsoid='{"stx":"simple","a":{"href":"http://en.wikipedia.org/wiki/Foo"},"sa":{"href":"wikipedia:Foo"},"isIW":true}'>wikipedia:Foo</a></p>
<p><a rel="mw:ExtLink" href="//en.wikipedia.org/wiki/Foo" data-parsoid='{"stx":"simple","a":{"href":"//en.wikipedia.org/wiki/Foo"},"sa":{"href":":en:Foo"},"isIW":true}'>en:Foo</a></p>
Interwiki links that cannot be represented in wiki syntax
!! options
parsoid
-!! input
+!! wikitext
[[meatball:ok]]
[[meatball:ok#foo|ok with fragment]]
[[meatball:ok_as_well?|ok ending with ? mark]]
[http://de.wikipedia.org/wiki/Foo?action=history has query]
[http://de.wikipedia.org/wiki/#foo is just fragment]
-!! result
+!! html
<p><a rel="mw:ExtLink" href="http://www.usemod.com/cgi-bin/mb.pl?ok">meatball:ok</a>
<a rel="mw:ExtLink" href="http://www.usemod.com/cgi-bin/mb.pl?ok#foo">ok with fragment</a>
<a rel="mw:ExtLink" href="http://www.usemod.com/cgi-bin/mb.pl?ok_as_well%3F">ok ending with ? mark</a>
Interwiki links: trail
!! options
parsoid
-!! input
+!! wikitext
[[wikipedia:Foo|Ba]]r
-!! result
+!! html
<p data-parsoid='{}'><a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/Foo" data-parsoid='{"stx":"piped","a":{"href":"http://en.wikipedia.org/wiki/Foo"},"sa":{"href":"wikipedia:Foo"},"isIW":true,"tail":"r"}'>Bar</a></p>
!! end
!! test
Interlanguage link
-!! input
+!! wikitext
Blah blah blah
[[zh:Chinese]]
-!!result
+!! html
<p>Blah blah blah
</p>
!! end
!! test
Double interlanguage link
-!! input
+!! wikitext
Blah blah blah
[[es:Spanish]]
[[zh:Chinese]]
-!!result
+!! html
<p>Blah blah blah
</p>
!! end
Interlanguage link, with prefix links
!! options
language=ln
-!! input
+!! wikitext
Blah blah blah
[[zh:Chinese]]
-!!result
+!! html
<p>Blah blah blah
</p>
!! end
Double interlanguage link, with prefix links (bug 8897)
!! options
language=ln
-!! input
+!! wikitext
Blah blah blah
[[es:Spanish]]
[[zh:Chinese]]
-!!result
+!! html
<p>Blah blah blah
</p>
!! end
Parsoid-specific test: Wikilinks with should RT properly
!! options
language=ln
-!! input
+!! wikitext
[[WW II]]
-!!result
+!! html
<p><a href="/index.php?title=WW_II&action=edit&redlink=1" class="new" title="WW II (lonkásá ezalí tɛ̂)">WW II</a>
</p>
!! end
Parsoid bug 53221: Wikilinks should be properly entity-escaped
!! options
parsoid=html2wt
-!! input
+!! wikitext
He&nbsp;llo [[Foo|He&nbsp;llo]]
He&nbsp;llo [[He&nbsp;llo]]
-!!result
+!! html
<p>He&nbsp;llo <a href="Foo" rel="mw:WikiLink">He&nbsp;llo</a></p>
<p>He&nbsp;llo <a href="He&nbsp;llo" rel="mw:WikiLink">He&nbsp;llo</a></p>
!! end
Parsoid: handle constructor well
!! options
parsoid
-!! input
+!! wikitext
[[constructor]]
[[constructor:foo]]
-!! result
+!! html
<p><a rel="mw:WikiLink" href="./Constructor" data-parsoid="{"stx":"simple","a":{"href":"./Constructor"},"sa":{"href":"constructor"}}">constructor</a></p>
<p><a rel="mw:WikiLink" href="./Foo" data-parsoid="{"stx":"simple","a":{"href":"./Foo"},"sa":{"href":"constructor:foo"}}">constructor:foo</a></p>
Parsoid: recognize interlanguage links without a target page
!! options
parsoid
-!! input
+!! wikitext
[[ko:]]
-!! result
+!! html
<p>
<link rel="mw:PageProp/Language" href="http://ko.wikipedia.org/wiki/"></p>
!! end
Parsoid: recognize interwiki links without a target page
!! options
parsoid
-!! input
+!! wikitext
[[:ko:]]
-!! result
+!! html
<p><a rel="mw:ExtLink" href="//ko.wikipedia.org/wiki/">ko:</a></p>
!! end
Parsoid: Bug #45209, handle interwiki links pointing to the current wiki as plain wiki links
!! options
parsoid
-!! input
+!! wikitext
[[en:Foo]]
-!! result
+!! html
<p><a rel="mw:WikiLink" href="./Foo" data-parsoid='{"stx":"simple","a":{"href":"./Foo"},"sa":{"href":"en:Foo"}}'>Foo</a></p>
!! end
1. Simple redirect to page
!! options
parsoid
-!! input
+!! wikitext
#REDIRECT [[Main Page]]
-!! result
+!! html
<link rel="mw:PageProp/redirect" href="./Main_Page">
!! end
2. Other redirect variants
!! options
parsoid=wt2html,wt2wt
-!! input
+!! wikitext
#REDIRECT [[Main_Page]]
#REDIRECT [[<nowiki>[[Bar]]</nowiki>]]
-!! result
+!! html
<link rel="mw:PageProp/redirect" href="./Main_Page">
<link rel="mw:PageProp/redirect" href="./%5B%5BBar%5D%5D">
!! end
# 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
+!! wikitext
#REDIRECT:[[Main Page]]
-!! result
+!! html
<link rel="mw:PageProp/redirect" href="./Main_Page">
!! end
# it for wt2html, but we don't care that it roundtrips back to the
# modern syntax (without extra whitespace)
parsoid=wt2html,html2html
-!! input
+!! wikitext
#REDIRECT
:
[[Main Page]]
-!! result
+!! html
<link rel="mw:PageProp/redirect" href="./Main_Page">
!! end
# 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
+!! wikitext
#REDIRECT [[Main Page|bar]]
-!! result
+!! html
<link rel="mw:PageProp/redirect" href="./Main_Page">
!! end
Redirect to category
!! options
parsoid=wt2html
-!! input
+!! wikitext
#REDIRECT [[Category:Foo]]
-!! result
+!! html
<link rel="mw:PageProp/redirect" href="./Category:Foo"><link rel="mw:PageProp/Category" href="./Category:Foo">
!! end
Redirect to category with URL encoding
!! options
parsoid=wt2html
-!! input
+!! wikitext
#REDIRECT [[Category%3AFoo]]
-!! result
+!! html
<link rel="mw:PageProp/redirect" href="./Category:Foo"><link rel="mw:PageProp/Category" href="./Category:Foo">
!! end
Redirect to category page
!! options
parsoid=wt2html,html2html
-!! input
+!! wikitext
#REDIRECT [[:Category:Foo]]
-!! result
+!! html
<p><a rel="mw:WikiLink" href="Category:Foo">Category:Foo</a></p>
!! end
Redirect to image page (1)
!! options
parsoid
-!! input
+!! wikitext
#REDIRECT [[File:Wiki.png]]
-!! result
+!! html
<link rel="mw:PageProp/redirect" href="./File:Wiki.png">
!! end
Redirect to image page (2)
!! options
parsoid
-!! input
+!! wikitext
#REDIRECT [[Image:Wiki.png]]
-!! result
+!! html
<link rel="mw:PageProp/redirect" href="./File:Wiki.png">
!! end
Redirect to language
!! options
parsoid
-!! input
+!! wikitext
#REDIRECT [[en:File:Wiki.png]]
-!! result
+!! html
<link rel="mw:PageProp/redirect" href="File:Wiki.png">
!! end
Redirect to interwiki
!! options
parsoid
-!! input
+!! wikitext
#REDIRECT [[meatball:File:Wiki.png]]
-!! result
+!! html
<link rel="mw:PageProp/redirect" href="File:Wiki.png">
!! end
!! options
parsoid
language=is
-!! input
+!! wikitext
#TILVÍSUN [[Main Page]]
-!! result
+!! html
<link rel="mw:PageProp/redirect" href="./Main_Page">
!! end
New redirect
!! options
parsoid=html2wt
-!! input
+!! wikitext
Foo
#REDIRECT [[Foo]]
-!! result
+!! html
<p>Foo<link rel="mw:PageProp/redirect" href="./Foo"></p>
!! end
!! test
<br> to <br />
-!! input
+!! wikitext
1<br>2<br />3
-!! result
+!! html
<p>1<br />2<br />3
</p>
!! end
!! test
Broken br tag sanitization
-!! options
-php
-!! input
+!! wikitext
</br>
-!! result
+!! html/php
<p></br>
</p>
!! end
Parsoid: Broken br tag recognition
!! options
parsoid=wt2html
-!! input
+!! wikitext
</br>
-!! result
+!! html/parsoid
<p><br></p>
!! end
!! test
Incorrecly removing closing slashes from correctly formed XHTML
-!! input
+!! wikitext
<br style="clear:both;" />
-!! result
+!! html
<p><br style="clear:both;" />
</p>
!! end
!! test
Failing to transform badly formed HTML into correct XHTML
-!! input
+!! wikitext
<br style="clear: left;">
<br style="clear: right;">
<br style="clear: both;">
-!! result
+!! html
<p><br style="clear: left;" />
<br style="clear: right;" />
<br style="clear: both;" />
!! test
Handling html with a div self-closing tag
-!! input
+!! wikitext
<div title />
<div title/>
<div title/ >
<div title=bar />
<div title=bar/>
<div title=bar/ >
-!! result
+!! html
<p><div title />
<div title/>
</p>
!! test
Handling html with a br self-closing tag
-!! input
+!! wikitext
<br title />
<br title/>
<br title/ >
<br title=bar />
<br title=bar/>
<br title=bar/ >
-!! result
+!! html
<p><br title="title" />
<br title="title" />
<br />
!! test
Horizontal ruler (should it add that extra space?)
-!! input
+!! wikitext
<hr>
<hr >
foo <hr
> bar
-!! result
+!! html
<hr />
<hr />
foo <hr /> bar
!! test
Horizontal ruler -- 4+ dashes render hr
-!! input
+!! wikitext
----
-!! result
+!! html
<hr />
!! end
!! test
Horizontal ruler -- eats additional dashes on the same line
-!! input
+!! wikitext
---------
-!! result
+!! html
<hr />
!! end
!! test
Horizontal ruler -- does not collapse dashes on consecutive lines
-!! input
+!! wikitext
----
----
-!! result
+!! html
<hr />
<hr />
!! test
Horizontal ruler -- <4 dashes render as plain text
-!! input
+!! wikitext
---
-!! result
+!! html
<p>---
</p>
!! end
!! test
Horizontal ruler -- Supports content following dashes on same line
-!! input
+!! wikitext
---- Foo
-!! result
+!! html
<hr /> Foo
!! end
###
!! test
Common list
-!! input
+!! wikitext
*Common list
* item 2
*item 3
-!! result
+!! html
<ul>
<li>Common list
</li>
!! test
Numbered list
-!! input
+!! wikitext
#Numbered list
#item 2
# item 3
-!! result
+!! html
<ol>
<li>Numbered list
</li>
!! test
Mixed list
-!! input
+!! wikitext
*Mixed list
*# with numbers
** and bullets
*Level 1
*** Level 3
#** Level 3, but ordered
-!! result
+!! html
<ul>
<li>Mixed list
<ol>
!! test
Nested lists 1
-!! input
+!! wikitext
*foo
**bar
-!! result
+!! html
<ul>
<li>foo
<ul>
!! test
Nested lists 2
-!! input
+!! wikitext
**foo
*bar
-!! result
+!! html
<ul>
<li><ul>
<li>foo
!! test
Nested lists 3 (first element empty)
-!! input
+!! wikitext
*
**bar
-!! result
+!! html
<ul>
<li>
<ul>
!! test
Nested lists 4 (first element empty)
-!! input
+!! wikitext
**
*bar
-!! result
+!! html
<ul>
<li><ul>
<li>
!! test
Nested lists 5 (both elements empty)
-!! input
+!! wikitext
**
*
-!! result
+!! html
<ul>
<li><ul>
<li>
!! test
Nested lists 6 (both elements empty)
-!! input
+!! wikitext
*
**
-!! result
+!! html
<ul>
<li>
<ul>
!! test
Nested lists 7 (skip initial nesting levels)
-!! input
+!! wikitext
*** foo
-!! result
+!! html
<ul>
<li><ul>
<li><ul>
!! test
Nested lists 8 (multiple nesting transitions)
-!! input
+!! wikitext
* foo
*** bar
** baz
* boo
-!! result
+!! html
<ul>
<li> foo
<ul>
!! test
1. Lists with start-of-line-transparent tokens before bullets: Comments
-!! input
+!! wikitext
*foo
*<!--cmt-->bar
<!--cmt-->*baz
-!! result
+!! html
<ul>
<li>foo
</li>
!! test
2. Lists with start-of-line-transparent tokens before bullets: Template close
-!! input
+!! wikitext
*foo {{echo|bar
}}*baz
-!! result
+!! html
<ul>
<li>foo bar
</li>
!! test
List items are not parsed correctly following a <pre> block (bug 785)
-!! input
+!! wikitext
* <pre>foo</pre>
* <pre>bar</pre>
* zar
-!! result
+!! html
<ul>
<li> <pre>foo</pre>
</li>
!! test
List items from template
-!! input
+!! wikitext
{{inner list}}
* item 2
* item 0
* notSOL{{inner list}}
* item 2
-!! result
+!! html
<ul>
<li> item 1
</li>
!! test
List interrupted by empty line or heading
-!! input
+!! wikitext
* foo
** bar
== A heading ==
* Another list item
-!! result
+!! html
<ul>
<li> foo
</li>
!!test
Multiple list tags generated by templates
-!!input
+!! wikitext
{{echo|<li>}}a
{{echo|<li>}}b
{{echo|<li>}}c
-!!result
+!! html
<li>a
<li>b
<li>c</li>
!!test
Single-comment whitespace lines dont break lists, and neither do multi-comment whitespace lines
-!!input
+!! wikitext
*a
<!--This line will NOT split the list-->
*b
*c
<!--foo--> <!----> <!--This line NOT split the list either-->
*d
-!!result
+!! html
<ul>
<li>a
</li>
!!test
Replacing whitespace with tabs still doesn't break the list (gerrit 78327)
-!!input
+!! wikitext
*a
<!--This line will NOT split the list-->
*b
<!--foo--> <!----> <!--This line NOT split the list
either-->
*d
-!!result
+!! html
<ul>
<li>a
</li>
(Cannot test this with PHP parser since it relies on Tidy for the hack)
!!options
parsoid=wt2html,wt2wt
-!!input
+!! wikitext
* foo
* <li>li-hack
* {{echo|<li>templated li-hack}}
<li><li>not a li-hack
</li>
</ul>
-!!result
+!! html
<ul>
<li> foo</li>
<li>li-hack</li>
Parsoid: Make sure nested lists are serialized on their own line even if HTML contains no newlines
!! options
parsoid
-!! input
+!! wikitext
# foo
## bar
* foo
** bar
: foo
:: bar
-!! result
+!! html
<ol>
<li> foo<ol>
<li> bar</li>
Parsoid: Test of whitespace serialization with Templated bullets
!! options
parsoid
-!! input
+!! wikitext
* {{bullet}}
-!! result
+!! html
<ul>
<li> </li><li about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"bullet","href":"./Template:Bullet"},"params":{},"i":0}}]}'> Bar</li>
</ul>
!! 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
+!! wikitext
<div>
*a</div><div>
*b</div>
-!! result
+!! html/parsoid
<div>
<ul>
<li>a
!! 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
+!! wikitext
<span>
*a</span><span>
*b</span>
-!! result
+!! html/parsoid
<p><span></span>
</p>
<ul>
!! 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
+!! wikitext
# <s> a
# b </s>
-!! result
+!! html/parsoid
<ol>
<li> <s> a </s>
</li>
!!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
+!! wikitext
<small>
* foo
</small>
-!!result
+!! html/parsoid
<p><small></small></p>
<small>
<ul>
Table with missing opening <tr> tag
!! options
parsoid=wt2html,wt2wt
-!! input
+!! wikitext
<table>
<td>foo</td>
</tr>
</table>
-!! result
+!! html/parsoid
<table>
<tr>
<td>foo</td>
!! test
Magic Word: {{CURRENTDAY}}
-!! input
+!! wikitext
{{CURRENTDAY}}
-!! result
+!! html
<p>1
</p>
!! end
!! test
Magic Word: {{CURRENTDAY2}}
-!! input
+!! wikitext
{{CURRENTDAY2}}
-!! result
+!! html
<p>01
</p>
!! end
!! test
Magic Word: {{CURRENTDAYNAME}}
-!! input
+!! wikitext
{{CURRENTDAYNAME}}
-!! result
+!! html
<p>Thursday
</p>
!! end
!! test
Magic Word: {{CURRENTDOW}}
-!! input
+!! wikitext
{{CURRENTDOW}}
-!! result
+!! html
<p>4
</p>
!! end
!! test
Magic Word: {{CURRENTMONTH}}
-!! input
+!! wikitext
{{CURRENTMONTH}}
-!! result
+!! html
<p>01
</p>
!! end
!! test
Magic Word: {{CURRENTMONTH1}}
-!! input
+!! wikitext
{{CURRENTMONTH1}}
-!! result
+!! html
<p>1
</p>
!! end
!! test
Magic Word: {{CURRENTMONTHABBREV}}
-!! input
+!! wikitext
{{CURRENTMONTHABBREV}}
-!! result
+!! html
<p>Jan
</p>
!! end
!! test
Magic Word: {{CURRENTMONTHNAME}}
-!! input
+!! wikitext
{{CURRENTMONTHNAME}}
-!! result
+!! html
<p>January
</p>
!! end
!! test
Magic Word: {{CURRENTMONTHNAMEGEN}}
-!! input
+!! wikitext
{{CURRENTMONTHNAMEGEN}}
-!! result
+!! html
<p>January
</p>
!! end
!! test
Magic Word: {{CURRENTTIME}}
-!! input
+!! wikitext
{{CURRENTTIME}}
-!! result
+!! html
<p>00:02
</p>
!! end
!! test
Magic Word: {{CURRENTHOUR}}
-!! input
+!! wikitext
{{CURRENTHOUR}}
-!! result
+!! html
<p>00
</p>
!! end
!! test
Magic Word: {{CURRENTWEEK}} (@bug 4594)
-!! input
+!! wikitext
{{CURRENTWEEK}}
-!! result
+!! html
<p>1
</p>
!! end
!! test
Magic Word: {{CURRENTYEAR}}
-!! input
+!! wikitext
{{CURRENTYEAR}}
-!! result
+!! html
<p>1970
</p>
!! end
!! test
Magic Word: {{CURRENTTIMESTAMP}}
-!! input
+!! wikitext
{{CURRENTTIMESTAMP}}
-!! result
+!! html
<p>19700101000203
</p>
!! end
!! test
Magic Words LOCAL (UTC)
-!! input
+!! wikitext
* {{LOCALMONTH}}
* {{LOCALMONTH1}}
* {{LOCALMONTHNAME}}
* {{LOCALWEEK}}
* {{LOCALDOW}}
* {{LOCALTIMESTAMP}}
-!! result
+!! html
<ul>
<li> 01
</li>
Magic Word: {{FULLPAGENAME}}
!! options
title=[[User:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{FULLPAGENAME}}
-!! result
+!! html
<p>User:Ævar Arnfjörð Bjarmason
</p>
!! end
Magic Word: {{FULLPAGENAMEE}}
!! options
title=[[User:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{FULLPAGENAMEE}}
-!! result
+!! html
<p>User:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
</p>
!! end
Magic Word: {{TALKSPACE}}
!! options
title=[[User:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{TALKSPACE}}
-!! result
+!! html
<p>User talk
</p>
!! end
Magic Word: {{TALKSPACE}}, same namespace
!! options
title=[[User talk:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{TALKSPACE}}
-!! result
+!! html
<p>User talk
</p>
!! end
Magic Word: {{TALKSPACE}}, main namespace
!! options
title=[[Parser Test]]
-!! input
+!! wikitext
{{TALKSPACE}}
-!! result
+!! html
<p>Talk
</p>
!! end
Magic Word: {{TALKSPACEE}}
!! options
title=[[User:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{TALKSPACEE}}
-!! result
+!! html
<p>User_talk
</p>
!! end
Magic Word: {{SUBJECTSPACE}}
!! options
title=[[User talk:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{SUBJECTSPACE}}
-!! result
+!! html
<p>User
</p>
!! end
Magic Word: {{SUBJECTSPACE}}, same namespace
!! options
title=[[User:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{SUBJECTSPACE}}
-!! result
+!! html
<p>User
</p>
!! end
Magic Word: {{SUBJECTSPACE}}, main namespace
!! options
title=[[Parser Test]]
-!! input
+!! wikitext
{{SUBJECTSPACE}}
-!! result
+!! html
!! end
Magic Word: {{SUBJECTSPACEE}}
!! options
title=[[User talk:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{SUBJECTSPACEE}}
-!! result
+!! html
<p>User
</p>
!! end
Magic Word: {{NAMESPACE}}
!! options
title=[[User:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{NAMESPACE}}
-!! result
+!! html
<p>User
</p>
!! end
Magic Word: {{NAMESPACEE}}
!! options
title=[[User:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{NAMESPACEE}}
-!! result
+!! html
<p>User
</p>
!! end
Magic Word: {{NAMESPACENUMBER}}
!! options
title=[[User:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{NAMESPACENUMBER}}
-!! result
+!! html
<p>2
</p>
!! end
Magic Word: {{SUBPAGENAME}}
!! options
title=[[Ævar Arnfjörð Bjarmason/sub ö]] subpage
-!! input
+!! wikitext
{{SUBPAGENAME}}
-!! result
+!! html
<p>sub ö
</p>
!! end
Magic Word: {{SUBPAGENAMEE}}
!! options
title=[[Ævar Arnfjörð Bjarmason/sub ö]] subpage
-!! input
+!! wikitext
{{SUBPAGENAMEE}}
-!! result
+!! html
<p>sub_%C3%B6
</p>
!! end
Magic Word: {{ROOTPAGENAME}}
!! options
title=[[Ævar Arnfjörð Bjarmason/sub/sub2]] subpage
-!! input
+!! wikitext
{{ROOTPAGENAME}}
-!! result
+!! html
<p>Ævar Arnfjörð Bjarmason
</p>
!! end
Magic Word: {{ROOTPAGENAMEE}}
!! options
title=[[Ævar Arnfjörð Bjarmason/sub/sub2]] subpage
-!! input
+!! wikitext
{{ROOTPAGENAMEE}}
-!! result
+!! html
<p>%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
</p>
!! end
Magic Word: {{BASEPAGENAME}}
!! options
title=[[Ævar Arnfjörð Bjarmason/sub]] subpage
-!! input
+!! wikitext
{{BASEPAGENAME}}
-!! result
+!! html
<p>Ævar Arnfjörð Bjarmason
</p>
!! end
Magic Word: {{BASEPAGENAMEE}}
!! options
title=[[Ævar Arnfjörð Bjarmason/sub]] subpage
-!! input
+!! wikitext
{{BASEPAGENAMEE}}
-!! result
+!! html
<p>%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
</p>
!! end
Magic Word: {{TALKPAGENAME}}
!! options
title=[[User:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{TALKPAGENAME}}
-!! result
+!! html
<p>User talk:Ævar Arnfjörð Bjarmason
</p>
!! end
Magic Word: {{TALKPAGENAMEE}}
!! options
title=[[User:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{TALKPAGENAMEE}}
-!! result
+!! html
<p>User_talk:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
</p>
!! end
Magic Word: {{SUBJECTPAGENAME}}
!! options
title=[[User talk:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{SUBJECTPAGENAME}}
-!! result
+!! html
<p>User:Ævar Arnfjörð Bjarmason
</p>
!! end
Magic Word: {{SUBJECTPAGENAMEE}}
!! options
title=[[User talk:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{SUBJECTPAGENAMEE}}
-!! result
+!! html
<p>User:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
</p>
!! end
!! test
Magic Word: {{NUMBEROFFILES}}
-!! input
+!! wikitext
{{NUMBEROFFILES}}
-!! result
+!! html
<p>4
</p>
!! end
Magic Word: {{PAGENAME}}
!! options
title=[[User:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{PAGENAME}}
-!! result
+!! html
<p>Ævar Arnfjörð Bjarmason
</p>
!! end
Magic Word: {{PAGENAME}} with metacharacters
!! options
title=[['foo & bar = baz']]
-!! input
+!! wikitext
''{{PAGENAME}}''
-!! result
+!! html
<p><i>'foo & bar = baz'</i>
</p>
!! end
Magic Word: {{PAGENAME}} with metacharacters (bug 26781)
!! options
title=[[*RFC 1234 http://example.com/]]
-!! input
+!! wikitext
{{PAGENAME}}
-!! result
+!! html
<p>*RFC 1234 http://example.com/
</p>
!! end
Magic Word: {{PAGENAMEE}}
!! options
title=[[User:Ævar Arnfjörð Bjarmason]]
-!! input
+!! wikitext
{{PAGENAMEE}}
-!! result
+!! html
<p>%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
</p>
!! end
Magic Word: {{PAGENAMEE}} with metacharacters (bug 26781)
!! options
title=[[*RFC 1234 http://example.com/]]
-!! input
+!! wikitext
{{PAGENAMEE}}
-!! result
+!! html
<p>*RFC_1234_http://example.com/
</p>
!! end
!! test
Magic Word: {{REVISIONID}}
-!! input
+!! wikitext
{{REVISIONID}}
-!! result
+!! html
<p>1337
</p>
!! end
!! test
Magic Word: {{SCRIPTPATH}}
-!! input
+!! wikitext
{{SCRIPTPATH}}
-!! result
+!! html
<p>/
</p>
!! end
!! test
Magic Word: {{STYLEPATH}}
-!! input
+!! wikitext
{{STYLEPATH}}
-!! result
+!! html
<p>/skins
</p>
!! end
!! test
Magic Word: {{SERVER}}
-!! input
+!! wikitext
{{SERVER}}
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://example.org">http://example.org</a>
</p>
!! end
!! test
Magic Word: {{SERVERNAME}}
-!! input
+!! wikitext
{{SERVERNAME}}
-!! result
+!! html
<p>example.org
</p>
!! end
!! test
Magic Word: {{SITENAME}}
-!! input
+!! wikitext
{{SITENAME}}
-!! result
+!! html
<p>MediaWiki
</p>
!! end
!! test
Case-sensitive magic words, when cased differently, should just be template transclusions
-!! input
+!! wikitext
{{CurrentMonth}}
{{currentday}}
{{cURreNTweEK}}
{{currentHour}}
-!! result
+!! html
<p><a href="/index.php?title=Template:CurrentMonth&action=edit&redlink=1" class="new" title="Template:CurrentMonth (page does not exist)">Template:CurrentMonth</a>
<a href="/index.php?title=Template:Currentday&action=edit&redlink=1" class="new" title="Template:Currentday (page does not exist)">Template:Currentday</a>
<a href="/index.php?title=Template:CURreNTweEK&action=edit&redlink=1" class="new" title="Template:CURreNTweEK (page does not exist)">Template:CURreNTweEK</a>
!! test
Case-insensitive magic words should still work with weird casing.
-!! input
+!! wikitext
{{sErVeRNaMe}}
{{LCFirst:AOEU}}
{{ucFIRST:aoeu}}
{{SERver}}
-!! result
+!! html
<p>example.org
aOEU
Aoeu
!! test
Namespace 1 {{ns:1}}
-!! input
+!! wikitext
{{ns:1}}
-!! result
+!! html
<p>Talk
</p>
!! end
!! test
Namespace 1 {{ns:01}}
-!! input
+!! wikitext
{{ns:01}}
-!! result
+!! html
<p>Talk
</p>
!! end
!! test
Namespace 0 {{ns:0}} (bug 4783)
-!! input
+!! wikitext
{{ns:0}}
-!! result
+!! html
!! end
!! test
Namespace 0 {{ns:00}} (bug 4783)
-!! input
+!! wikitext
{{ns:00}}
-!! result
+!! html
!! end
!! test
Namespace -1 {{ns:-1}}
-!! input
+!! wikitext
{{ns:-1}}
-!! result
+!! html
<p>Special
</p>
!! end
!! test
Namespace User {{ns:User}}
-!! input
+!! wikitext
{{ns:User}}
-!! result
+!! html
<p>User
</p>
!! end
!! test
Namespace User talk {{ns:User_talk}}
-!! input
+!! wikitext
{{ns:User_talk}}
-!! result
+!! html
<p>User talk
</p>
!! end
!! test
Namespace User talk {{ns:uSeR tAlK}}
-!! input
+!! wikitext
{{ns:uSeR tAlK}}
-!! result
+!! html
<p>User talk
</p>
!! end
!! test
Namespace File {{ns:File}}
-!! input
+!! wikitext
{{ns:File}}
-!! result
+!! html
<p>File
</p>
!! end
!! test
Namespace File {{ns:Image}}
-!! input
+!! wikitext
{{ns:Image}}
-!! result
+!! html
<p>File
</p>
!! end
Namespace (lang=de) Benutzer {{ns:User}}
!! options
language=de
-!! input
+!! wikitext
{{ns:User}}
-!! result
+!! html
<p>Benutzer
</p>
!! end
Namespace (lang=de) Benutzer Diskussion {{ns:3}}
!! options
language=de
-!! input
+!! wikitext
{{ns:3}}
-!! result
+!! html
<p>Benutzer Diskussion
</p>
!! end
!! test
Urlencode
-!! input
+!! wikitext
{{urlencode:hi world?!}}
{{urlencode:hi world?!|WIKI}}
{{urlencode:hi world?!|PATH}}
{{urlencode:hi world?!|QUERY}}
-!! result
+!! html
<p>hi+world%3F%21
hi_world%3F!
hi%20world%3F%21
Magic Word: prioritize type info over data-parsoid
!! options
parsoid=html2wt
-!! input
+!! wikitext
__FORCETOC__
-!! result
+!! html
<meta property="mw:PageProp/forcetoc" data-parsoid='{"src":"__NOTOC__","magicSrc":"__NOTOC__"}'/>
!! end
Magic Word: serialize on separate line (parsoid)
!! options
parsoid=wt2wt,html2wt
-!! input
+!! wikitext
foo
__NOTOC__
bar
-!! result
+!! html
foo<meta property="mw:PageProp/notoc"/>bar
!! end
!! options
parsoid=wt2wt
language=de
-!! input
+!! wikitext
__NOEDITSECTION__
-!! result
+!! html
<meta property="mw:PageProp/noeditsection" data-parsoid='{"src":"__NOEDITSECTION__","magicSrc":"__NOEDITSECTION__"}'/>
!! end
###
!! test
Magic links: internal link to RFC (bug 479)
-!! input
+!! wikitext
[[RFC 123]]
-!! result
+!! html
<p><a href="/index.php?title=RFC_123&action=edit&redlink=1" class="new" title="RFC 123 (page does not exist)">RFC 123</a>
</p>
!! end
!! test
Magic links: RFC (bug 479)
-!! input
+!! wikitext
RFC 822
-!! result
+!! html
<p><a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc822">RFC 822</a>
</p>
!! end
!! test
Magic links: ISBN (bug 1937)
-!! input
+!! wikitext
ISBN 0-306-40615-2
-!! result
+!! html
<p><a href="/wiki/Special:BookSources/0306406152" class="internal mw-magiclink-isbn">ISBN 0-306-40615-2</a>
</p>
!! end
!! test
Magic links: PMID incorrectly converts space to underscore
-!! input
+!! wikitext
PMID 1234
-!! result
+!! html
<p><a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a>
</p>
!! end
!! test
Nonexistent template
-!! input
+!! wikitext
{{thistemplatedoesnotexist}}
-!! result
+!! html
<p><a href="/index.php?title=Template:Thistemplatedoesnotexist&action=edit&redlink=1" class="new" title="Template:Thistemplatedoesnotexist (page does not exist)">Template:Thistemplatedoesnotexist</a>
</p>
!! end
!! test
Template with invalid target containing tags
-!! input
+!! wikitext
{{a<b>b</b>|{{echo|foo}}|{{echo|a}}={{echo|b}}|a = b}}
-!! result
+!! html
<p>{{a<b>b</b>|foo|a=b|a = b}}
</p>
!! end
!! test
Template with invalid target containing unclosed tag
-!! input
+!! wikitext
{{a<b>|{{echo|foo}}|{{echo|a}}={{echo|b}}|a = b}}
-!! result
+!! html
<p>{{a<b>|foo|a=b|a = b}}</b>
</p>
!! end
!! test
-Template with invalid target containing wikilink (php)
-!! options
-php
-!! input
+Template with invalid target containing wikilink
+!! wikitext
{{[[Main Page]]}}
-!! result
+!! html/php
<p>{{<a href="/wiki/Main_Page" title="Main Page">Main Page</a>}}
</p>
-!! end
-
-!! test
-Template with invalid target containing wikilink (parsoid)
-!! options
-parsoid
-!! input
-{{[[Main Page]]}}
-!! result
+!! html/parsoid
<p><span typeof="mw:Transclusion" about="#mwt1" data-mw='{"parts":[{"template":{"target":{"wt":"[[Main Page]]"},"params":{},"i":0}}]}'>{{</span><a rel="mw:WikiLink" href="./Main_Page" about="#mwt1">Main Page</a><span about="#mwt1">}}</span></p>
!! end
!! test
Simple template
-!! input
+!! wikitext
{{test}}
-!! result
+!! html
<p>This is a test template
</p>
!! end
!! test
Template with explicit namespace
-!! input
+!! wikitext
{{Template:test}}
-!! result
+!! html
<p>This is a test template
</p>
!! end
!! test
Template parameter
-!! input
+!! wikitext
{{paramtest|param=foo}}
-!! result
+!! html
<p>This is a test template with parameter foo
</p>
!! end
!! test
Template unnamed parameter
-!! input
+!! wikitext
{{paramtestnum|Main Page|the main page}}
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">the main page</a>
</p>
!! end
!! test
Template with template name as unnamed argument
-!! input
+!! wikitext
{{templateasargtestnum|templatesimple}}
-!! result
+!! html
<p>(test)
</p>
!! end
!! test
Template with template name as argument
-!! input
+!! wikitext
{{templateasargtest|templ=simple}}
-!! result
+!! html
<p>(test)
</p>
!! end
!! test
Template with template name as argument (2)
-!! input
+!! wikitext
{{templateasargtest2|templ=templatesimple}}
-!! result
+!! html
<p>(test)
</p>
!! end
!! test
Template with default value
-!! input
+!! wikitext
{{templateasargtestdefault}}
-!! result
+!! html
<p>(test)
</p>
!! end
!! test
Template with default value (value set)
-!! input
+!! wikitext
{{templateasargtestdefault|templ=templa}}
-!! result
+!! html
<p><b>templ</b>
</p>
!! end
!! test
Template redirect
-!! input
+!! wikitext
{{templateredirect}}
-!! result
+!! html
<p>(test)
</p>
!! end
!! test
Template with argument in separate line
-!! input
+!! wikitext
{{ templateasargtest |
templ = simple }}
-!! result
+!! html
<p>(test)
</p>
!! end
!! test
Template with complex template as argument
-!! input
+!! wikitext
{{paramtest|
param ={{ templateasargtest |
templ = simple }}}}
-!! result
+!! html
<p>This is a test template with parameter (test)
</p>
!! end
!! test
Template with thumb image (with link in description)
-!! input
+!! wikitext
{{paramtest|
param =[[Image:noimage.png|thumb|[[no link|link]] [[no link|caption]]]]}}
-!! result
+!! html
This is a test template with parameter <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=Special:Upload&wpDestFile=Noimage.png" class="new" title="File:Noimage.png">File:Noimage.png</a> <div class="thumbcaption"><a href="/index.php?title=No_link&action=edit&redlink=1" class="new" title="No link (page does not exist)">link</a> <a href="/index.php?title=No_link&action=edit&redlink=1" class="new" title="No link (page does not exist)">caption</a></div></div></div>
!! end
!! test
Template with complex arguments
-!! input
+!! wikitext
{{complextemplate|
param ={{ templateasargtest |
templ = simple }}|[[Template:complextemplate|link]]}}
-!! result
+!! html
<p><a href="/wiki/Template:Complextemplate" title="Template:Complextemplate">link</a> This is a test template with parameter (test)
</p>
!! end
!! test
BUG 553: link with two variables in a piped link
-!! input
+!! wikitext
{|
|[[{{{1}}}|{{{2}}}]]
|}
-!! result
+!! html
<table>
<tr>
<td>[[{{{1}}}|{{{2}}}]]
!! test
Magic variable as template parameter
-!! input
+!! wikitext
{{paramtest|param={{SITENAME}}}}
-!! result
+!! html
<p>This is a test template with parameter MediaWiki
</p>
!! end
!! test
Template parameter as link source
-!! input
+!! wikitext
{{linktest|param=Main Page}}
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">link</a>
</p>
!! end
!!test
Template-generated attribute string (k='v')
-!!input
+!! wikitext
<span {{attr_str|id|v1}}>bar</span>
-!!result
+!! html
<p><span id="v1">bar</span>
</p>
!!end
!! test
Template passing argument to another template
-!! input
+!! wikitext
{{paramtest2|arg='hmm'}}
-!! result
+!! html
<p>including another template, This is a test template with parameter 'hmm'
</p>
!! end
!! test
Template as link source
-!! input
+!! wikitext
[[{{linktest2}}]]
[[{{linktest2}}|Main Page]]
[[{{linktest2}}]]Page
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
</p><p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
</p><p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>Page
!! test
Template infinite loop
-!! input
+!! wikitext
{{loop1}}
-!! result
+!! html
<p><span class="error">Template loop detected: <a href="/wiki/Template:Loop1" title="Template:Loop1">Template:Loop1</a></span>
</p>
!! end
!! test
Template from main namespace
-!! input
+!! wikitext
{{:Main Page}}
-!! result
+!! html
<p>blah blah
</p>
!! end
!! test
BUG 529: Template with table, not included at beginning of line
-!! input
+!! wikitext
foo {{table}}
-!! result
+!! html
<p>foo
</p>
<table>
!! test
BUG 523: Template shouldn't eat newline (or add an extra one before table)
-!! input
+!! wikitext
foo
{{table}}
-!! result
+!! html
<p>foo
</p>
<table>
!! test
BUG 41: Template parameters shown as broken links
-!! input
+!! wikitext
{{{parameter}}}
-!! result
+!! html
<p>{{{parameter}}}
</p>
!! end
!! test
Template with targets containing wikilinks
-!! input
+!! wikitext
{{[[foo]]}}
{{[[{{echo|foo}}]]}}
{{{{echo|[[foo}}]]}}
-!! result
+!! html
<p>{{<a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)">foo</a>}}
</p><p>{{<a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)">foo</a>}}
</p><p>{{[[foo}}]]
msgnw keyword
!! options
disabled
-!! input
+!! wikitext
{{msgnw:MSGNW test}}
-!! result
+!! html
<p>''None'' of '''this''' should be
* interpreted
but rather passed unmodified
!! test
int keyword
-!! input
+!! wikitext
{{int:youhavenewmessages|lots of money|not!}}
-!! result
+!! html
<p>You have lots of money (not!).
</p>
!! end
!! test
<includeonly> and <noinclude> being included
-!! input
+!! wikitext
{{Includes}}
-!! result
+!! html
<p>Foobar
</p>
!! end
!! test
<onlyinclude> being included
-!! input
+!! wikitext
{{Includes2}}
-!! result
+!! html
<p>Foo
</p>
!! end
!! test
<onlyinclude> and <includeonly> being included
-!! input
+!! wikitext
{{Includes3}}
-!! result
+!! html
<p>Foo
</p>
!! end
!! test
<includeonly> and <noinclude> on a page
-!! input
+!! wikitext
Foo<noinclude>zar</noinclude><includeonly>bar</includeonly>
-!! result
+!! html
<p>Foozar
</p>
!! end
!! test
Un-closed <noinclude>
-!! input
+!! wikitext
<noinclude>
-!! result
+!! html
!! end
!! test
<onlyinclude> on a page
-!! input
+!! wikitext
<onlyinclude>Foo</onlyinclude>bar
-!! result
+!! html
<p>Foobar
</p>
!! end
!! test
Un-closed <onlyinclude>
-!! input
+!! wikitext
<onlyinclude>
-!! result
+!! html
!! end
!!test
Self-closed noinclude, includeonly, onlyinclude tags
-!!input
+!! wikitext
<noinclude />
<includeonly />
<onlyinclude />
-!!result
+!! html
<p><br />
</p>
!!end
!!test
Unbalanced includeonly and noinclude tags
-!!input
+!! wikitext
{|
|a</noinclude>
|b</noinclude></noinclude>
|c</noinclude></includeonly>
|d</includeonly></includeonly>
|}
-!!result
+!! html
<table>
<tr>
<td>a
!! test
Bug 6563: Edit link generation for section shown by <includeonly>
-!! input
+!! wikitext
{{includeonly section}}
-!! result
+!! html
<h2><span class="mw-headline" id="Includeonly_section">Includeonly section</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Template:Includeonly_section&action=edit&section=T-1" title="Template:Includeonly section">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h2><span class="mw-headline" id="Section_T-1">Section T-1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Template:Includeonly_section&action=edit&section=T-2" title="Template:Includeonly section">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
Bug 6563: Section extraction for section shown by <includeonly>
!! options
section=T-2
-!! input
+!! wikitext
<includeonly>
==Includeonly section==
</includeonly>
==Section T-2==
-!! result
+!! html
==Section T-2==
!! end
!! test
Bug 6563: Edit link generation for section suppressed by <includeonly>
-!! input
+!! wikitext
<includeonly>
==Includeonly section==
</includeonly>
==Section 1==
-!! result
+!! html
<h2><span class="mw-headline" id="Section_1">Section 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Section 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
!! end
Bug 6563: Section extraction for section suppressed by <includeonly>
!! options
section=1
-!! input
+!! wikitext
<includeonly>
==Includeonly section==
</includeonly>
==Section 1==
-!! result
+!! html
==Section 1==
!! end
!! test
Un-closed <includeonly>
-!! input
+!! wikitext
<includeonly>
-!! result
+!! html
!! end
# TODO: test with DOM fragment reuse!
Parsoid: DOM fragment reuse
!! options
parsoid=wt2wt,wt2html
-!! input
+!! wikitext
a{{echo|b<table></table>c}}d
a{{echo|b
<table></table>
b}}
-!! result
+!! html
a<span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"b
<table></table>c"}},"i":0}}]}'>b</span>
<table about="#mwt1"></table><span about="#mwt1">c</span>d
Parsoid: Merge double tds (bug 50603)
!! options
parsoid
-!! input
+!! wikitext
{|
|{{echo|{{!}} foo}}
|}
-!! result
+!! html
<table><tbody>
<tr><td about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":["|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{!}} foo"}},"i":0}}]}'> foo</td></tr>
</tbody></table>
Parsoid: Merge double tds in nested transclusion content (bug 50603)
!! options
parsoid
-!! input
+!! wikitext
{{echo|<div>}}
{|
|{{echo|{{!}} foo}}
|}
{{echo|</div>}}
-!! result
+!! html
<div about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<div>"}},"i":0}},"\n{|\n|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{!}} foo"}},"i":1}},"\n|}\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"</div>"}},"i":2}}]}'>
<table><tbody>
<tr><td data-mw='{"parts":["|"]}'> foo</td></tr>
###
!!test
0. includeonly around the entire attribute
-!!input
+!! wikitext
<span <includeonly>id="v1"</includeonly><noinclude>id="v2"</noinclude>>bar</span>
-!!result
+!! html
<p><span id="v2">bar</span>
</p>
!!end
!!test
1. includeonly in html attr key
-!!input
+!! wikitext
<span <noinclude>id</noinclude><includeonly>about</includeonly>="foo">bar</span>
-!!result
+!! html
<p><span id="foo">bar</span>
</p>
!!end
!!test
2. includeonly in html attr value
-!!input
+!! wikitext
<span id="<noinclude>v1</noinclude><includeonly>v2</includeonly>">bar</span>
<span id=<noinclude>"v1"</noinclude><includeonly>"v2"</includeonly>>bar</span>
-!!result
+!! html
<p><span id="v1">bar</span>
<span id="v1">bar</span>
</p>
!!test
3. includeonly in part of an attr value
-!!input
+!! wikitext
<span style="color:<noinclude>red</noinclude><includeonly>blue</includeonly>;">bar</span>
-!!result
+!! html
<p><span style="color:red;">bar</span>
</p>
!!end
!!test
4. includeonly in table attributes
-!!input
+!! wikitext
{|
|- <noinclude>
|-
|b
</includeonly>
|}
-!!result
+!! html
<table>
!!test
Templates: Template Name/Arg clash: 1. Use of positional param
-!!input
+!! wikitext
{{quote|foo}}
-!!result
+!! html
<p>foo
</p>
!!end
!!test
Templates: Template Name/Arg clash: 2. Use of named param
-!!input
+!! wikitext
{{quote|quote=foo}}
-!!result
+!! html
<p>foo
</p>
!!end
!!test
Templates: Template Name/Arg clash: 3. Use of named param with empty input
-!!input
+!! wikitext
{{quote|quote}}
-!!result
+!! html
<p>quote
</p>
!!end
!!test
Templates: 1. Simple use
-!!input
+!! wikitext
{{echo|Foo}}
-!!result
+!! html
<p>Foo
</p>
!!end
!!test
Templates: 2. Inside a block tag
-!!input
+!! wikitext
<div>{{echo|Foo}}</div>
<blockquote>{{echo|Foo}}</blockquote>
-!!result
+!! html
<div>Foo</div>
<blockquote>Foo</blockquote>
!!test
Templates: P-wrapping: 1a. Templates on consecutive lines
-!!input
+!! wikitext
{{echo|Foo}}
{{echo|bar}}
-!!result
+!! html
<p>Foo
bar
</p>
!!test
Templates: P-wrapping: 1b. Templates on consecutive lines
-!!input
+!! wikitext
Foo
{{echo|bar}}
{{echo|baz}}
-!!result
+!! html
<p>Foo
</p><p>bar
baz
!!test
Templates: P-wrapping: 1c. Templates on consecutive lines
-!!input
+!! wikitext
{{echo|Foo}}
{{echo|bar}} <div>baz</div>
-!!result
+!! html
<p>Foo
</p>
bar <div>baz</div>
Templates: P-wrapping: 1d. Template preceded by comment-only line
!!options
parsoid
-!!input
+!! wikitext
<!-- foo -->
{{echo|Bar}}
-!!result
+!! html
<!-- foo -->
<p about="#mwt223" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Bar"}},"i":0}}]}'>Bar</p>
!!test
Templates: Inline Text: 1. Multiple tmeplate uses
-!!input
+!! wikitext
{{echo|Foo}}bar{{echo|baz}}
-!!result
+!! html
<p>Foobarbaz
</p>
!!end
!!test
Templates: Inline Text: 2. Back-to-back template uses
-!!input
+!! wikitext
{{echo|Foo}}{{echo|bar}}
-!!result
+!! html
<p>Foobar
</p>
!!end
!!test
Templates: Block Tags: 1. Multiple template uses
-!!input
+!! wikitext
{{echo|<div>Foo</div>}}<div>bar</div>{{echo|<div>baz</div>}}
-!!result
+!! html
<div>Foo</div><div>bar</div><div>baz</div>
!!end
!!test
Templates: Block Tags: 2. Back-to-back template uses
-!!input
+!! wikitext
{{echo|<div>Foo</div>}}{{echo|<div>bar</div>}}
-!!result
+!! html
<div>Foo</div><div>bar</div>
!!end
!!test
Templates: Links: 1. Simple example
-!!input
+!! wikitext
{{echo|[[Foo|bar]]}}
-!!result
+!! html
<p><a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)">bar</a>
</p>
!!end
!!test
Templates: Links: 2. Generation of link href
-!!input
+!! wikitext
[[{{echo|Foo}}|bar]]
-!!result
+!! html
<p><a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)">bar</a>
</p>
!!end
!!test
Templates: Links: 3. Generation of part of a link href
-!!input
+!! wikitext
[[Fo{{echo|o}}|bar]]
[[Foo{{echo|bar}}]]
[[:Foo{{echo|bar}}]]
[[:Foo{{echo|bar}}|bar]]
-!!result
+!! html
<p><a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)">bar</a>
</p><p><a href="/index.php?title=Foobar&action=edit&redlink=1" class="new" title="Foobar (page does not exist)">Foobar</a>
</p><p><a href="/index.php?title=Foobarbaz&action=edit&redlink=1" class="new" title="Foobarbaz (page does not exist)">Foobarbaz</a>
!!test
Templates: Links: 4. Multiple templates generating link href
-!!input
+!! wikitext
[[{{echo|F}}{{echo|o}}ob{{echo|ar}}]]
-!!result
+!! html
<p><a href="/index.php?title=Foobar&action=edit&redlink=1" class="new" title="Foobar (page does not exist)">Foobar</a>
</p>
!!end
!!test
Templates: Links: 5. Generation of link text
-!!input
+!! wikitext
[[Foo|{{echo|bar}}]]
-!!result
+!! html
<p><a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)">bar</a>
</p>
!!end
!!test
Templates: Links: 5. Nested templates (only outermost template should be marked)
-!!input
+!! wikitext
{{echo|[[{{echo|Foo}}|bar]]}}
-!!result
+!! html
<p><a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)">bar</a>
</p>
!!end
!!test
Templates: HTML Tag: 1. Generation of HTML attr. key
-!!input
+!! wikitext
<div {{echo|style}}="color:red;">foo</div>
-!!result
+!! html
<div style="color:red;">foo</div>
!!end
!!test
Templates: HTML Tag: 2. Generation of HTML attr. value
-!!input
+!! wikitext
<div style={{echo|'color:red;'}}>foo</div>
-!!result
+!! html
<div style="color:red;">foo</div>
!!end
!!test
Templates: HTML Tag: 3. Generation of HTML attr key and value
-!!input
+!! wikitext
<div {{echo|style}}={{echo|'color:red;'}}>foo</div>
-!!result
+!! html
<div style="color:red;">foo</div>
!!end
!!test
Templates: HTML Tag: 4. Generation of starting piece of HTML attr value
-!!input
+!! wikitext
<div title="{{echo|This is a long title}} with just one piece templated">foo</div>
-!!result
+!! html
<div title="This is a long title with just one piece templated">foo</div>
!!end
!!test
Templates: HTML Tag: 5. Generation of middle piece of HTML attr value
-!!input
+!! wikitext
<div title="This is a long title with just {{echo|one piece}} templated">foo</div>
-!!result
+!! html
<div title="This is a long title with just one piece templated">foo</div>
!!end
!!test
Templates: HTML Tag: 6. Generation of end piece of HTML attr value
-!!input
+!! wikitext
<div title="This is a long title with just one piece {{echo|templated}}">foo</div>
-!!result
+!! html
<div title="This is a long title with just one piece templated">foo</div>
!!end
!!test
Templates: HTML Tag: 7. Generation of partial attribute key string
-!!input
+!! wikitext
<div st{{echo|yle}}="color:red;">foo</div>
-!!result
+!! html
<div style="color:red;">foo</div>
!!end
!!test
Templates: HTML Tables: 1. Generating start of a HTML table
-!!input
+!! wikitext
{{echo|<table><tr><td>foo</td>}}</tr></table>
-!!result
+!! html
<table><tr><td>foo</td></tr></table>
!!end
!!test
Templates: HTML Tables: 2a. Generating middle of a HTML table
-!!input
+!! wikitext
<table><tr>{{echo|<td>foo</td>}}</tr></table>
-!!result
+!! html
<table><tr><td>foo</td></tr></table>
!!end
!!test
Templates: HTML Tables: 2b. Generating middle of a HTML table
-!!input
+!! wikitext
<table>{{echo|<tr><td>foo</td></tr>}}</table>
-!!result
+!! html
<table><tr><td>foo</td></tr></table>
!!end
!!test
Templates: HTML Tables: 3. Generating end of a HTML table
-!!input
+!! wikitext
<table><tr>{{echo|<td>foo</td></tr></table>}}
-!!result
+!! html
<table><tr><td>foo</td></tr></table>
!!end
!!test
Templates: HTML Tables: 4a. Generating a single tag of a HTML table
-!!input
+!! wikitext
{{echo|<table>}}<tr><td>foo</td></tr></table>
-!!result
+!! html
<table><tr><td>foo</td></tr></table>
!!end
!!test
Templates: HTML Tables: 4b. Generating a single tag of a HTML table
-!!input
+!! wikitext
<table>{{echo|<tr>}}<td>foo</td></tr></table>
-!!result
+!! html
<table><tr><td>foo</td></tr></table>
!!end
!!test
Templates: HTML Tables: 4c. Generating a single tag of a HTML table
-!!input
+!! wikitext
<table><tr>{{echo|<td>}}foo</td></tr></table>
-!!result
+!! html
<table><tr><td>foo</td></tr></table>
!!end
!!test
Templates: HTML Tables: 4d. Generating a single tag of a HTML table
-!!input
+!! wikitext
<table><tr><td>foo{{echo|</td>}}</tr></table>
-!!result
+!! html
<table><tr><td>foo</td></tr></table>
!!end
!!test
Templates: HTML Tables: 4e. Generating a single tag of a HTML table
-!!input
+!! wikitext
<table><tr><td>foo</td>{{echo|</tr>}}</table>
-!!result
+!! html
<table><tr><td>foo</td></tr></table>
!!end
!!test
Templates: HTML Tables: 4f. Generating a single tag of a HTML table
-!!input
+!! wikitext
<table><tr><td>foo</td></tr>{{echo|</table>}}
-!!result
+!! html
<table><tr><td>foo</td></tr></table>
!!end
Templates: HTML Tables: 5. Proper fostering of categories from inside
!!options
parsoid=wt2html,wt2wt
-!!input
+!! wikitext
<table>[[Category:foo1]]<tr><td>foo</td></tr></table>
<!--Two categories (Bug 50330)-->
<table>[[Category:bar1]][[Category:bar2]]<tr><td>foo</td></tr></table>
-!!result
+!! html
<link rel="mw:PageProp/Category" href="./Category:Foo1"><table><tbody><tr><td>foo</td></tr></tbody></table>
<!--Two categories (Bug 50330)-->
<link rel="mw:PageProp/Category" href="./Category:Bar1"><link rel="mw:PageProp/Category" href="./Category:Bar2"><table><tbody><tr><td>foo</td></tr></tbody></table>
!!test
Templates: Wiki Tables: 1a. Fostering of entire template content
-!!input
+!! wikitext
{|
{{echo|a}}
|}
-!!result
+!! html
<table>
a
<tr><td></td></tr></table>
!!test
Templates: Wiki Tables: 1b. Fostering of entire template content
-!!input
+!! wikitext
{|
{{echo|<div>}}
foo
{{echo|</div>}}
|}
-!!result
+!! html
<table>
<div>
<p>foo
!!test
Templates: Wiki Tables: 2. Fostering of partial template content
-!!input
+!! wikitext
{|
{{echo|a
<div>b</div>}}
|}
-!!result
+!! html
<table>
a
<div>b</div>
!!test
Templates: Wiki Tables: 3. td-content via multiple templates
-!!input
+!! wikitext
{|
{{echo|{{pipe}}a}}{{echo|b}}
|}
-!!result
+!! html
<table>
<tr>
<td>ab
!!test
Templates: Wiki Tables: 4. Templated tags, no content
-!!input
+!! wikitext
{{tbl-start}}
{{tbl-end}}
-!!result
+!! html
<table>
<tr><td></td></tr></table>
!!test
Templates: Wiki Tables: 5. Templated tags, regular td-tags
-!!input
+!! wikitext
{{tbl-start}}
|foo
{{tbl-end}}
-!!result
+!! html
<table>
<tr>
<td>foo
!!test
Templates: Wiki Tables: 6. Templated tags, templated td-tags
-!!input
+!! wikitext
{{tbl-start}}
{{!}}foo
{{tbl-end}}
-!!result
+!! html
<table>
<tr>
<td>foo
!!test
Templates: Lists: Multi-line list-items via templates
-!!input
+!! wikitext
*{{echo|a {{nonexistent|
unused}}}}
*{{echo|b {{nonexistent|
unused}}}}
-!!result
+!! html
<ul>
<li>a <a href="/index.php?title=Template:Nonexistent&action=edit&redlink=1" class="new" title="Template:Nonexistent (page does not exist)">Template:Nonexistent</a>
</li>
!!test
Templates: Ugly nesting: 1. Quotes opened/closed across templates (echo)
-!!input
+!! wikitext
{{echo|''a}}{{echo|b''c''d}}{{echo|''e}}
-!!result
+!! html
<p><i>ab</i>c<i>d</i>e
</p>
!!end
!!test
Templates: Ugly nesting: 2. Quotes opened/closed across templates (echo_with_span)
(PHP parser generates misnested html)
-!! options
-parsoid
-!!input
+!! wikitext
{{echo_with_span|''a}}{{echo_with_span|b''c''d}}{{echo_with_span|''e}}
-!!result
+!! html/parsoid
<p><span about="#mwt1" typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo_with_span","href":"./Template:Echo_with_span"},"params":{"1":{"wt":"''a"}},"i":0}}]}"><i>a</i></span><i about="#mwt2" typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo_with_span","href":"./Template:Echo_with_span"},"params":{"1":{"wt":"b''c''d"}},"i":0}},{"template":{"target":{"wt":"echo_with_span","href":"./Template:Echo_with_span"},"params":{"1":{"wt":"''e"}},"i":1}}]}"><span>b</span></i><span about="#mwt2">c</span><i about="#mwt2">d<span></span></i><span about="#mwt2">e</span></p>
!!end
(PHP parser generates misnested html; Parsoid html2wt mode adds newlines between {{echo}}s)
!! options
parsoid=wt2html,wt2wt
-!!input
+!! wikitext
{{echo_with_div|''a}}{{echo_with_div|b''c''d}}{{echo_with_div|''e}}
-!!result
+!! html
<div about="#mwt1" typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo_with_div","href":"./Template:Echo_with_div"},"params":{"1":{"wt":"''a"}},"i":0}}]}"><i>a</i></div>
<div about="#mwt2" typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo_with_div","href":"./Template:Echo_with_div"},"params":{"1":{"wt":"b''c''d"}},"i":0}}]}"><i>b</i>c<i>d</i></div>
<div about="#mwt3" typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo_with_div","href":"./Template:Echo_with_div"},"params":{"1":{"wt":"''e"}},"i":0}}]}">e</div>
!!test
Templates: Ugly nesting: 4. Divs opened/closed across templates
-!!input
+!! wikitext
a<div>b{{echo|c</div>d}}e
-!!result
+!! html
a<div>bc</div>de
!!end
(Parsoid-centric)
!! options
parsoid
-!!input
+!! wikitext
{|
|{{echo|foo</table>}}
|bar
|}
-!!result
+!! html
<table about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":["{|\n|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo</table>"}},"i":0}},"\n|bar\n|}"]}'>
<tbody>
(Parsoid-centric)
!! options
parsoid
-!!input
+!! wikitext
<table>
<tr>
<td>
<td>xyz</td>
</tr>
</table>
-!!result
+!! html
<table about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":["<table>\n <tr>\n <td>\n <table>\n <tr>\n <td>1. ",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo </table>"}},"i":0}},"</td>\n <td> bar </td>\n <td>2. ",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"baz </table>"}},"i":1}},"</td>\n </tr>\n <tr>\n <td>abc</td>\n </tr>\n </table>\n </td>\n </tr>\n <tr>\n <td>xyz</td>\n </tr>\n</table>"]}'>
<tbody><tr>
<td>
!! test
Templates: Ugly templates: 3. newline-only template parameter
-!! input
+!! wikitext
foo {{echo|
}}
-!! result
+!! html
<p>foo
</p>
!! 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
+!! wikitext
{{echo|
}}
-!! result
+!! html
<p><br />
</p>
!! end
!!test
Parser Functions: 1. Simple example
-!!input
+!! wikitext
{{uc:foo}}
-!!result
+!! html
<p>FOO
</p>
!!end
!!test
Parser Functions: 2. Nested use (only outermost should be marked up)
-!!input
+!! wikitext
{{uc:{{lc:FOO}}}}
-!!result
+!! html
<p>FOO
</p>
!!end
pre-save transform: subst:
!! options
PST
-!! input
+!! wikitext
{{subst:test}}
-!! result
+!! html
This is a test template
!! end
pre-save transform: normal template
!! options
PST
-!! input
+!! wikitext
{{test}}
-!! result
+!! html
{{test}}
!! end
pre-save transform: nonexistent template
!! options
PST
-!! input
+!! wikitext
{{thistemplatedoesnotexist}}
-!! result
+!! html
{{thistemplatedoesnotexist}}
!! end
pre-save transform: subst magic variables
!! options
PST
-!! input
+!! wikitext
{{subst:SITENAME}}
-!! result
+!! html
MediaWiki
!! end
pre-save transform: subst: templates with parameters
!! options
pst
-!! input
+!! wikitext
{{subst:paramtest|param="something else"}}
-!! result
+!! html
This is a test template with parameter "something else"
!! end
pre-save transform: nowiki in subst (bug 1188)
!! options
pst
-!! input
+!! wikitext
{{subst:nowikitest}}
-!! result
+!! html
<nowiki>'''not wiki'''</nowiki>
!! end
pre-save transform: comment in subst (bug 1936)
!! options
pst
-!! input
+!! wikitext
{{subst:commenttest}}
-!! result
+!! html
This template has <!-- a comment --> in it.
!! end
pre-save transform: unclosed tag
!! options
pst noxml
-!! input
+!! wikitext
<nowiki>'''not wiki'''
-!! result
+!! html
<nowiki>'''not wiki'''
!! end
pre-save transform: mixed tag case
!! options
pst noxml
-!! input
+!! wikitext
<NOwiki>'''not wiki'''</noWIKI>
-!! result
+!! html
<NOwiki>'''not wiki'''</noWIKI>
!! end
pre-save transform: unclosed comment in <nowiki>
!! options
pst noxml
-!! input
+!! wikitext
wiki<nowiki>nowiki<!--nowiki</nowiki>wiki
-!! result
+!! html
wiki<nowiki>nowiki<!--nowiki</nowiki>wiki
!!end
!!test
(confirming safety of fix for subst bug 1936)
-!! input
+!! wikitext
{{Template:dangerous}}
-!! result
+!! html
<p>@<span>Oh no</span>
</p>
!! end
pre-save transform: comment containing gallery (bug 5024)
!! options
pst
-!! input
+!! wikitext
<!-- <gallery>data</gallery> -->
-!!result
+!! html
<!-- <gallery>data</gallery> -->
!!end
pre-save transform: comment containing extension
!! options
pst
-!! input
+!! wikitext
<!-- <tag>data</tag> -->
-!!result
+!! html
<!-- <tag>data</tag> -->
!!end
pre-save transform: comment containing nowiki
!! options
pst
-!! input
+!! wikitext
<!-- <nowiki>data</nowiki> -->
-!!result
+!! html
<!-- <nowiki>data</nowiki> -->
!!end
pre-save transform: <noinclude> in subst (bug 3298)
!! options
pst
-!! input
+!! wikitext
{{subst:Includes}}
-!! result
+!! html
Foobar
!! end
pre-save transform: <onlyinclude> in subst (bug 3298)
!! options
pst
-!! input
+!! wikitext
{{subst:Includes2}}
-!! result
+!! html
Foo
!! end
bug 22297: safesubst: works during PST
!! options
pst
-!! input
+!! wikitext
{{subst:SafeSubstTest}}{{safesubst:SubstTest}}
-!! result
+!! html
FoobarFoobar
!! end
!! test
bug 22297: safesubst: works during normal parse
-!! input
+!! wikitext
{{SafeSubstTest}}
-!! result
+!! html
<p>Foobar
</p>
!! end
!! test
subst: does not work during normal parse
-!! input
+!! wikitext
{{SubstTest}}
-!! result
+!! html
<p>{{subst:Includes}}
</p>
!! end
pre-save transform: context links ("pipe trick")
!! options
pst
-!! input
+!! wikitext
[[Article (context)|]]
[[Bar:Article|]]
[[:Bar:Article|]]
[[|Article (context)]]
[[Bar:X (Y) Z|]]
[[:Bar:X (Y) Z|]]
-!! result
+!! html
[[Article (context)|Article]]
[[Bar:Article|Article]]
[[:Bar:Article|Article]]
pre-save transform: context links ("pipe trick") with interwiki prefix
!! options
pst
-!! input
+!! wikitext
[[interwiki:Article|]]
[[:interwiki:Article|]]
[[interwiki:Bar:Article|]]
[[:interwiki:Bar:Article|]]
-!! result
+!! html
[[interwiki:Article|Article]]
[[:interwiki:Article|Article]]
[[interwiki:Bar:Article|Bar:Article]]
pre-save transform: context links ("pipe trick") with parens in title
!! options
pst title=[[Somearticle (context)]]
-!! input
+!! wikitext
[[|Article]]
-!! result
+!! html
[[Article (context)|Article]]
!! end
pre-save transform: context links ("pipe trick") with comma in title
!! options
pst title=[[Someplace, Somewhere]]
-!! input
+!! wikitext
[[|Otherplace]]
[[Otherplace, Elsewhere|]]
[[Otherplace, Elsewhere, Anywhere|]]
-!! result
+!! html
[[Otherplace, Somewhere|Otherplace]]
[[Otherplace, Elsewhere|Otherplace]]
[[Otherplace, Elsewhere, Anywhere|Otherplace]]
pre-save transform: context links ("pipe trick") with parens and comma
!! options
pst title=[[Someplace (IGNORED), Somewhere]]
-!! input
+!! wikitext
[[|Otherplace]]
[[Otherplace (place), Elsewhere|]]
-!! result
+!! html
[[Otherplace, Somewhere|Otherplace]]
[[Otherplace (place), Elsewhere|Otherplace]]
!! end
pre-save transform: context links ("pipe trick") with comma and parens
!! options
pst title=[[Who, me? (context)]]
-!! input
+!! wikitext
[[|Yes, you.]]
[[Me, Myself, and I (1937 song)|]]
-!! result
+!! html
[[Yes, you. (context)|Yes, you.]]
[[Me, Myself, and I (1937 song)|Me, Myself, and I]]
!! end
pre-save transform: context links ("pipe trick") with namespace
!! options
pst title=[[Ns:Somearticle]]
-!! input
+!! wikitext
[[|Article]]
-!! result
+!! html
[[Ns:Article|Article]]
!! end
pre-save transform: context links ("pipe trick") with namespace and parens
!! options
pst title=[[Ns:Somearticle (context)]]
-!! input
+!! wikitext
[[|Article]]
-!! result
+!! html
[[Ns:Article (context)|Article]]
!! end
pre-save transform: context links ("pipe trick") with namespace and comma
!! options
pst title=[[Ns:Somearticle, Context, Whatever]]
-!! input
+!! wikitext
[[|Article]]
-!! result
+!! html
[[Ns:Article, Context, Whatever|Article]]
!! end
pre-save transform: context links ("pipe trick") with namespace, comma and parens
!! options
pst title=[[Ns:Somearticle, Context (context)]]
-!! input
+!! wikitext
[[|Article]]
-!! result
+!! html
[[Ns:Article (context)|Article]]
!! end
pre-save transform: context links ("pipe trick") with namespace, parens and comma
!! options
pst title=[[Ns:Somearticle (IGNORED), Context]]
-!! input
+!! wikitext
[[|Article]]
-!! result
+!! html
[[Ns:Article, Context|Article]]
!! end
pre-save transform: context links ("pipe trick") with full-width parens and no space (Japanese and Chinese style, bug 30149)
!! options
pst
-!! input
+!! wikitext
[[Article(context)|]]
[[Bar:Article(context)|]]
[[:Bar:Article(context)|]]
[[|Article(context)]]
[[Bar:X(Y)Z|]]
[[:Bar:X(Y)Z|]]
-!! result
+!! html
[[Article(context)|Article]]
[[Bar:Article(context)|Article]]
[[:Bar:Article(context)|Article]]
pre-save transform: context links ("pipe trick") with full-width parens and space (Japanese and Chinese style, bug 30149)
!! options
pst
-!! input
+!! wikitext
[[Article (context)|]]
[[Bar:Article (context)|]]
[[:Bar:Article (context)|]]
[[|Article (context)]]
[[Bar:X (Y) Z|]]
[[:Bar:X (Y) Z|]]
-!! result
+!! html
[[Article (context)|Article]]
[[Bar:Article (context)|Article]]
[[:Bar:Article (context)|Article]]
pre-save transform: context links ("pipe trick") with parens and no space (Korean style, bug 30149)
!! options
pst
-!! input
+!! wikitext
[[Article(context)|]]
[[Bar:Article(context)|]]
[[:Bar:Article(context)|]]
[[|Article(context)]]
[[Bar:X(Y)Z|]]
[[:Bar:X(Y)Z|]]
-!! result
+!! html
[[Article(context)|Article]]
[[Bar:Article(context)|Article]]
[[:Bar:Article(context)|Article]]
pre-save transform: context links ("pipe trick") with commas (bug 21660)
!! options
pst
-!! input
+!! wikitext
[[Article (context), context|]]
[[Article (context),context|]]
[[Bar:Article (context), context|]]
[[Bar:Article (context),context|]]
[[:Bar:Article (context), context|]]
[[:Bar:Article (context),context|]]
-!! result
+!! html
[[Article (context), context|Article]]
[[Article (context),context|Article]]
[[Bar:Article (context), context|Article]]
pre-save transform: trim trailing empty lines
!! options
pst
-!! input
+!! wikitext
Empty lines are trimmed
-!! result
+!! html
Empty lines are trimmed
!! end
pre-save transform: Signature expansion
!! options
pst
-!! input
+!! wikitext
* ~~~
* <noinclude>~~~</noinclude>
* <includeonly>~~~</includeonly>
* <onlyinclude>~~~</onlyinclude>
-!! result
+!! html
* [[Special:Contributions/127.0.0.1|127.0.0.1]]
* <noinclude>[[Special:Contributions/127.0.0.1|127.0.0.1]]</noinclude>
* <includeonly>[[Special:Contributions/127.0.0.1|127.0.0.1]]</includeonly>
pre-save transform: Signature expansion in nowiki tags (bug 93)
!! options
pst disabled
-!! input
+!! wikitext
Shall not expand:
<nowiki>~~~~</nowiki>
But not inside includeonly
<includeonly>{{subst:Foo}}</includeonly>
-!! result
+!! html
Shall not expand:
<nowiki>~~~~</nowiki>
Parsoid: Recognize nowiki with trailing space in tags
!! options
parsoid=wt2html
-!! input
+!! wikitext
<nowiki ><div>[[foo]]</nowiki >
a<nowiki / >b
c<nowiki />d
e<nowiki/ >f
-!! result
+!! html
<p><span typeof="mw:Nowiki"><div>[[foo]]</span></p>
<p>ab</p>
<p>cd</p>
Parsoid: Recognize nowiki with odd capitalization
!! options
parsoid=wt2html
-!! input
+!! wikitext
<noWikI ><div>[[foo]]</Nowiki >
-!! result
+!! html
<p><span typeof="mw:Nowiki"><div>[[foo]]</span></p>
!! end
Parsoid: Escape nowiki with trailing space in tags
!! options
parsoid=html2wt
-!! input
+!! wikitext
<nowiki > foo </nowiki >
a<nowiki />b
c<nowiki/ >d
-!! result
+!! html
<p><nowiki > foo </nowiki ></p>
<p>a<nowiki />b</p>
<p>c<nowiki/ >d</p>
Parsoid: Escape weird noWikI capitalizations
!! options
parsoid=html2wt
-!! input
+!! wikitext
<noWikI > foo </NoWikI >
-!! result
+!! html
<p><noWikI > foo </NoWikI ></p>
!! end
message transform: magic variables
!! options
msg
-!! input
+!! wikitext
{{SITENAME}}
-!! result
+!! html
MediaWiki
!! end
message transform: should not transform wiki markup
!! options
msg
-!! input
+!! wikitext
''test''
-!! result
+!! html
''test''
!! end
message transform: <noinclude> in transcluded template (bug 4926)
!! options
msg
-!! input
+!! wikitext
{{Includes}}
-!! result
+!! html
Foobar
!! end
message transform: <onlyinclude> in transcluded template (bug 4926)
!! options
msg
-!! input
+!! wikitext
{{Includes2}}
-!! result
+!! html
Foo
!! end
{{#special:}} page name, known
!! options
msg
-!! input
+!! wikitext
{{#special:Recentchanges}}
-!! result
+!! html
Special:RecentChanges
!! end
{{#special:}} page name with subpage, known
!! options
msg
-!! input
+!! wikitext
{{#special:Recentchanges/param}}
-!! result
+!! html
Special:RecentChanges/param
!! end
{{#special:}} page name, unknown
!! options
msg
-!! input
+!! wikitext
{{#special:foobar nonexistent}}
-!! result
+!! html
Special:Foobar nonexistent
!! end
{{#speciale:}} page name, known
!! options
msg
-!! input
+!! wikitext
{{#speciale:Recentchanges}}
-!! result
+!! html
Special:RecentChanges
!! end
{{#speciale:}} page name with subpage, known
!! options
msg
-!! input
+!! wikitext
{{#speciale:Recentchanges/param}}
-!! result
+!! html
Special:RecentChanges/param
!! end
{{#speciale:}} page name, unknown
!! options
msg
-!! input
+!! wikitext
{{#speciale:foobar nonexistent}}
-!! result
+!! html
Special:Foobar_nonexistent
!! end
#### http://www.mediawiki.org/wiki/Parsoid/MediaWiki_DOM_spec#Images
!! test
-Simple image (php)
+Simple image
!! options
-php
-!! input
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
[[Image:foobar.jpg]]
-!! result
+!! html/php
<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
-!! end
-
-!! test
-Simple image (parsoid)
-!! options
-parsoid=wt2html
-!! input
-[[Image:foobar.jpg]]
-!! result
+!! html/parsoid
<p><span class="mw-default-size" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></span>
</p>
!! end
!! test
-Simple image (using File: namespace, now canonical) (php)
-!! options
-php
-!! input
-[[File:foobar.jpg]]
-!! result
+Simple image (using File: namespace, now canonical)
+!! wikitext
+[[File:Foobar.jpg]]
+!! html/php
<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
-!! end
-
-!! test
-Simple image (using File: namespace, now canonical) (parsoid)
-!! options
-parsoid
-!! input
-[[File:Foobar.jpg]]
-!! result
+!! html/parsoid
<p><span class="mw-default-size" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></span>
</p>
!! end
!! test
-Right-aligned image (php)
-!! options
-php
-!! input
-[[Image:foobar.jpg|right]]
-!! result
+Right-aligned image
+!! wikitext
+[[File:Foobar.jpg|right]]
+!! html/php
<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
-!! end
-
-!! test
-Right-aligned image (parsoid)
-!! options
-parsoid
-!! input
-[[File:Foobar.jpg|right]]
-!! result
+!! html/parsoid
<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></figure>
!! end
!! test
-Image with caption (php)
-!! options
-php
-!! input
+Image with caption
+!! wikitext
[[File:Foobar.jpg|right|Caption text]]
-!! result
+!! html/php
<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
-!! end
-
-!! test
-Image with caption (parsoid)
-!! options
-parsoid
-!! input
-[[File:Foobar.jpg|right|Caption text]]
-!! result
+!! html/parsoid
<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption text</figcaption></figure>
!! end
!! test
-Image with caption, bug 53312 #1 (parsoid)
-!! options
-parsoid
-!! input
+Image with caption, bug 53312 #1
+!! wikitext
[[File:Foobar.jpg|right|Caption page stuff]]
-!! result
+!! html/php
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption page stuff"><img alt="Caption page stuff" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+
+!! html/parsoid
<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption page stuff</figcaption></figure>
!! end
!! test
-Image with caption, bug 53312 #2 (parsoid)
-!! options
-parsoid
-!! input
+Image with caption, bug 53312 #2
+!! wikitext
[[File:Foobar.jpg|right|Caption page=]]
-!! result
+!! html/php
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption page="><img alt="Caption page=" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+
+!! html/parsoid
<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption page=</figcaption></figure>
!! end
!! test
-Image with caption, bug 53312 #3 (parsoid)
-!! options
-parsoid
-!! input
+Image with caption, bug 53312 #3
+!! wikitext
[[File:Foobar.jpg|right|Caption page=stuff]]
-!! result
+!! html/php
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption page=stuff"><img alt="Caption page=stuff" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+
+!! html/parsoid
<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption page=stuff</figcaption></figure>
!! end
!! test
-Allow empty links in image captions (Bug 60753) (parsoid)
-!! options
-parsoid
-!!input
+Allow empty links in image captions (Bug 60753)
+!! wikitext
[[File:Foobar.jpg|thumb|Caption [[Link1]]
[[]]
[[Link2]]
]]
-!! result
+!! html/php
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Caption <a href="/index.php?title=Link1&action=edit&redlink=1" class="new" title="Link1 (page does not exist)">Link1</a> [[]] <a href="/index.php?title=Link2&action=edit&redlink=1" class="new" title="Link2 (page does not exist)">Link2</a></div></div></div>
+
+!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"Caption [[Link1]]\n[[]]\n[[Link2]]\n"}],"dsr":[0,59,2,2]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"dsr":[2,null,null,null]}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption data-parsoid='{"dsr":[null,57,null,null]}'>Caption <a rel="mw:WikiLink" href="./Link1" data-parsoid='{"stx":"simple","a":{"href":"./Link1"},"sa":{"href":"Link1"},"dsr":[32,41,2,2]}'>Link1</a>
[[]]
<a rel="mw:WikiLink" href="./Link2" data-parsoid='{"stx":"simple","a":{"href":"./Link2"},"sa":{"href":"Link2"},"dsr":[47,56,2,2]}'>Link2</a>
!! test
Link with empty target
-!! input
+!! wikitext
[[]]
-!! result
+!! html
<p>[[]]
</p>
!! end
!! test
-Image with empty attribute (php)
+Image with empty attribute
!! options
-php
-!! input
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
[[File:Foobar.jpg|right||Caption text]]
-!! result
+!! html/php
<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
-!! end
-
-!! test
-Image with empty attribute (parsoid)
-!! options
-parsoid=wt2html
-!! input
-[[File:Foobar.jpg|right||Caption text]]
-!! result
+!! html/parsoid
<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption text</figcaption></figure>
!! end
!! test
1. Block image with individual attributes from templates
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|thumb|{{echo|137px}}|This is a caption]]
-!! result
+!! html/php
+<div class="thumb tright"><div class="thumbinner" style="width:139px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" width="137" height="16" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/206px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/274px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This is a caption</div></div></div>
+
+!! html/parsoid
<figure typeof="mw:Image/Thumb mw:ExpandedAttrs" data-mw='{"attribs":[["thumbnail",{"html":"thumb"}],["width",{"html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-mw=\"{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo&quot;,&quot;href&quot;:&quot;./Template:Echo&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;137px&quot;}},&quot;i&quot;:0}}]}\" data-parsoid=\"{&quot;dsr&quot;:[24,38,null,null],&quot;pi&quot;:[[{&quot;k&quot;:&quot;1&quot;,&quot;spc&quot;:[&quot;&quot;,&quot;&quot;,&quot;&quot;,&quot;&quot;]}]]}\">137px</span>"}]]}'><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="16" width="137"/></a><figcaption>This is a caption</figcaption></figure>
!! end
!! test
2. Block Image with individual attributes from templates
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|{{echo|thumb}}|{{echo|137px}}|This is a caption]]
-!! result
+!! html/php
+<div class="thumb tright"><div class="thumbinner" style="width:139px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" width="137" height="16" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/206px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/274px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This is a caption</div></div></div>
+
+!! html/parsoid
<figure typeof="mw:Image/Thumb mw:ExpandedAttrs" data-mw='{"attribs":[["thumbnail",{"html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-mw=\"{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo&quot;,&quot;href&quot;:&quot;./Template:Echo&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;thumb&quot;}},&quot;i&quot;:0}}]}\" data-parsoid=\"{&quot;dsr&quot;:[18,32,null,null],&quot;pi&quot;:[[{&quot;k&quot;:&quot;1&quot;,&quot;spc&quot;:[&quot;&quot;,&quot;&quot;,&quot;&quot;,&quot;&quot;]}]]}\">thumb</span>"}],["width",{"html":"<span about=\"#mwt2\" typeof=\"mw:Transclusion\" data-mw=\"{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo&quot;,&quot;href&quot;:&quot;./Template:Echo&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;137px&quot;}},&quot;i&quot;:0}}]}\" data-parsoid=\"{&quot;dsr&quot;:[33,47,null,null],&quot;pi&quot;:[[{&quot;k&quot;:&quot;1&quot;,&quot;spc&quot;:[&quot;&quot;,&quot;&quot;,&quot;&quot;,&quot;&quot;]}]]}\">137px</span>"}]]}'><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="16" width="137"/></a><figcaption>This is a caption</figcaption></figure>
!! end
!! test
3. Inline image with individual attributes from templates
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|{{echo|50px}}]]
-!! result
+!! html/php
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" width="50" height="6" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a>
+</p>
+!! html/parsoid
<p><span typeof="mw:Image mw:ExpandedAttrs" about="#mwt2" data-mw='{"attribs":[["width",{"html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-mw=\"{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo&quot;,&quot;href&quot;:&quot;./Template:Echo&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;50px&quot;}},&quot;i&quot;:0}}]}\" data-parsoid=\"{&quot;dsr&quot;:[18,31,null,null],&quot;pi&quot;:[[{&quot;k&quot;:&quot;1&quot;,&quot;spc&quot;:[&quot;&quot;,&quot;&quot;,&quot;&quot;,&quot;&quot;]}]]}\">50px</span>"}]]}' data-parsoid='{"optList":[{"ck":"width","ak":"{{echo|50px}}"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"6","width":"50"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></span></p>
!! end
-!! test
-Image with multiple attributes from the same template (php)
-!! options
-php
-!! input
-[[File:Foobar.jpg|{{image_attribs}}]]
-!! result
-<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
-
-!! end
-
## Parsoid does not provide editing support for images where templates produce multiple image attributes.
## To signal this, we add a 'mw:Placeholder' type to such images. This could change in the future.
!! test
-Image with multiple attributes from the same template (parsoid)
-!! options
-parsoid
-!! input
+Image with multiple attributes from the same template
+!! wikitext
[[File:Foobar.jpg|{{image_attribs}}]]
-!! result
+!! html/php
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+
+!! html/parsoid
<figure class="mw-default-size mw-halign-right" typeof="mw:Image mw:Placeholder"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption text</figcaption></figure>
!! end
!! test
-Image with link tails (php)
-!! options
-php
-!! input
+Image with link tails
+!! wikitext
123[[File:Foobar.jpg]]456
123[[File:Foobar.jpg|right]]456
123[[File:Foobar.jpg|thumb]]456
-!! result
+!! html/php
<p>123<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>456
</p>
123<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>456
123<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div></div></div></div>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
+!! html/parsoid
<p>123<span class="mw-default-size" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></span>456</p>
123<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></figure>456
123<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" height="25" width="220"></a></figure>456
!! end
!! test
-Image with multiple captions -- only last one is accepted (php)
-!! options
-php
-!! input
+Image with multiple captions -- only last one is accepted
+!! wikitext
[[File:Foobar.jpg|right|Caption1 - ignored|[[Caption2]] - ignored|Caption3 - accepted]]
-!! result
+!! html/php
<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption3 - accepted"><img alt="Caption3 - accepted" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
-!! 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
+!! html/parsoid
<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption3 - accepted</figcaption></figure>
!! end
!! test
-Image with multiple widths -- use last (php)
-!! options
-php
-!! input
+Image with multiple widths -- use last
+!! wikitext
[[File:Foobar.jpg|200px|300px|caption]]
-!! result
+!! html/php
<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" width="300" height="34" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/450px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/600px-Foobar.jpg 2x" /></a>
</p>
-!! end
-
-!! test
-Image with multiple widths -- use last (parsoid)
-!! options
-parsoid
-!! input
-[[File:Foobar.jpg|200px|300px|caption]]
-!! result
+!! html/parsoid
<p><span typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="34" width="300"/></a></span></p>
!! end
!! test
-Image with multiple alignments -- use first (bug 48664) (php)
-!! options
-php
-!! input
+Image with multiple alignments -- use first (bug 48664)
+!! wikitext
[[File:Foobar.jpg|thumb|left|right|center|caption]]
[[File:Foobar.jpg|middle|text-top|caption]]
-!! result
+!! html/php
<div class="thumb tleft"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" style="vertical-align: middle" /></a>
</p>
-!! end
-
-!! test
-Image with multiple alignments -- use first (bug 48664) (parsoid)
-!! options
-parsoid
-!! input
-[[File:Foobar.jpg|thumb|left|right|center|caption]]
-
-[[File:Foobar.jpg|middle|text-top|caption]]
-!! result
+!! html/parsoid
<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
<p><span class="mw-default-size mw-valign-middle" typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a></span></p>
!! end
!! test
-Image with width attribute at different positions (php)
-!! options
-php
-!! input
+Image with width attribute at different positions
+!! wikitext
[[File:Foobar.jpg|200px|right|Caption]]
[[File:Foobar.jpg|right|200px|Caption]]
[[File:Foobar.jpg|right|Caption|200px]]
-!! result
+!! html/php
<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a></div>
<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a></div>
<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a></div>
-!! end
-
-!! test
-Image with width attribute at different positions (parsoid)
-!! options
-parsoid
-!! input
-[[File:Foobar.jpg|200x200px|right|Caption]]
-[[File:Foobar.jpg|right|200x200px|Caption]]
-[[File:Foobar.jpg|right|Caption|200x200px]]
-!! result
+!! html/parsoid
<figure class="mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" height="23" width="200"></a><figcaption>Caption</figcaption></figure>
<figure class="mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" height="23" width="200"></a><figcaption>Caption</figcaption></figure>
<figure class="mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" height="23" width="200"></a><figcaption>Caption</figcaption></figure>
# a sad bit of backward-compatibility
!! test
-Image with size specified with pxpx (bug 13500, 51628) (php)
+Image with size specified with pxpx (bug 13500, 51628)
!! options
-php
-!! input
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
[[File:Foobar.jpg|20pxpx]]
[[File:Foobar.jpg|200x20pxpx]]
-!! result
+!! html/php
<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" width="20" height="2" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/30px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/40px-Foobar.jpg 2x" /></a>
<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/177px-Foobar.jpg" width="177" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/265px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/353px-Foobar.jpg 2x" /></a>
</p>
-!! end
-
-!! test
-Image with size specified with pxpx (bug 13500, 51628) (parsoid)
-!! options
-parsoid=wt2html,wt2wt
-!! input
-[[File:Foobar.jpg|20pxpx]]
-[[File:Foobar.jpg|200x20pxpx]]
-!! result
+!! html/parsoid
<p><span typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="2" width="20"/></a></span><span typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="20" width="177"/></a></span></p>
!! end
!! test
-Image with link parameter, wiki target (php)
-!! options
-php
-!! input
+Image with link parameter, wiki target
+!! wikitext
[[File:Foobar.jpg|link=Main Page]]
-!! result
+!! html/php
<p><a href="/wiki/Main_Page" title="Main Page"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
-!! end
-
-!! test
-Image with link parameter, wiki target (parsoid)
-!! options
-parsoid
-!! input
-[[File:Foobar.jpg|link=Main Page]]
-!! result
+!! html/parsoid
<p><span class="mw-default-size" typeof="mw:Image"><a href="Main_Page"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></span></p>
!! end
+# parsoid bug 49293 (part 1)
!! test
-Image with link parameter, URL target (php)
-!! options
-php
-!! input
+Image with link parameter, URL target
+!! wikitext
[[File:Foobar.jpg|link=http://example.com/]]
-!! result
+!! html/php
<p><a href="http://example.com/" rel="nofollow"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
-!! 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
+!! html/parsoid
<p><span class="mw-default-size" typeof="mw:Image"><a href="http://example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></span></p>
!! end
+# parsoid bug 49293 (part 2)
!! test
-Image with link parameter, protocol-less URL target (php)
-!! options
-php
-!! input
+Image with link parameter, protocol-less URL target
+!! wikitext
[[File:Foobar.jpg|link=//example.com/]]
-!! result
+!! html/php
<p><a href="//example.com/" rel="nofollow"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
-!! 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
+!! html/parsoid
<p><span class="mw-default-size" typeof="mw:Image"><a href="//example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></span></p>
!! end
!! test
Image with link parameter, wgExternalLinkTarget
-!! input
+!! wikitext
[[Image:foobar.jpg|link=http://example.com/]]
!! config
wgExternalLinkTarget='foobar'
-!! result
+!! html
<p><a href="http://example.com/" target="foobar" rel="nofollow"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
!! test
Image with link parameter, wgNoFollowLinks set to false
-!! input
+!! wikitext
[[Image:foobar.jpg|link=http://example.com/]]
!! config
wgNoFollowLinks=false
-!! result
+!! html
<p><a href="http://example.com/"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
!! test
Image with link parameter, wgNoFollowDomainExceptions
-!! input
+!! wikitext
[[Image:foobar.jpg|link=http://example.com/]]
!! config
wgNoFollowDomainExceptions='example.com'
-!! result
+!! html
<p><a href="http://example.com/"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
!! test
Image with link parameter, wgExternalLinkTarget, unnamed parameter
-!! input
+!! wikitext
[[Image:foobar.jpg|link=http://example.com/|Title]]
!! config
wgExternalLinkTarget='foobar'
-!! result
+!! html
<p><a href="http://example.com/" title="Title" target="foobar" rel="nofollow"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
!! test
-Image with empty link parameter (php)
-!! options
-php
-!! input
+Image with empty link parameter
+!! wikitext
[[File:Foobar.jpg|link=]]
-!! result
+!! html/php
<p><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" />
</p>
-!! end
-
-!! test
-Image with empty link parameter (parsoid)
-!! options
-parsoid
-!! input
-[[File:Foobar.jpg|link=]]
-!! result
+!! html/parsoid
<p><span class="mw-default-size" typeof="mw:Image"><span><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></span></span></p>
!! end
!! test
-Image with link parameter (wiki target) and unnamed parameter (php)
-!! options
-php
-!! input
-[[File:Foobar.jpg|link=Main Page|Title]]
-!! result
+Image with link parameter (wiki target) and unnamed parameter
+!! wikitext
+[[File:Foobar.jpg|link=Main_Page|Title]]
+!! html/php
<p><a href="/wiki/Main_Page" title="Title"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
-!! end
-
-!! test
-Image with link parameter (wiki target) and unnamed parameter (parsoid)
-!! options
-parsoid
-!! input
-[[File:Foobar.jpg|link=Main Page|Title]]
-!! result
+!! html/parsoid
<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"Title"}'><a href="Main_Page"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></span></p>
!! end
!! test
-Image with link parameter (URL target) and unnamed parameter (php)
-!! options
-php
-!! input
+Image with link parameter (URL target) and unnamed parameter
+!! wikitext
[[File:Foobar.jpg|link=http://example.com/|Title]]
-!! result
+!! html/php
<p><a href="http://example.com/" title="Title" rel="nofollow"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
-!! end
-
-!! test
-Image with link parameter (URL target) and unnamed parameter (parsoid)
-!! options
-parsoid
-!! input
-[[File:Foobar.jpg|link=http://example.com/|Title]]
-!! result
+!! html/parsoid
<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"Title"}'><a href="http://example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></span></p>
!! end
!! test
Thumbnail image with link parameter
!! options
-php
-!! input
-[[Image:foobar.jpg|thumb|link=http://example.com/|Title]]
-!! result
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
+[[File:Foobar.jpg|thumb|link=http://example.com/|Title]]
+!! html/php
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="http://example.com/"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+!! html/parsoid
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="http://example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>Title</figcaption></figure>
!! end
!! test
Manually-specified thumbnail image
-!! options
-php
-!! input
+!! wikitext
[[Image:Foobar.jpg|thumb=Thumb.png|Title]]
-!! result
+!! html/php
<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+!! html/parsoid
+XXX NOT IMPLEMENTED XXX
!! end
!! test
Manually-specified thumbnail image with explicit link to wiki page
-!! options
-php
-!! input
+!! wikitext
[[Image:Foobar.jpg|thumb=Thumb.png|link=Main Page|Title]]
-!! result
+!! html/php
<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/Main_Page" title="Main Page"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+!! html/parsoid
+XXX NOT IMPLEMENTED XXX
!! end
!! test
Manually-specified thumbnail image with explicit link to url
-!! options
-php
-!! input
+!! wikitext
[[Image:Foobar.jpg|thumb=Thumb.png|link=http://example.com|Title]]
-!! result
+!! html/php
<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="http://example.com"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+!! html/parsoid
+XXX NOT IMPLEMENTED XXX
!! end
!! test
Manually-specified thumbnail image with explicit no link
-!! options
-php
-!! input
+!! wikitext
[[Image:Foobar.jpg|thumb=Thumb.png|link=|Title]]
-!! result
+!! html/php
<div class="thumb tright"><div class="thumbinner" style="width:137px;"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+!! html/parsoid
+XXX NOT IMPLEMENTED XXX
!! end
!! test
Manually-specified thumbnail image with explicit link and alt text
-!! options
-php
-!! input
+!! wikitext
[[Image:Foobar.jpg|thumb=Thumb.png|link=Main Page|alt=alttext|Title]]
-!! result
+!! html/php
<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/Main_Page" title="Main Page"><img alt="alttext" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+!! html/parsoid
+XXX NOT IMPLEMENTED XXX
!! end
!! test
Image with frame and link
-!! input
-[[Image:Foobar.jpg|frame|left|This is a test image [[Main Page]]]]
-!! result
+!! options
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
+[[File:Foobar.jpg|frame|left|This is a test image [[Main Page]]]]
+!! html/php
<div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
+!! html/parsoid
+<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Frame"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a><figcaption>This is a test image <a rel="mw:WikiLink" href="Main_Page">Main Page</a></figcaption></figure>
!! end
!! test
Image with frame and link and explicit alt
-!! input
+!! options
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
[[Image:Foobar.jpg|frame|left|This is a test image [[Main Page]]|alt=Altitude]]
-!! result
+!! html/php
<div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Altitude" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
+!! html/parsoid
+<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Frame"><a href="File:Foobar.jpg"><img alt="Altitude" resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a><figcaption>This is a test image <a rel="mw:WikiLink" href="Main_Page">Main Page</a></figcaption></figure>
!! end
!! test
Image with wiki markup in implicit alt
-!! input
+!! options
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
[[Image:Foobar.jpg|testing '''bold''' in alt]]
-!! result
+
+[[Image:Foobar.jpg|alt=testing '''bold''' in alt]]
+!! html/php
<p><a href="/wiki/File:Foobar.jpg" class="image" title="testing bold in alt"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p><p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
+!! html/parsoid
+<p><span class="mw-default-size" typeof="mw:Image" data-mw="{"caption":"testing '''bold''' in alt"}"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Image"><a href="File:Foobar.jpg"><img alt="testing bold in alt" resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a></span></p>
!! end
+###################
+# Image sizing.
+# See https://www.mediawiki.org/wiki/Help:Images#Size_and_frame
+# and https://bugzilla.wikimedia.org/show_bug.cgi?id=62258
+# Foobar has actual size of 1941x220
+# 1. Thumbs & frameless always reduce, can't be enlarged
+# 2. Framed images ignore width; always render at default size.
+# If given a height, they respect height but continue to ignore width.
+# 3. "Unspecified format" and border are the only types which can be
+# enlarged.
+
!! test
-Image with wiki markup in explicit alt
-!! input
-[[Image:Foobar.jpg|alt=testing '''bold''' in alt]]
-!! result
-<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+Image: "unspecified format" and border enlarge
+!! options
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
+[[File:Foobar.jpg|2000px]]
+
+[[File:Foobar.jpg|border|2000px]]
+!! html/php
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="2000" height="227" /></a>
+</p><p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="2000" height="227" class="thumbborder" /></a>
+</p>
+!! html/parsoid
+<p><span typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="227" width="2000"/></a></span></p>
+<p><span class="mw-image-border" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="227" width="2000"/></a></span></p>
+!! end
+
+!! test
+Image: "unspecified format" and border reduce
+!! options
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
+[[File:Foobar.jpg|1000px]]
+
+[[File:Foobar.jpg|border|1000px]]
+!! html/php
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" width="1000" height="113" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/1500px-Foobar.jpg 1.5x, http://example.com/images/3/3a/Foobar.jpg 2x" /></a>
+</p><p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" width="1000" height="113" class="thumbborder" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/1500px-Foobar.jpg 1.5x, http://example.com/images/3/3a/Foobar.jpg 2x" /></a>
+</p>
+!! html/parsoid
+<p><span typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="113" width="1000"/></a></span></p>
+<p><span class="mw-image-border" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="113" width="1000"/></a></span></p>
+!! end
+
+!! test
+Image: thumbs reduce
+!! options
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
+[[File:Foobar.jpg|thumb|50px]]
+!! html/php
+<div class="thumb tright"><div class="thumbinner" style="width:52px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" width="50" height="6" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div></div></div></div>
+
+!! html/parsoid
+<figure typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="6" width="50"/></a></figure>
+!! end
+
+!! test
+Image: thumbs can't be enlarged past original size
+!! options
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
+[[File:Foobar.jpg|thumb|2000px]]
+!! html/php
+<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div></div></div></div>
+
+!! html/parsoid
+<figure typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a></figure>
+!! end
+
+!! test
+Image: frameless can reduce in size
+!! options
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
+[[File:Foobar.jpg|frameless|50px]]
+!! html/php
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" width="50" height="6" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a>
</p>
+!! html/parsoid
+<p><span typeof="mw:Image/Frameless"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="6" width="50"/></a></span></p>
+!! end
+
+!! test
+Image: frameless can't be enlarged past original size
+!! options
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
+[[File:Foobar.jpg|frameless|2000px]]
+!! html/php
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p>
+!! html/parsoid
+<p><span typeof="mw:Image/Frameless"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a></span></p>
+!! end
+
+!! test
+Image: framed images ignore size if only width is given
+!! options
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
+[[File:Foobar.jpg|frame]]
+
+[[File:Foobar.jpg|frame|50px]]
+
+[[File:Foobar.jpg|frame|2000px]]
+!! html/php
+<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption"></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption"></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption"></div></div></div>
+
+!! html/parsoid
+<figure class="mw-default-size" typeof="mw:Image/Frame"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a></figure><figure typeof="mw:Image/Frame"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a></figure><figure typeof="mw:Image/Frame"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a></figure>
+!! end
+
+!! test
+Image: framed images respect size if given a height, but ignore width.
+!! wikitext
+[[File:Foobar.jpg|frame|50x50px]]
+!! html/php
+<div class="thumb tright"><div class="thumbinner" style="width:444px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/442px-Foobar.jpg" width="442" height="50" class="thumbimage" /></a> <div class="thumbcaption"></div></div></div>
+
+!! html/parsoid
+<figure typeof="mw:Image/Frame"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="50" width="442"/></a></figure>
!! end
+###################
+
!! test
Link to image page- image page normally doesn't exists, hence edit link
Add test with existing image page
#<p><a href="/wiki/File:Test" title="Image:Test">Image:test</a>
-!! input
+!! wikitext
[[:Image:test]]
-!! result
+!! html
<p><a href="/index.php?title=File:Test&action=edit&redlink=1" class="new" title="File:Test (page does not exist)">Image:test</a>
</p>
!! end
!! test
bug 18784 Link to non-existent image page with caption should use caption as link text
-!! input
+!! wikitext
[[:Image:test|caption]]
-!! result
+!! html
<p><a href="/index.php?title=File:Test&action=edit&redlink=1" class="new" title="File:Test (page does not exist)">caption</a>
</p>
!! end
!! test
Frameless image caption with a free URL
-!! input
-[[Image:foobar.jpg|http://example.com]]
-!! result
+!! wikitext
+[[File:Foobar.jpg|http://example.com]]
+!! html/php
<p><a href="/wiki/File:Foobar.jpg" class="image" title="http://example.com"><img alt="http://example.com" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
+!! html/parsoid
+<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"http://example.com"}'><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a></span></p>
!! end
!! test
Thumbnail image caption with a free URL
-!! input
-[[Image:foobar.jpg|thumb|http://example.com]]
-!! result
+!! wikitext
+[[File:Foobar.jpg|thumb|http://example.com]]
+!! html/php
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
+!! html/parsoid
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" href="http://example.com">http://example.com</a></figcaption></figure>
!! end
!! test
Thumbnail image caption with a free URL and explicit alt
-!! input
-[[Image:foobar.jpg|thumb|http://example.com|alt=Alteration]]
-!! result
+!! options
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
+[[File:Foobar.jpg|thumb|http://example.com|alt=Alteration]]
+!! html/php
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Alteration" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
+!! html/parsoid
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img alt="Alteration" resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" href="http://example.com">http://example.com</a></figcaption></figure>
!! end
!! test
SVG thumbnails with no language set
!! options
-!! input
+!! wikitext
[[File:Foobar.svg|thumb|caption]]
-!! result
+!! html
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="180" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
!! end
!! test
SVG thumbnails with language de
!! options
-!! input
+!! wikitext
[[File:Foobar.svg|thumb|caption|lang=de]]
-!! result
+!! html
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=File:Foobar.svg&lang=de" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png" width="180" height="180" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
!! end
!! test
SVG thumbnails with invalid language code
!! options
-!! input
+!! wikitext
[[File:Foobar.svg|thumb|caption|lang=invalid.language.code]]
-!! result
+!! html
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="180" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>lang=invalid.language.code</div></div></div>
!! end
!! test
BUG 1887: A ISBN with a thumbnail
-!! input
+!! wikitext
[[Image:foobar.jpg|thumb|ISBN 1235467890]]
-!! result
+!! html
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><a href="/wiki/Special:BookSources/1235467890" class="internal mw-magiclink-isbn">ISBN 1235467890</a></div></div></div>
!! end
!! test
BUG 1887: A RFC with a thumbnail
-!! input
+!! wikitext
[[Image:foobar.jpg|thumb|This is RFC 12354]]
-!! result
+!! html
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This is <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc12354">RFC 12354</a></div></div></div>
!! end
!! test
BUG 1887: A mailto link with a thumbnail
-!! input
+!! wikitext
[[Image:foobar.jpg|thumb|Please mailto:nobody@example.com]]
-!! result
+!! html
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Please <a rel="nofollow" class="external free" href="mailto:nobody@example.com">mailto:nobody@example.com</a></div></div></div>
!! end
# Pending resolution to bug 368
!! test
BUG 648: Frameless image caption with a link
-!! input
+!! wikitext
[[Image:foobar.jpg|text with a [[link]] in it]]
-!! result
+!! html
<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
!! test
BUG 648: Frameless image caption with a link (suffix)
-!! input
+!! wikitext
[[Image:foobar.jpg|text with a [[link]]foo in it]]
-!! result
+!! html
<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a linkfoo in it"><img alt="text with a linkfoo in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
!! test
BUG 648: Frameless image caption with an interwiki link
-!! input
+!! wikitext
[[Image:foobar.jpg|text with a [[MeatBall:Link]] in it]]
-!! result
+!! html
<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a MeatBall:Link in it"><img alt="text with a MeatBall:Link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
!! test
BUG 648: Frameless image caption with a piped interwiki link
-!! input
+!! wikitext
[[Image:foobar.jpg|text with a [[MeatBall:Link|link]] in it]]
-!! result
+!! html
<p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
!! test
Escape HTML special chars in image alt text
-!! input
+!! wikitext
[[Image:foobar.jpg|& < > "]]
-!! result
+!! html
<p><a href="/wiki/File:Foobar.jpg" class="image" title="& < > ""><img alt="& < > "" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
!! test
BUG 499: Alt text should have Ӓ, not &1234;
-!! input
+!! wikitext
[[Image:foobar.jpg|♀]]
-!! result
+!! html
<p><a href="/wiki/File:Foobar.jpg" class="image" title="♀"><img alt="♀" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
!! test
Broken image caption with link
-!! input
+!! wikitext
[[Image:Foobar.jpg|thumb|This is a broken caption. But [[Main Page|this]] is just an ordinary link.
-!! result
+!! html
<p>[[Image:Foobar.jpg|thumb|This is a broken caption. But <a href="/wiki/Main_Page" title="Main Page">this</a> is just an ordinary link.
</p>
!! end
!! test
Image caption containing another image
-!! input
+!! wikitext
[[Image:Foobar.jpg|thumb|This is a caption with another [[Image:icon.png|image]] inside it!]]
-!! result
+!! html
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This is a caption with another <a href="/index.php?title=Special:Upload&wpDestFile=Icon.png" class="new" title="File:Icon.png">image</a> inside it!</div></div></div>
!! end
!! test
Image caption containing a newline
-!! input
+!! wikitext
[[Image:Foobar.jpg|This
*is some text]]
-!! result
+!! html
<p><a href="/wiki/File:Foobar.jpg" class="image" title="This *is some text"><img alt="This *is some text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!!end
!!test
Parsoid: Image caption containing leading space
(The leading space should not trigger nowiki escaping in wt2wt mode)
-!! input
+!! wikitext
[[Image:Foobar.jpg|thumb| bar]]
-!! result
+!! html
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>bar</div></div></div>
!!end
!! test
-Image caption containing a table (php)
-!! options
-php
-!! input
+Images: caption containing a table
+!! wikitext
[[Image:Foobar.jpg|thumb|200px|This is an example image thumbnail caption with a table
{|
! Foo !! Bar
| Foo1 || Bar1
|}
and some more text.]]
-!! result
+!! html/php
<div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This is an example image thumbnail caption with a table <table> <tr> <th> Foo </th> <th> Bar </th></tr> <tr> <td> Foo1 </td> <td> Bar1 </td></tr></table> and some more text.</div></div></div>
-!!end
-
-!! test
-Image caption containing a table (parsoid)
-!! options
-parsoid
-!! input
-[[Image:Foobar.jpg|thumb|200px|This is an example image thumbnail caption with a table
-{|
-! Foo !! Bar
-|-
-| Foo1 || Bar1
-|}
-and some more text.]]
-!! result
+!! html/parsoid
<figure typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="23" width="200"/></a><figcaption>This is an example image thumbnail caption with a table
<table>
<tbody>
!! 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
+!! wikitext
+[[File:Foobar.jpg|thumb|200x200px|This caption has [irc://example.net irc] and [https://example.com Secure] ext links in it.]]
+!! html/php
<div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This caption has <a rel="nofollow" class="external text" href="irc://example.net">irc</a> and <a rel="nofollow" class="external text" href="https://example.com">Secure</a> ext links in it.</div></div></div>
+!! html/parsoid
+<figure typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="23" width="200"/></a><figcaption>This caption has <a rel="mw:ExtLink" href="irc://example.net">irc</a> and <a rel="mw:ExtLink" href="https://example.com">Secure</a> ext links in it.</figcaption></figure>
!! end
!! test
Custom class
-!! input
+!! options
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
[[Image:foobar.jpg|a|class=b]]
-!! result
+!! html/php
<p><a href="/wiki/File:Foobar.jpg" class="image" title="a"><img alt="a" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="b" /></a>
</p>
+!! html/parsoid
+<p><span class="mw-default-size b" typeof="mw:Image" data-mw='{"caption":"a"}'><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a></span></p>
!! end
!! test
Localized image handling (1).
!! options
+parsoid=wt2html,wt2wt,html2html
language=es
-!! input
+!! wikitext
[[Archivo:Foobar.jpg|izquierda|enlace=foo|caption]]
-!! result
+!! html/php
<div class="floatleft"><a href="/wiki/Foo" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+!! html/parsoid
+<figure class="mw-default-size mw-halign-left" typeof="mw:Image"><a href="./Foo"><img resource="./Archivo:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a><figcaption>caption</figcaption></figure>
!! end
!! test
Localized image handling (2).
!! options
+parsoid=wt2html,wt2wt,html2html
language=es
-!! input
+!! wikitext
[[Archivo:Foobar.jpg|miniatura|izquierda|enlace=foo|caption]]
-!! result
+!! html/php
<div class="thumb tleft"><div class="thumbinner" style="width:182px;"><a href="/wiki/Foo" title="Foo"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/Archivo:Foobar.jpg" class="internal" title="Aumentar"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
+!! html/parsoid
+<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="./Foo"><img resource="./Archivo:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
!! end
!! test
"border", "frameless" and "class" attributes on an image.
-!! input
+!! options
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
[[File:Foobar.jpg|frameless|border|class=extra|caption]]
-!! result
+!! html/php
<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="extra thumbborder" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
</p>
+!! html/parsoid
+<p><span class="mw-default-size mw-image-border extra" typeof="mw:Image/Frameless" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a></span></p>
+!! end
+
+# Note that 'right' is the default alignment, despite the misspelled 'righ' below
+!! test
+Invalid image attributes (bug 62500)
+!! options
+parsoid=wt2html,wt2wt,html2html
+!! wikitext
+[[File:Foobar.jpg|thumb|float|left|caption]]
+
+[[File:Foobar.jpg|thumb|righ|caption]]
+
+[[File:Foobar.jpg|bogus1|thumb|bogus2|left|bogus3|caption]]
+!! html/php
+<div class="thumb tleft"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
+<div class="thumb tleft"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
+
+!! html/parsoid
+<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>caption</figcaption></figure><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>caption</figcaption></figure><figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
!! end
!! article
!! test
Redirected image
-!! input
+!! wikitext
[[Image:Barfoo.jpg]]
-!! result
+!! html
<p><a href="/wiki/File:Barfoo.jpg" title="File:Barfoo.jpg">File:Barfoo.jpg</a>
</p>
!! end
Missing image with uploads disabled
!! options
wgEnableUploads=0
-!! input
+!! wikitext
[[Image:Foobaz.jpg]]
-!! result
+!! html
<p><a href="/wiki/File:Foobaz.jpg" title="File:Foobaz.jpg">File:Foobaz.jpg</a>
</p>
!! end
!! test
Parsoid-specific image handling - simple image with size and middle alignment
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|middle|50px]]
-!! result
+!! html/parsoid
<p><span class="mw-valign-middle" typeof="mw:Image">
<a href="File:Foobar.jpg">
<img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50">
non-standard namespace alias
!! options
parsoid=wt2wt,wt2html,html2html
-!! input
+!! wikitext
[[Image:Foobar.jpg|middle|50px]]
-!! result
+!! html/parsoid
<p><span class="mw-valign-middle" typeof="mw:Image">
<a href="File:Foobar.jpg">
<img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50">
!! test
Parsoid-specific image handling - simple image with size and middle alignment
(existing content)
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|50px|middle]]
-!! result
+!! html/parsoid
<p><span class="mw-valign-middle" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"50px"},{"ck":"middle","ak":"middle"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"6","width":"50"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></span></p>
!! end
and non-standard namespace name
!! options
parsoid=wt2html,wt2wt,html2html
-!! input
+!! wikitext
[[Image:Foobar.jpg|50px|middle]]
-!! result
+!! html/parsoid
<p><span class="mw-valign-middle" typeof="mw:Image">
<a href="File:Foobar.jpg">
<img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50">
!! test
Parsoid-specific image handling - simple image with both sizes, a baseline alignment, and a caption
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|500x10px|baseline|caption]]
-!! result
+!! html/parsoid
<p><span class="mw-valign-baseline" typeof="mw:Image" data-mw='{"caption":"caption"}' data-parsoid='{"optList":[{"ck":"width","ak":"500x10px"},{"ck":"baseline","ak":"baseline"},{"ck":"caption","ak":"caption"}],"size":"500x10"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/89px-Foobar.jpg" height="10" width="89" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"10","width":"89"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></span></p>
!! end
!! test
Parsoid-specific image handling - simple image with border and size spec
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|50px|border|caption]]
-!! result
+!! html/parsoid
<p><span class="mw-image-border" typeof="mw:Image" data-mw='{"caption":"caption"}' data-parsoid='{"optList":[{"ck":"width","ak":"50px"},{"ck":"border","ak":"border"},{"ck":"caption","ak":"caption"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"6","width":"50"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></span></p>
!! end
!! test
Parsoid-specific image handling - thumbnail with halign, valign, and caption
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|left|baseline|thumb|caption content]]
-!! result
+!! html/parsoid
<figure class="mw-default-size mw-halign-left mw-valign-baseline" typeof="mw:Image/Thumb">
<a href="File:Foobar.jpg">
<img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" height="25" width="220" />
!! test
Parsoid-specific image handling - thumbnail with halign, valign, and caption
(existing content)
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|thumb|left|baseline|caption content]]
-!! result
+!! html/parsoid
<figure class="mw-default-size mw-halign-left mw-valign-baseline" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"left","ak":"left"},{"ck":"baseline","ak":"baseline"},{"ck":"caption","ak":"caption content"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>caption content</figcaption></figure>
!! end
!! test
Parsoid-specific image handling - thumbnail with specific size, halign, valign, and caption
-!! options
-parsoid
-!! input
+!! wikitext
[[Image:Foobar.jpg|right|middle|thumb|50x50px|caption]]
-!! result
+!! html/parsoid
<figure class="mw-halign-right mw-valign-middle" typeof="mw:Image/Thumb">
<a href="File:Foobar.jpg">
<img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50" />
!! test
Parsoid-specific image handling - thumbnail with specific size, halign,
valign, and caption (existing content)
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|thumb|50x50px|right|middle|caption]]
-!! result
+!! html/parsoid
<figure class="mw-halign-right mw-valign-middle" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"width","ak":"50x50px"},{"ck":"right","ak":"right"},{"ck":"middle","ak":"middle"},{"ck":"caption","ak":"caption"}],"size":"50x50"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"6","width":"50"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>caption</figcaption></figure>
!! end
!! test
Parsoid-specific image handling - framed image with specific size and caption
-!! options
-parsoid
-!! input
+!! wikitext
[[Image:Foobar.jpg|frame|500x50px|caption]]
-!! result
+!! html/parsoid
<figure typeof="mw:Image/Frame">
<a href="File:Foobar.jpg">
<img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" />
!! test
Parsoid-specific image handling - framed image with specific size and caption
(existing content)
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|442x50px|frame|caption]]
-!! result
+!! html/parsoid
<figure typeof="mw:Image/Frame" data-parsoid='{"optList":[{"ck":"width","ak":"442x50px"},{"ck":"framed","ak":"frame"},{"ck":"caption","ak":"caption"}],"size":"442x50"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"50","width":"442"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>caption</figcaption></figure>
!! end
!! test
Parsoid-specific image handling - framed image with specific size, halign, valign, and caption
-!! options
-parsoid
-!! input
+!! wikitext
[[Image:Foobar.jpg|left|baseline|frame|500x50px|caption]]
-!! result
+!! html/parsoid
<figure class="mw-halign-left mw-valign-baseline" typeof="mw:Image/Frame">
<a href="File:Foobar.jpg">
<img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" />
!! test
Parsoid-specific image handling - framed image with specific size, halign,
valign, and caption (existing content)
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|442x50px|frame|left|baseline|caption]]
-!! result
+!! html/parsoid
<figure class="mw-halign-left mw-valign-baseline" typeof="mw:Image/Frame" data-parsoid='{"optList":[{"ck":"width","ak":"442x50px"},{"ck":"framed","ak":"frame"},{"ck":"left","ak":"left"},{"ck":"baseline","ak":"baseline"},{"ck":"caption","ak":"caption"}],"size":"442x50"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"50","width":"442"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>caption</figcaption></figure>
!! end
!! test
Parsoid-specific image handling - frameless image with specific size, border, and caption
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|frameless|442x50px|border|caption]]
-!! result
+!! html/parsoid
<p><span class="mw-image-border" typeof="mw:Image/Frameless" data-mw='{"caption":"caption"}' data-parsoid='{"optList":[{"ck":"frameless","ak":"frameless"},{"ck":"width","ak":"442x50px"},{"ck":"border","ak":"border"},{"ck":"caption","ak":"caption"}],"size":"442x50"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"50","width":"442"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></span></p>
!! end
!! test
Parsoid-specific image handling - simple image with a formatted caption
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|<table><tr><td>a</td><td>b</td></tr><tr><td>c</td></tr></table>]]
-!! result
+!! html/parsoid
<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"<table><tr><td>a</td><td>b</td></tr><tr><td>c</td></tr></table>"}'>
<a href="File:Foobar.jpg">
<img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941">
!! test
Parsoid-specific image handling - caption with a template in it
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|thumb|200x23px|This caption has a {{echo|transclusion}} in it.]]
-!! result
+!! html/parsoid
<figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" height="23" width="200"></a><figcaption>This caption has a <span about="#mwt1" typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"transclusion"}},"i":0}}]}">transclusion</span> in it.</figcaption></figure>
!! end
Parsoid-specific image handling - caption with unbalanced tags in it
!! options
parsoid=wt2html,wt2wt,html2html
-!! input
+!! wikitext
foo
[[File:Foobar.jpg|thumb|200x200px|This caption has a <center>unbalanced tag in it.]]
bar
-!! result
+!! html/parsoid
<p>foo</p>
<figure typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="23" width="200"></a><figcaption>This caption has a <center>unbalanced tag in it.</center></figcaption></figure>
<p>bar</p>
!! test
Parsoid-specific image handling - empty caption
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|thumb|]]
-!! result
+!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption></figcaption></figure>
!! end
!! test
Parsoid-specific image handling - whitespace caption
-!! options
-parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|thumb| ]]
-!! result
+!! html/parsoid
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption> </figcaption></figure>
!! end
!! test
Parsoid-specific image handling - lang option
-!! options
-parsoid
-!! input
+!! wikitext
foo
[[File:Foobar.svg|lang=de|caption]]
bar
-!! result
+!! html/parsoid
<p>foo
<span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/f/ff/Foobar.svg" lang="de" height="180" width="240"/></a></span>
bar</p>
Subpage link
!! options
subpage title=[[Subpage test]]
-!! input
+!! wikitext
[[/subpage]]
-!! result
+!! html
<p><a href="/wiki/Subpage_test/subpage" title="Subpage test/subpage">/subpage</a>
</p>
!! end
Subpage noslash link
!! options
subpage title=[[Subpage test]]
-!!input
+!! wikitext
[[/subpage/]]
-!! result
+!! html
<p><a href="/wiki/Subpage_test/subpage" title="Subpage test/subpage">subpage</a>
</p>
!! end
!! options
parsoid=wt2wt,wt2html,html2html
subpage title=[[Subpage test/1/2/3/4]]
-!!input
+!! wikitext
[[../../subpage/]]
[[../../subpage]]
-!! result
+!! html
<p><a rel="mw:WikiLink" href="Subpage_test/1/2/subpage/">subpage</a></p>
<p><a rel="mw:WikiLink" href="Subpage_test/1/2/subpage">Subpage_test/1/2/subpage</a></p>
!! end
Parsoid: dot-slash prefixed wikilinks
!! options
parsoid=wt2wt,wt2html,html2html
-!!input
+!! wikitext
[[./foo]]
[[././bar]]
[[././baz/]]
-!! result
+!! html
<p><a rel="mw:WikiLink" href="./Foo">foo</a></p>
<p><a rel="mw:WikiLink" href="./Bar">bar</a></p>
<p><a rel="mw:WikiLink" href="./Baz/">baz/</a></p>
!! test
Disabled subpages
-!! input
+!! wikitext
[[/subpage]]
-!! result
+!! html
<p><a href="/index.php?title=/subpage&action=edit&redlink=1" class="new" title="/subpage (page does not exist)">/subpage</a>
</p>
!! end
BUG 561: {{/Subpage}}
!! options
subpage title=[[Page]]
-!! input
+!! wikitext
{{/Subpage}}
-!! result
+!! html
<p><a href="/index.php?title=Page/Subpage&action=edit&redlink=1" class="new" title="Page/Subpage (page does not exist)">Page/Subpage</a>
</p>
!! end
!! test
Link to category
-!! input
+!! wikitext
[[:Category:MediaWiki User's Guide]]
-!! result
+!! html
<p><a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User's Guide">Category:MediaWiki User's Guide</a>
</p>
!! end
Simple category
!! options
cat
-!! input
+!! wikitext
[[Category:MediaWiki User's Guide]]
-!! result
+!! html
<a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User's Guide">MediaWiki User's Guide</a>
!! end
!! test
PAGESINCATEGORY invalid title fatal (r33546 fix)
-!! input
+!! wikitext
{{PAGESINCATEGORY:<bogus>}}
-!! result
+!! html
<p>0
</p>
!! end
Category with different sort key
!! options
cat
-!! input
+!! wikitext
[[Category:MediaWiki User's Guide|Foo]]
-!! result
+!! html
<a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User's Guide">MediaWiki User's Guide</a>
!! end
Category with identical sort key
!! options
cat
-!! input
+!! wikitext
[[Category:MediaWiki User's Guide|MediaWiki User's Guide]]
-!! result
+!! html
<a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User's Guide">MediaWiki User's Guide</a>
!! end
!! options
cat
pst
-!! input
+!! wikitext
[[Category:MediaWiki User's Guide|]]
-!! result
+!! html
[[Category:MediaWiki User's Guide|MediaWiki User's Guide]]
!! end
!! options
cat
pst
-!! input
+!! wikitext
[[Category:Foo (bar)|]]
-!! result
+!! html
[[Category:Foo (bar)|Foo]]
!! end
!! options
cat
pst
-!! input
+!! wikitext
123[[Category:Foo]]456
-!! result
+!! html
123[[Category:Foo]]456
!! end
!! options
cat
pst
-!! input
+!! wikitext
[[Category:{{echo|Foo}}]]
-!! result
+!! html
[[Category:{{echo|Foo}}]]
!! end
!! options
cat
pst
-!! input
+!! wikitext
[[Category:Foo|{{echo|Bar}}]]
-!! result
+!! html
[[Category:Foo|{{echo|Bar}}]]
!! end
!! options
cat
pst
-!! input
+!! wikitext
[[Category:{{echo|Foo}}|{{echo|Bar}}]]
-!! result
+!! html
[[Category:{{echo|Foo}}|{{echo|Bar}}]]
!! end
!! test
Category / paragraph interactions
-!! input
+!! wikitext
Foo [[Category:Baz]] Bar
Foo [[Category:Baz]]
[[Category:Baz]]
{{echo|[[Category:Baz]]}}
[[Category:Baz]]
-!! result
+!! html
<p>Foo Bar
</p><p>Foo
Bar
Parsoid: Serialize link to category page with colon escape
!! options
parsoid
-!! input
+!! wikitext
[[:Category:Foo]]
[[:Category:Foo|Bar]]
-!! result
+!! html
<p>
<a rel="mw:WikiLink" href="Category:Foo">Category:Foo</a>
<a rel="mw:WikiLink" href="Category:Foo">Bar</a>
!! options
parsoid=wt2html,wt2wt,html2html
language=is
-!! input
+!! wikitext
x[[Category:Foo]]y
-!! result
+!! html
<p>x<link rel="mw:PageProp/Category" href="Category:Foo">y</p>
!! end
Parsoid: Serialize link to file page with colon escape
!! options
parsoid
-!! input
+!! wikitext
[[:File:Foo.png]]
[[:File:Foo.png|Bar]]
-!! result
+!! html
<p>
<a rel="mw:WikiLink" href="File:Foo.png">File:Foo.png</a>
<a rel="mw:WikiLink" href="File:Foo.png">Bar</a>
Parsoid: Serialize a genuine category link without colon escape
!! options
parsoid
-!! input
+!! wikitext
[[Category:Foo]]
[[Category:Foo|Bar]]
-!! result
+!! html
<link rel="mw:PageProp/Category" href="Category:Foo">
<link rel="mw:PageProp/Category" href="Category:Foo#Bar">
!! end
Parsoid: Defaultsort
!! options
parsoid
-!! input
+!! wikitext
{{DEFAULTSORT:Foo}}
-!! result
+!! html
<meta property="mw:PageProp/categorydefaultsort" content="Foo"/>
!! end
Inter-language links
!! options
ill
-!! input
+!! wikitext
[[es:Alimento]]
[[fr:Nourriture]]
[[zh:食品]]
-!! result
+!! html
es:Alimento fr:Nourriture zh:食品
!! end
Duplicate interlanguage links (bug 24502)
!! options
ill
-!! input
+!! wikitext
[[es:1]]
[[es:2]]
[[fr:1]]
[[fr:2]]
-!! result
+!! html
es:1 fr:1
!! end
###
!! test
Basic section headings
-!! input
+!! wikitext
== Headline 1 ==
Some text
More
===Smaller headline===
Blah blah
-!! result
+!! html
<h2><span class="mw-headline" id="Headline_1">Headline 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Headline 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<p>Some text
</p>
!! test
Section headings with TOC
-!! input
+!! wikitext
== Headline 1 ==
=== Subheadline 1 ===
===== Skipping a level =====
== Headline 2 ==
Some text
===Another headline===
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Headline_1"><span class="tocnumber">1</span> <span class="toctext">Headline 1</span></a>
# perl -e 'print "="x$_," Level $_ heading","="x$_,"\n" for 1..10'
!! test
Handling of sections up to level 6 and beyond
-!! input
+!! wikitext
= Level 1 Heading=
== Level 2 Heading==
=== Level 3 Heading===
======== Level 8 Heading========
========= Level 9 Heading=========
========== Level 10 Heading==========
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Level_1_Heading"><span class="tocnumber">1</span> <span class="toctext">Level 1 Heading</span></a>
!! test
TOC regression (bug 9764)
-!! input
+!! wikitext
== title 1 ==
=== title 1.1 ===
==== title 1.1.1 ====
=== title 1.2 ===
== title 2 ==
=== title 2.1 ===
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
TOC with wgMaxTocLevel=3 (bug 6204)
!! options
wgMaxTocLevel=3
-!! input
+!! wikitext
== title 1 ==
=== title 1.1 ===
==== title 1.1.1 ====
=== title 1.2 ===
== title 2 ==
=== title 2.1 ===
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
TOC with wgMaxTocLevel=3 and two level four headings (bug 6204)
!! options
wgMaxTocLevel=3
-!! input
+!! wikitext
==Section 1==
===Section 1.1===
====Section 1.1.1====
====Section 1.1.1.1====
==Section 2==
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Section_1"><span class="tocnumber">1</span> <span class="toctext">Section 1</span></a>
!! test
Resolving duplicate section names
-!! input
+!! wikitext
== Foo bar ==
== Foo bar ==
-!! result
+!! html
<h2><span class="mw-headline" id="Foo_bar">Foo bar</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Foo bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h2><span class="mw-headline" id="Foo_bar_2">Foo bar</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Foo bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
!! test
Resolving duplicate section names with differing case (bug 10721)
-!! input
+!! wikitext
== Foo bar ==
== Foo Bar ==
-!! result
+!! html
<h2><span class="mw-headline" id="Foo_bar">Foo bar</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Foo bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h2><span class="mw-headline" id="Foo_Bar_2">Foo Bar</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
!! test
Template with sections, __NOTOC__
-!! input
+!! wikitext
__NOTOC__
==Section 0==
{{sections}}
==Section 4==
-!! result
+!! html
<h2><span class="mw-headline" id="Section_0">Section 0</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Section 0">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h3><span class="mw-headline" id="Section_1">Section 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Template:Sections&action=edit&section=T-1" title="Template:Sections">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<h2><span class="mw-headline" id="Section_2">Section 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Template:Sections&action=edit&section=T-2" title="Template:Sections">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
!! test
__NOEDITSECTION__ keyword
-!! input
+!! wikitext
__NOEDITSECTION__
==Section 1==
==Section 2==
-!! result
+!! html
<h2><span class="mw-headline" id="Section_1">Section 1</span></h2>
<h2><span class="mw-headline" id="Section_2">Section 2</span></h2>
!! test
Link inside a section heading
-!! input
+!! wikitext
==Section with a [[Main Page|link]] in it==
-!! result
+!! html
<h2><span class="mw-headline" id="Section_with_a_link_in_it">Section with a <a href="/wiki/Main_Page" title="Main Page">link</a> in it</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Section with a link in it">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
!! end
!! test
TOC regression (bug 12077)
-!! input
+!! wikitext
__TOC__
== title 1 ==
=== title 1.1 ===
== title 2 ==
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
!! test
BUG 1219 URL next to image (good)
-!! input
+!! wikitext
http://example.com [[Image:foobar.jpg]]
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> <a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!!end
!! test
Short headings with trailing space should match behavior of Parser::doHeadings (bug 19910)
-!! input
+!! wikitext
===
The line above must have a trailing space!
=== <!--
--> <!-- -->
But just in case it doesn't...
-!! result
+!! html
<h1><span class="mw-headline" id=".3D">=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: =">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
<p>The line above must have a trailing space!
</p>
!! test
Header with special characters (bug 25462)
-!! input
+!! wikitext
The tooltips shall not show entities to the user (ie. be double escaped)
== text > text ==
== text " text ==
section 5
-!! result
+!! html
<p>The tooltips shall not show entities to the user (ie. be double escaped)
</p>
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
!! test
Headers with excess '=' characters
(Are similar tests necessary beyond the 1st level?)
-!! input
+!! wikitext
=foo==
==foo=
=''italic'' heading==
==''italic'' heading=
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#foo.3D"><span class="tocnumber">1</span> <span class="toctext">foo=</span></a></li>
!! test
HTML headers vs TOC (bug 23393)
(__NOEDITSECTION__ for clearer output, doesn't matter here)
-!! input
+!! wikitext
<h1>Header 1</h1>
== Header 1.1 ==
== Header 1.2 ==
== Header 2.1 ==
== Header 2.2 ==
__NOEDITSECTION__
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="#Header_1"><span class="tocnumber">1</span> <span class="toctext">Header 1</span></a>
!! test
BUG 1219 URL next to image (broken)
-!! input
+!! wikitext
http://example.com[[Image:foobar.jpg]]
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!!end
!! test
Bug 1186 news: in the middle of text
-!! input
+!! wikitext
http://en.wikinews.org/wiki/Wikinews:Workplace
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://en.wikinews.org/wiki/Wikinews:Workplace">http://en.wikinews.org/wiki/Wikinews:Workplace</a>
</p>
!!end
!! test
Namespaced link must have a title
-!! input
+!! wikitext
[[Project:]]
-!! result
+!! html
<p>[[Project:]]
</p>
!!end
!! test
Namespaced link must have a title (bad fragment version)
-!! input
+!! wikitext
[[Project:#fragment]]
-!! result
+!! html
<p>[[Project:#fragment]]
</p>
!!end
!! test
div with no attributes
-!! input
+!! wikitext
<div>HTML rocks</div>
-!! result
+!! html
<div>HTML rocks</div>
!! end
!! test
div with double-quoted attribute
-!! input
+!! wikitext
<div id="rock">HTML rocks</div>
-!! result
+!! html
<div id="rock">HTML rocks</div>
!! end
!! test
div with single-quoted attribute
-!! input
+!! wikitext
<div id='rock'>HTML rocks</div>
-!! result
+!! html
<div id="rock">HTML rocks</div>
!! end
!! test
div with unquoted attribute
-!! input
+!! wikitext
<div id=rock>HTML rocks</div>
-!! result
+!! html
<div id="rock">HTML rocks</div>
!! end
!! test
div with illegal double attributes
-!! input
+!! wikitext
<div id="a" id="b">HTML rocks</div>
-!! result
+!! html
<div id="b">HTML rocks</div>
!!end
div with empty attribute value, space before equals
!! options
parsoid
-!! input
+!! wikitext
<div class =>HTML rocks</div>
-!! result
+!! html
<div class="">HTML rocks</div>
!! end
div with braces in attribute value
!! options
parsoid
-!! input
+!! wikitext
<div title="{}">Foo</div>
-!! result
+!! html
<div title="{}">Foo</div>
!! end
div with empty attribute value, no space before equals
!! options
parsoid
-!! input
+!! wikitext
<div class=>HTML rocks</div>
-!! result
+!! html
<div class="">HTML rocks</div>
!! end
!! test
HTML multiple attributes correction
-!! input
+!! wikitext
<p class="error" class="awesome">Awesome!</p>
-!! result
+!! html
<p class="awesome">Awesome!</p>
!!end
!! test
Table multiple attributes correction
-!! input
+!! wikitext
{|
!+ class="error" class="awesome"| status
|}
-!! result
+!! html
<table>
<tr>
<th class="awesome"> status
!! test
DIV IN UPPERCASE
-!! input
+!! wikitext
<DIV ID="x">HTML ROCKS</DIV>
-!! result
+!! html
<div id="x">HTML ROCKS</div>
!!end
!! test
Non-ASCII pseudo-tags are rendered as text
-!! input
+!! wikitext
<khyô>
-!! result
+!! html
<p><khyô>
</p>
!! end
!! test
Pseudo-tag with URL 'name' renders as url link
-!! input
+!! wikitext
<http://example.com/>
-!! result
+!! html
<p><<a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a>>
</p>
!! end
!! test
text with amp in the middle of nowhere
-!! input
+!! wikitext
Remember AT&T?
-!!result
+!! html
<p>Remember AT&T?
</p>
!! end
!! test
text with character entity: eacute
-!! input
+!! wikitext
I always thought é was a cute letter.
-!! result
+!! html
<p>I always thought é was a cute letter.
</p>
!! end
!! test
text with entity-escaped character entity-like string: eacute
-!! input
+!! wikitext
I always thought &eacute; was a cute letter.
-!! result
+!! html
<p>I always thought &eacute; was a cute letter.
</p>
!! end
!! test
text with undefined character entity: xacute
-!! input
+!! wikitext
I always thought &xacute; was a cute letter.
-!! result
+!! html
<p>I always thought &xacute; was a cute letter.
</p>
!! end
HTML5 tags
!! options
parsoid
-!! input
+!! wikitext
<data value="5">five</data>
<time datetime="2000-01-01T00:00Z">The new millenium started</time>
<mark>This highlighted text</mark>
-!! result
+!! html
<p><data value="5">five</data>
<time datetime="2000-01-01T00:00Z">The new millenium started</time>
<mark>This highlighted text</mark></p>
!! test
HTML tag with leading space is parsed as text
-!! input
+!! wikitext
< div>foo< /div>
-!! result
+!! html
<p>< div>foo< /div>
</p>
!! end
# the test case, instead of <big>
!! test
Ensure that HTML adoption agency algorithm is properly implemented.
-!! input
+!! wikitext
<big>X<big>Y</big>Z</big>
-!! result
+!! html
<p><big>X<big>Y</big>Z</big>
</p>
!! end
# This was bug 41545 in the PHP parser.
!! test
Nesting of <kbd>
-!! input
+!! wikitext
<kbd>X<kbd>Y</kbd>Z</kbd>
-!! result
+!! html
<p><kbd>X<kbd>Y</kbd>Z</kbd>
</p>
!! end
# not covered; see bug 51081 for discussion.
!! test
Nesting of <em>
-!! input
+!! wikitext
<em>X<em>Y</em>Z</em>
-!! result
+!! html
<p><em>X<em>Y</em>Z</em>
</p>
!! end
!! test
Nesting of <strong>
-!! input
+!! wikitext
<strong>X<strong>Y</strong>Z</strong>
-!! result
+!! html
<p><strong>X<strong>Y</strong>Z</strong>
</p>
!! end
!! test
Nesting of <q>
-!! input
+!! wikitext
<q>X<q>Y</q>Z</q>
-!! result
+!! html
<p><q>X<q>Y</q>Z</q>
</p>
!! end
!! test
Nesting of <ruby>
-!! input
+!! wikitext
<ruby>X<ruby>Y</ruby>Z</ruby>
-!! result
+!! html
<p><ruby>X<ruby>Y</ruby>Z</ruby>
</p>
!! end
!! test
Nesting of <bdo>
-!! input
+!! wikitext
<bdo>X<bdo>Y</bdo>Z</bdo>
-!! result
+!! html
<p><bdo>X<bdo>Y</bdo>Z</bdo>
</p>
!! end
!! test
Media link
-!! input
+!! wikitext
[[Media:Foobar.jpg]]
-!! result
+!! html
<p><a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">Media:Foobar.jpg</a>
</p>
!! end
!! test
Media link with text
-!! input
+!! wikitext
[[Media:Foobar.jpg|A neat file to look at]]
-!! result
+!! html
<p><a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">A neat file to look at</a>
</p>
!! end
!! test
Media link with nasty text
fixme: doBlockLevels won't wrap this in a paragraph because it contains a div
-!! input
+!! wikitext
[[Media:Foobar.jpg|Safe Link<div style=display:none>" onmouseover="alert(document.cookie)" onfoo="</div>]]
-!! result
+!! html
<a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">Safe Link<div style="display:none">" onmouseover="alert(document.cookie)" onfoo="</div></a>
!! end
!! test
Media link to nonexistent file (bug 1702)
-!! input
+!! wikitext
[[Media:No such.jpg]]
-!! result
+!! html
<p><a href="/index.php?title=Special:Upload&wpDestFile=No_such.jpg" class="new" title="No such.jpg">Media:No such.jpg</a>
</p>
!! end
!! test
Image link to nonexistent file (bug 1850 - good)
-!! input
+!! wikitext
[[Image:No such.jpg]]
-!! result
+!! html
<p><a href="/index.php?title=Special:Upload&wpDestFile=No_such.jpg" class="new" title="File:No such.jpg">File:No such.jpg</a>
</p>
!! end
!! test
:Image link to nonexistent file (bug 1850 - bad)
-!! input
+!! wikitext
[[:Image:No such.jpg]]
-!! result
+!! html
<p><a href="/index.php?title=File:No_such.jpg&action=edit&redlink=1" class="new" title="File:No such.jpg (page does not exist)">Image:No such.jpg</a>
</p>
!! end
!! test
Character reference normalization in link text (bug 1938)
-!! input
+!! wikitext
[[Main Page|this&that]]
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">this&that</a>
</p>
!!end
!! test
(bug 19451) Links should refer to the normalized form.
-!! input
+!! wikitext
[[אַ]]
[[אַ]]
[[אַ]]
[[אַ]]
[[אַ]]
-!! result
+!! html
<p><a href="/wiki/%D7%90%D6%B7" title="אַ">אַ</a>
<a href="/wiki/%D7%90%D6%B7" title="אַ">אַ</a>
<a href="/wiki/%D7%90%D6%B7" title="אַ">אַ</a>
!! test
Empty attribute crash test (bug 2067)
-!! input
+!! wikitext
<font color="">foo</font>
-!! result
+!! html
<p><font color="">foo</font>
</p>
!! end
!! test
Empty attribute crash test single-quotes (bug 2067)
-!! input
+!! wikitext
<font color=''>foo</font>
-!! result
+!! html
<p><font color="">foo</font>
</p>
!! end
!! test
Attribute test: equals, then nothing
-!! input
+!! wikitext
<font color=>foo</font>
-!! result
+!! html
<p><font>foo</font>
</p>
!! end
!! test
Attribute test: unquoted value
-!! input
+!! wikitext
<font color=x>foo</font>
-!! result
+!! html
<p><font color="x">foo</font>
</p>
!! end
!! test
Attribute test: unquoted but illegal value (hash)
-!! input
+!! wikitext
<font color=#x>foo</font>
-!! result
+!! html
<p><font color="#x">foo</font>
</p>
!! end
!! test
Attribute test: no value
-!! input
+!! wikitext
<font color>foo</font>
-!! result
+!! html
<p><font color="color">foo</font>
</p>
!! end
!! test
Bug 2095: link with three closing brackets
-!! input
+!! wikitext
[[Main Page]]]
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>]
</p>
!! end
!! test
Bug 2095: link with pipe and three closing brackets
-!! input
+!! wikitext
[[Main Page|link]]]
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">link</a>]
</p>
!! end
!! test
Bug 2095: link with pipe and three closing brackets, version 2
-!! input
+!! wikitext
[[Main Page|[http://example.com/]]]
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">[http://example.com/]</a>
</p>
!! end
!! test
Bug 2304: HTML attribute safety (safe template; regression bug 2309)
-!! input
+!! wikitext
<div title="{{test}}"></div>
-!! result
+!! html
<div title="This is a test template"></div>
!! end
!! test
Bug 2304: HTML attribute safety (dangerous template; 2309)
-!! input
+!! wikitext
<div title="{{dangerous attribute}}"></div>
-!! result
+!! html
<div title=""></div>
!! end
!! test
Bug 2304: HTML attribute safety (dangerous style template; 2309)
-!! input
+!! wikitext
<div style="{{dangerous style attribute}}"></div>
-!! result
+!! html
<div style="/* insecure input */"></div>
!! end
!! test
Bug 2304: HTML attribute safety (safe parameter; 2309)
-!! input
+!! wikitext
{{div style|width: 200px}}
-!! result
+!! html
<div style="float: right; width: 200px">Magic div</div>
!! end
!! test
Bug 2304: HTML attribute safety (unsafe parameter; 2309)
-!! input
+!! wikitext
{{div style|width: expression(alert(document.cookie))}}
-!! result
+!! html
<div style="/* insecure input */">Magic div</div>
!! end
!! test
Bug 2304: HTML attribute safety (unsafe breakout parameter; 2309)
-!! input
+!! wikitext
{{div style|"><script>alert(document.cookie)</script>}}
-!! result
+!! html
<div style="float: right;"><script>alert(document.cookie)</script>">Magic div</div>
!! end
!! test
Bug 2304: HTML attribute safety (unsafe breakout parameter 2; 2309)
-!! input
+!! wikitext
{{div style|" ><script>alert(document.cookie)</script>}}
-!! result
+!! html
<div style="float: right;"><script>alert(document.cookie)</script>">Magic div</div>
!! end
!! test
Bug 2304: HTML attribute safety (link)
-!! input
+!! wikitext
<div title="[[Main Page]]"></div>
-!! result
+!! html
<div title="[[Main Page]]"></div>
!! end
!! test
Bug 2304: HTML attribute safety (italics)
-!! input
+!! wikitext
<div title="''foobar''"></div>
-!! result
+!! html
<div title="''foobar''"></div>
!! end
!! test
Bug 2304: HTML attribute safety (bold)
-!! input
+!! wikitext
<div title="'''foobar'''"></div>
-!! result
+!! html
<div title="'''foobar'''"></div>
!! end
!! test
Bug 2304: HTML attribute safety (ISBN)
-!! input
+!! wikitext
<div title="ISBN 1234567890"></div>
-!! result
+!! html
<div title="ISBN 1234567890"></div>
!! end
!! test
Bug 2304: HTML attribute safety (RFC)
-!! input
+!! wikitext
<div title="RFC 1234"></div>
-!! result
+!! html
<div title="RFC 1234"></div>
!! end
!! test
Bug 2304: HTML attribute safety (PMID)
-!! input
+!! wikitext
<div title="PMID 1234567890"></div>
-!! result
+!! html
<div title="PMID 1234567890"></div>
!! end
!! test
Bug 2304: HTML attribute safety (web link)
-!! input
+!! wikitext
<div title="http://example.com/"></div>
-!! result
+!! html
<div title="http://example.com/"></div>
!! end
!! test
Bug 2304: HTML attribute safety (named web link)
-!! input
+!! wikitext
<div title="[http://example.com/ link]"></div>
-!! result
+!! html
<div title="[http://example.com/ link]"></div>
!! end
!! test
Bug 3244: HTML attribute safety (extension; safe)
-!! input
+!! wikitext
<div style="<nowiki>background:blue</nowiki>"></div>
-!! result
+!! html
<div style="background:blue"></div>
!! end
!! test
Bug 3244: HTML attribute safety (extension; unsafe)
-!! input
+!! wikitext
<div style="<nowiki>border-left:expression(alert(document.cookie))</nowiki>"></div>
-!! result
+!! html
<div style="/* insecure input */"></div>
!! end
!! test
MSIE CSS safety test: spurious slash
-!! input
+!! wikitext
<div style="background-image:u\rl(javascript:alert('boo'))">evil</div>
-!! result
+!! html
<div style="/* insecure input */">evil</div>
!! end
!! test
MSIE CSS safety test: hex code
-!! input
+!! wikitext
<div style="background-image:u\72l(javascript:alert('boo'))">evil</div>
-!! result
+!! html
<div style="/* insecure input */">evil</div>
!! end
!! test
MSIE CSS safety test: comment in url
-!! input
+!! wikitext
<div style="background-image:u/**/rl(javascript:alert('boo'))">evil</div>
-!! result
+!! html
<div style="background-image:u rl(javascript:alert('boo'))">evil</div>
!! end
!! test
MSIE CSS safety test: comment in expression
-!! input
+!! wikitext
<div style="background-image:expres/**/sion(alert('boo4'))">evil4</div>
-!! result
+!! html
<div style="background-image:expres sion(alert('boo4'))">evil4</div>
!! end
!! test
CSS safety test (all browsers): vertical tab (bug 55332 / CVE-2013-4567)
-!! input
+!! wikitext
<p style="font-size: 100px; background-image:url\b(https://www.google.com/images/srpr/logo6w.png)">A</p>
-!! result
+!! html
<p style="/* invalid control char */">A</p>
!! end
!! test
MSIE 6 CSS safety test: Fullwidth (bug 55332)
-!! input
+!! wikitext
<p style="font-size: 100px; color: expression((title='XSSed'),'red')">A</p>
<div style="top:EXPRESSION(alert())">B</div>
-!! result
+!! html
<p style="/* insecure input */">A</p>
<div style="/* insecure input */">B</div>
!! test
MSIE 6 CSS safety test: IPA extensions (bug 55332)
-!! input
+!! wikitext
<div style="background-image:uʀʟ(javascript:alert())">A</div>
<p style="font-size: 100px; color: expʀessɪoɴ((title='XSSed'),'red')">B</p>
-!! result
+!! html
<div style="/* insecure input */">A</div>
<p style="/* insecure input */">B</p>
!! test
MSIE 6 CSS safety test: sup/sub script (bug 55332)
-!! input
+!! wikitext
<div style="background-image:url⁽javascript:alert())">A</div>
<div style="background-image:url₍javascript:alert())">B</div>
<p style="font-size: 100px; color: expressioⁿ((title='XSSed'),'red')">C</p>
-!! result
+!! html
<div style="/* insecure input */">A</div>
<div style="/* insecure input */">B</div>
<p style="/* insecure input */">C</p>
!! test
Opera -o-link CSS
-!! input
+!! wikitext
<div
title="data:text/html,<img src=1 onerror=alert(1)>"
style="-o-link:attr(title);-o-link-source:current">X</div>
-!! result
+!! html
<div title="data:text/html,<img src=1 onerror=alert(1)>" style="/* insecure input */">X</div>
!! end
!! test
MSIE 6 CSS safety test: Repetition markers (bug 55332)
-!! input
+!! wikitext
<p style="font-size: 100px; color: expres〱ion((title='XSSed'),'red')">A</p>
<p style="font-size: 100px; color: expresゝion((title='XSSed'),'red')">B</p>
<p style="font-size: 100px; color: expresーion((title='XSSed'),'red')">C</p>
<p style="font-size: 100px; color: expresﹽion((title='XSSed'),'red')">E</p>
<p style="font-size: 100px; color: expresﹼion((title='XSSed'),'red')">F</p>
<p style="font-size: 100px; color: expresーion((title='XSSed'),'red')">G</p>
-!! result
+!! html
<p style="/* insecure input */">A</p>
<p style="/* insecure input */">B</p>
<p style="/* insecure input */">C</p>
!! test
Table attribute legitimate extension
-!! input
+!! wikitext
{|
!+ style="<nowiki>color:blue</nowiki>"| status
|}
-!! result
+!! html
<table>
<tr>
<th style="color:blue"> status
!! test
Table attribute safety
-!! input
+!! wikitext
{|
!+ style="<nowiki>border-width:expression(0+alert(document.cookie))</nowiki>"| status
|}
-!! result
+!! html
<table>
<tr>
<th style="/* insecure input */"> status
!! test
CSS line continuation 1
-!! input
+!! wikitext
<div style="background-image: u\ rl(test.jpg);"></div>
-!! result
+!! html
<div style="/* insecure input */"></div>
!! end
!! test
CSS line continuation 2
-!! input
+!! wikitext
<div style="background-image: u\ rl(test.jpg); "></div>
-!! result
+!! html
<div style="/* insecure input */"></div>
!! end
!! test
Expansion of multi-line templates in attribute values (bug 6255)
-!! input
+!! wikitext
<div style="background: {{identity|#00FF00}}">-</div>
-!! result
+!! html
<div style="background: #00FF00">-</div>
!! end
!! test
Expansion of multi-line templates in attribute values (bug 6255 sanity check)
-!! input
+!! wikitext
<div style="background:
#00FF00">-</div>
-!! result
+!! html
<div style="background: #00FF00">-</div>
!! end
!! test
Expansion of multi-line templates in attribute values (bug 6255 sanity check 2)
-!! input
+!! wikitext
<div style="background: #00FF00">-</div>
-!! result
+!! html
<div style="background: #00FF00">-</div>
!! end
###
!! test
Parser hook: empty input
-!! input
+!! wikitext
<tag></tag>
-!! result
+!! html
<pre>
''
array (
!! test
Parser hook: empty input using terminated empty elements
-!! input
+!! wikitext
<tag/>
-!! result
+!! html
<pre>
NULL
array (
!! test
Parser hook: empty input using terminated empty elements (space before)
-!! input
+!! wikitext
<tag />
-!! result
+!! html
<pre>
NULL
array (
!! test
Parser hook: basic input
-!! input
+!! wikitext
<tag>input</tag>
-!! result
+!! html
<pre>
'input'
array (
!! test
Parser hook: case insensitive
-!! input
+!! wikitext
<TAG>input</TAG>
-!! result
+!! html
<pre>
'input'
array (
!! test
Parser hook: case insensitive, redux
-!! input
+!! wikitext
<TaG>input</TAg>
-!! result
+!! html
<pre>
'input'
array (
Parser hook: nested tags
!! options
noxml
-!! input
+!! wikitext
<tag><tag></tag></tag>
-!! result
+!! html
<pre>
'<tag>'
array (
!! test
Parser hook: basic arguments
-!! input
+!! wikitext
<tag width=200 height = "100" depth = '50' square></tag>
-!! result
+!! html
<pre>
''
array (
!! test
Parser hook: argument containing a forward slash (bug 5344)
-!! input
+!! wikitext
<tag filename='/tmp/bla'></tag>
-!! result
+!! html
<pre>
''
array (
!! test
Parser hook: empty input using terminated empty elements (bug 2374)
-!! input
+!! wikitext
<tag foo=bar/>text
-!! result
+!! html
<pre>
NULL
array (
# </tag> 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
+!! wikitext
<tag width=200 height = "100" depth = '50' square/>
other stuff
</tag>
-!! result
+!! html
<pre>
NULL
array (
!! test
Parser hook: static parser hook not inside a comment
-!! input
+!! wikitext
<statictag>hello, world</statictag>
<statictag action=flush/>
-!! result
+!! html
<p>hello, world
</p>
!! end
!! test
Parser hook: static parser hook inside a comment
-!! input
+!! wikitext
<!-- <statictag>hello, world</statictag> -->
<statictag action=flush/>
-!! result
+!! html
<p><br />
</p>
!! end
!! test
Nested template calls
-!! input
+!! wikitext
{{Map-one-parameter|One-parameter|param}}
-!! result
+!! html
<p>(My parameter is: param)
</p>
!! end
###
!! test
Sanitizer: Closing of open tags
-!! input
+!! wikitext
<s></s><table></table>
-!! result
+!! html
<s></s><table></table>
!! end
!! test
Sanitizer: Closing of open but not closed tags
-!! input
+!! wikitext
<s>foo
-!! result
+!! html
<p><s>foo</s>
</p>
!! end
!! test
Sanitizer: Closing of closed but not open tags
-!! input
+!! wikitext
</s>
-!! result
+!! html
<p></s>
</p>
!! end
!! test
Sanitizer: Closing of closed but not open table tags
-!! input
+!! wikitext
Table not started</td></tr></table>
-!! result
+!! html
<p>Table not started</td></tr></table>
</p>
!! end
!! test
Sanitizer: Escaping of spaces, multibyte characters, colons & other stuff in id=""
-!! input
+!! wikitext
<span id="æ: v">byte</span>[[#æ: v|backlink]]
-!! result
+!! html
<p><span id=".C3.A6:_v">byte</span><a href="#.C3.A6:_v">backlink</a>
</p>
!! end
Sanitizer: Validating the contents of the id attribute (bug 4515)
!! options
disabled
-!! input
+!! wikitext
<br id=9 />
-!! result
+!! html
Something, but definitely not <br id="9" />...
!! end
Sanitizer: Validating id attribute uniqueness (bug 4515, bug 6301)
!! options
disabled
-!! input
+!! wikitext
<br id="foo" /><br id="foo" />
-!! result
+!! html
Something need to be done. foo-2 ?
!! end
!! test
Sanitizer: Validating that <meta> and <link> work, but only for Microdata
-!! input
+!! wikitext
<div itemscope>
<meta itemprop="hello" content="world">
<meta http-equiv="refresh" content="5">
<link rel="stylesheet" href="{{SERVER}}">
<link rel="stylesheet" itemprop="hello" href="{{SERVER}}">
</div>
-!! result
+!! html
<div itemscope="itemscope">
<p> <meta itemprop="hello" content="world" />
<meta http-equiv="refresh" content="5">
Language converter: output gets cut off unexpectedly (bug 5757)
!! options
language=zh
-!! input
+!! wikitext
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
+!! html
<p>this bit is safe: }-
</p><p>but if we add a conversion instance: xxx
</p><p>then we get cut off here: }-
!! test
Self closed html pairs (bug 5487)
!! options
-!! input
+!! wikitext
<center><font id="bug" />Centered text</center>
<div><font id="bug2" />In div text</div>
-!! result
+!! html
<center><font id="bug" />Centered text</center>
<div><font id="bug2" />In div text</div>
!! test
Punctuation: nbsp before exclamation
-!! input
+!! wikitext
C'est grave !
-!! result
+!! html
<p>C'est grave !
</p>
!! end
!! test
Punctuation: CSS !important (bug 11874)
-!! input
+!! wikitext
<div style="width:50% !important">important</div>
-!! result
+!! html
<div style="width:50% !important">important</div>
!!end
!! test
Punctuation: CSS ! important (bug 11874; with space after)
-!! input
+!! wikitext
<div style="width:50% ! important">important</div>
-!! result
+!! html
<div style="width:50% ! important">important</div>
!!end
!! test
HTML bullet list, closed tags (bug 5497)
-!! input
+!! wikitext
<ul>
<li>One</li>
<li>Two</li>
</ul>
-!! result
+!! html
<ul>
<li>One</li>
<li>Two</li>
HTML bullet list, unclosed tags (bug 5497)
!! options
disabled
-!! input
+!! wikitext
<ul>
<li>One
<li>Two
</ul>
-!! result
+!! html
<ul>
<li>One
</li>
!! test
HTML ordered list, closed tags (bug 5497)
-!! input
+!! wikitext
<ol>
<li>One</li>
<li>Two</li>
</ol>
-!! result
+!! html
<ol>
<li>One</li>
<li>Two</li>
HTML ordered list, unclosed tags (bug 5497)
!! options
disabled
-!! input
+!! wikitext
<ol>
<li>One
<li>Two
</ol>
-!! result
+!! html
<ol>
<li>One
</li>
!! test
HTML nested bullet list, closed tags (bug 5497)
-!! input
+!! wikitext
<ul>
<li>One</li>
<li>Two:
</ul>
</li>
</ul>
-!! result
+!! html
<ul>
<li>One</li>
<li>Two:
HTML nested bullet list, open tags (bug 5497)
!! options
disabled
-!! input
+!! wikitext
<ul>
<li>One
<li>Two:
<li>Sub-two
</ul>
</ul>
-!! result
+!! html
<ul>
<li>One
</li>
!! test
HTML nested ordered list, closed tags (bug 5497)
-!! input
+!! wikitext
<ol>
<li>One</li>
<li>Two:
</ol>
</li>
</ol>
-!! result
+!! html
<ol>
<li>One</li>
<li>Two:
HTML nested ordered list, open tags (bug 5497)
!! options
disabled
-!! input
+!! wikitext
<ol>
<li>One
<li>Two:
<li>Sub-two
</ol>
</ol>
-!! result
+!! html
<ol>
<li>One
</li>
!! test
HTML ordered list item with parameters oddity
-!! input
+!! wikitext
<ol><li id="fragment">One</li>
</ol>
-!! result
+!! html
<ol><li id="fragment">One</li>
</ol>
!!test
bug 5918: autonumbering
-!! input
+!! wikitext
[http://first/] [http://second] [ftp://ftp]
ftp://inlineftp
[mailto:enclosed@mail.tld]
mailto:inline@mail.tld
-!! result
+!! html
<p><a rel="nofollow" class="external autonumber" href="http://first/">[1]</a> <a rel="nofollow" class="external autonumber" href="http://second">[2]</a> <a rel="nofollow" class="external autonumber" href="ftp://ftp">[3]</a>
</p><p><a rel="nofollow" class="external free" href="ftp://inlineftp">ftp://inlineftp</a>
</p><p><a rel="nofollow" class="external text" href="mailto:enclosed@mail.tld">With target</a>
!! test
Fuzz testing: Parser13
-!! input
+!! wikitext
{|
| http://a|
-!! result
+!! html
<table>
<tr>
<td>
!! test
Fuzz testing: Parser14
-!! input
+!! wikitext
== onmouseover= ==
http://__TOC__
-!! result
+!! html
<h2><span class="mw-headline" id="onmouseover.3D">onmouseover=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: onmouseover=">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
http://<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
!! test
Fuzz testing: Parser14-table
-!! input
+!! wikitext
==a==
{| STYLE=__TOC__
-!! result
+!! html
<h2><span class="mw-headline" id="a">a</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: a">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<table style="__TOC__">
<tr><td></td></tr>
Fuzz testing: Parser16
!! options
noxml
-!! input
+!! wikitext
{|
!https://||||||
-!! result
+!! html
<table>
<tr>
<th>https://</th>
!! test
Fuzz testing: Parser21
-!! input
+!! wikitext
{|
! irc://{{ftp://a" onmouseover="alert('hello world');"
|
-!! result
+!! html
<table>
<tr>
<th> <a rel="nofollow" class="external free" href="irc://{{ftp://a">irc://{{ftp://a</a>" onmouseover="alert('hello world');"
!! test
Fuzz testing: Parser22
-!! input
+!! wikitext
http://===r:::https://b
{|
-!!result
+!! html
<p><a rel="nofollow" class="external free" href="http://===r:::https://b">http://===r:::https://b</a>
</p>
<table>
Fuzz testing: Parser24
!! options
noxml
-!! input
+!! wikitext
{|
{{{|
<u CLASS=
MOVE YOUR MOUSE CURSOR OVER THIS TEXT
|
-!! result
+!! html
<table>
{{{|
<u class="|">}}}} >
# }}}blah" onmouseover="alert('hello world');" align="left"<b>MOVE MOUSE CURSOR OVER HERE</b>
!!test
Fuzz testing: Parser25 (bug 6055)
-!! input
+!! wikitext
{{{
|
<LI CLASS=||
>
}}}blah" onmouseover="alert('hello world');" align="left"'''MOVE MOUSE CURSOR OVER HERE
-!! result
+!! html
<p><LI CLASS=blah" onmouseover="alert('hello world');" align="left"<b>MOVE MOUSE CURSOR OVER HERE</b>
</p>
!! end
!!test
Fuzz testing: URL adjacent extension (with space, clean)
!! options
-!! input
+!! wikitext
http://example.com <nowiki>junk</nowiki>
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> junk
</p>
!!end
!!test
Fuzz testing: URL adjacent extension (no space, dirty; nowiki)
!! options
-!! input
+!! wikitext
http://example.com<nowiki>junk</nowiki>
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>junk
</p>
!!end
!!test
Fuzz testing: URL adjacent extension (no space, dirty; pre)
!! options
-!! input
+!! wikitext
http://example.com<pre>junk</pre>
-!! result
+!! html
<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a><pre>junk</pre>
!!end
!!test
Fuzz testing: image with bogus manual thumbnail
-!!input
+!! wikitext
[[Image:foobar.jpg|thumbnail= ]]
-!!result
+!! html
<div class="thumb tright"><div class="thumbinner" style="width:182px;">Error creating thumbnail: <div class="thumbcaption"></div></div></div>
!!end
!! test
Fuzz testing: encoded newline in generated HTML replacements (bug 6577)
-!! input
+!! wikitext
<pre dir=" "></pre>
-!! result
+!! html
<pre dir=" "></pre>
!! end
!! test
Parsing optional HTML elements (Bug 6171)
!! options
-!! input
+!! wikitext
<table>
<tr>
<td> Some tabular data</td>
<td> And yet som tabular data</td>
</tr>
</table>
-!! result
+!! html
<table>
<tr>
<td> Some tabular data</td>
!! test
Correct handling of <td>, <tr> (Bug 6171)
!! options
-!! input
+!! wikitext
<table>
<tr>
<td> Some tabular data</td>
<td> And yet som tabular data</td>
</tr>
</table>
-!! result
+!! html
<table>
<tr>
<td> Some tabular data</td>
!! test
Parsing crashing regression (fr:JavaScript)
-!! input
+!! wikitext
</body></x>
-!! result
+!! html
<p></body></x>
</p>
!! end
!! test
Inline wiki vs wiki block nesting
-!! input
+!! wikitext
'''Bold paragraph
New wiki paragraph
-!! result
+!! html
<p><b>Bold paragraph</b>
</p><p>New wiki paragraph
</p>
Inline HTML vs wiki block nesting
!! options
disabled
-!! input
+!! wikitext
<b>Bold paragraph
New wiki paragraph
-!! result
+!! html
<p><b>Bold paragraph</b>
</p><p>New wiki paragraph
</p>
!!test
Mixing markup for italics and bold
!! options
-!! input
+!! wikitext
'''bold''''''bold''bolditalics'''''
-!! result
+!! html
<p>'<i>bold'</i><b>bold<i>bolditalics</i></b>
</p>
!! end
!! test
Special page transclusion
!! options
-!! input
+!! wikitext
{{Special:Prefixindex/Xyzzyx}}
-!! result
+!! html
<table class="mw-prefixindex-list-table"><tr><td><a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a></td></tr></table>
!! end
!! test
Special page transclusion twice (bug 5021)
!! options
-!! input
+!! wikitext
{{Special:Prefixindex/Xyzzyx}}
{{Special:Prefixindex/Xyzzyx}}
-!! result
+!! html
<table class="mw-prefixindex-list-table"><tr><td><a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a></td></tr></table>
<table class="mw-prefixindex-list-table"><tr><td><a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a></td></tr></table>
!! test
Transclusion of default MediaWiki message
-!! input
+!! wikitext
{{MediaWiki:Mainpage}}
-!!result
+!! html
<p>Main Page
</p>
!! end
!! test
Transclusion of nonexistent MediaWiki message
-!! input
+!! wikitext
{{MediaWiki:Mainpagexxx}}
-!!result
+!! html
<p><a href="/index.php?title=MediaWiki:Mainpagexxx&action=edit&redlink=1" class="new" title="MediaWiki:Mainpagexxx (page does not exist)">MediaWiki:Mainpagexxx</a>
</p>
!! end
!! test
Transclusion of MediaWiki message with underscore
-!! input
+!! wikitext
{{MediaWiki:history_short}}
-!! result
+!! html
<p>History
</p>
!! end
!! test
Transclusion of MediaWiki message with space
-!! input
+!! wikitext
{{MediaWiki:history short}}
-!! result
+!! html
<p>History
</p>
!! end
!! test
Invalid header with following text
-!! input
+!! wikitext
= x = y
-!! result
+!! html
<p>= x = y
</p>
!! end
Section extraction test (section 0)
!! options
section=0
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
start
!! end
Section extraction test (section 1)
!! options
section=1
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
==a==
===aa===
====aaa====
Section extraction test (section 2)
!! options
section=2
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
===aa===
====aaa====
!! end
Section extraction test (section 3)
!! options
section=3
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
====aaa====
!! end
Section extraction test (section 4)
!! options
section=4
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
==b==
===ba===
===bb===
Section extraction test (section 5)
!! options
section=5
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
===ba===
!! end
Section extraction test (section 6)
!! options
section=6
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
===bb===
====bba====
!! end
Section extraction test (section 7)
!! options
section=7
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
====bba====
!! end
Section extraction test (section 8)
!! options
section=8
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
===bc===
!! end
Section extraction test (section 9)
!! options
section=9
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
==c==
===ca===
!! end
Section extraction test (section 10)
!! options
section=10
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
===ca===
!! end
Section extraction test (nonexistent section 11)
!! options
section=11
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
!! end
!! test
Section extraction test with bogus heading (section 1)
!! options
section=1
-!! input
+!! wikitext
==a==
==bogus== not a legal section
==b==
-!! result
+!! html
==a==
==bogus== not a legal section
!! end
Section extraction test with bogus heading (section 2)
!! options
section=2
-!! input
+!! wikitext
==a==
==bogus== not a legal section
==b==
-!! result
+!! html
==b==
!! end
Section extraction test with comment after heading (section 1)
!! options
section=1
-!! input
+!! wikitext
==a==
==b== <!-- -->
==c==
-!! result
+!! html
==a==
!! end
Section extraction test with comment after heading (section 2)
!! options
section=2
-!! input
+!! wikitext
==a==
==b== <!-- -->
==c==
-!! result
+!! html
==b== <!-- -->
!! end
Section extraction test with bogus <nowiki> heading (section 1)
!! options
section=1
-!! input
+!! wikitext
==a==
==bogus== <nowiki>not a legal section</nowiki>
==b==
-!! result
+!! html
==a==
==bogus== <nowiki>not a legal section</nowiki>
!! end
Section extraction test with bogus <nowiki> heading (section 2)
!! options
section=2
-!! input
+!! wikitext
==a==
==bogus== <nowiki>not a legal section</nowiki>
==b==
-!! result
+!! html
==b==
!! end
Section extraction prefixed by comment (section 1)
!! options
section=1
-!! input
+!! wikitext
<!-- -->==sec1==
==sec2==
-!!result
+!! html
==sec2==
!!end
Section extraction prefixed by comment (section 2)
!! options
section=2
-!! input
+!! wikitext
<!-- -->==sec1==
==sec2==
-!!result
+!! html
!!end
Section extraction, mixed wiki and html (section 1)
!! options
section=1
-!! input
+!! wikitext
<h2>unmarked</h2>
unmarked
==1==
one
==2==
two
-!! result
+!! html
==1==
one
!! end
Section extraction, mixed wiki and html (section 2)
!! options
section=2
-!! input
+!! wikitext
<h2>unmarked</h2>
unmarked
==1==
one
==2==
two
-!! result
+!! html
==2==
two
!! end
Section extraction, heading surrounded by <noinclude>
!! options
section=1
-!! input
+!! wikitext
<noinclude>==unmarked==</noinclude>
==marked==
-!! result
+!! html
==marked==
!!end
Sectiion with all-equals
!! options
section=2
-!! input
+!! wikitext
===
The line above must have a trailing space
=== <!--
--> <!-- -->
But just in case it doesn't...
-!! result
+!! html
=== <!--
--> <!-- -->
But just in case it doesn't...
Section replacement test (section 0)
!! options
replace=0,"xxx"
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
xxx
==a==
Section replacement test (section 1)
!! options
replace=1,"xxx"
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
start
xxx
Section replacement test (section 2)
!! options
replace=2,"xxx"
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
start
==a==
xxx
Section replacement test (section 3)
!! options
replace=3,"xxx"
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
start
==a==
===aa===
Section replacement test (section 4)
!! options
replace=4,"xxx"
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
start
==a==
===aa===
Section replacement test (section 5)
!! options
replace=5,"xxx"
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
start
==a==
===aa===
Section replacement test (section 6)
!! options
replace=6,"xxx"
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
start
==a==
===aa===
Section replacement test (section 7)
!! options
replace=7,"xxx"
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
start
==a==
===aa===
Section replacement test (section 8)
!! options
replace=8,"xxx"
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
start
==a==
===aa===
Section replacement test (section 9)
!! options
replace=9,"xxx"
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
start
==a==
===aa===
Section replacement test (section 10)
!! options
replace=10,"xxx"
-!! input
+!! wikitext
start
==a==
===aa===
===bc===
==c==
===ca===
-!! result
+!! html
start
==a==
===aa===
Section replacement test with initial whitespace (bug 13728)
!! options
replace=2,"xxx"
-!! input
+!! wikitext
Preformatted initial line
==a==
===a===
-!! result
+!! html
Preformatted initial line
==a==
xxx
Section extraction, heading followed by pre with 20 spaces (bug 6398)
!! options
section=1
-!! input
+!! wikitext
==a==
a
-!! result
+!! html
==a==
a
!! end
Section extraction, heading followed by pre with 19 spaces (bug 6398 sanity check)
!! options
section=1
-!! input
+!! wikitext
==a==
a
-!! result
+!! html
==a==
a
!! end
Section extraction, <pre> around bogus header (bug 10309)
!! options
noxml section=2
-!! input
+!! wikitext
== Section One ==
<pre>
=======
== Section Two ==
stuff
-!! result
+!! html
== Section Two ==
stuff
!! end
Section replacement, <pre> around bogus header (bug 10309)
!! options
noxml replace=2,"xxx"
-!! input
+!! wikitext
== Section One ==
<pre>
=======
== Section Two ==
stuff
-!! result
+!! html
== Section One ==
<pre>
=======
!! test
Handling of 
 in URLs
-!! input
+!! wikitext
**irc://
a
-!! result
+!! html
<ul>
<li><ul>
<li><a rel="nofollow" class="external free" href="irc://%0Aa">irc://%0Aa</a>
!!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
+5 quotes, code coverage +1 line
+!! wikitext
'''''
-!! result
+!! html/php
+!! html/parsoid
<p><b><i></i></b></p>
!! end
!! test
Special:Search page linking.
-!! input
+!! wikitext
{{Special:search}}
-!! result
+!! html
<p><a href="/wiki/Special:Search" title="Special:Search">Special:Search</a>
</p>
!! end
Say the magic word
!! options
title=[[Parser test]]
-!! input
+!! wikitext
* {{PAGENAME}}
* {{PAGENAMEE}}
* {{FULLPAGENAME}}
* {{SUBJECTSPACE}}
* {{SUBJECTSPACEE}}
* {{Dynamic|{{NUMBEROFUSERS}}|{{NUMBEROFPAGES}}|{{CURRENTVERSION}}|{{CONTENTLANGUAGE}}|{{DIRECTIONMARK}}|{{CURRENTTIMESTAMP}}|{{NUMBEROFARTICLES}}}}
-!! result
+!! html
<ul>
<li> Parser test
</li>
!! test
Gallery
-!! input
+!! wikitext
<gallery>
image1.png |
image2.gif|||||
[[x|xx]]]]
* image6
</gallery>
-!! result
+!! html
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
<div class="thumb" style="height: 150px;">Image1.png</div>
!! test
Gallery (with options)
-!! input
+!! wikitext
<gallery widths='70px' heights='40px' perrow='2' caption='Foo [[Main Page]]' >
File:Nonexistant.jpg|caption
File:Nonexistant.jpg
image:foobar.jpg
image:foobar.jpg|Blabla|alt=This is a foo-bar.|blabla.
</gallery>
-!! result
+!! html
<ul class="gallery mw-gallery-traditional" style="max-width: 226px;_width: 226px;">
<li class='gallerycaption'>Foo <a href="/wiki/Main_Page" title="Main Page">Main Page</a></li>
<li class="gallerybox" style="width: 105px"><div style="width: 105px">
!! test
Gallery with wikitext inside caption
-!! input
+!! wikitext
<gallery>
File:foobar.jpg|[[File:foobar.jpg|20px|desc|alt=inneralt]]|alt=galleryalt
File:foobar.jpg|{{Test|unamedParam|alt=param}}|alt=galleryalt
</gallery>
-!! result
+!! html
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
<div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" /></a></div></div>
!! test
gallery (with showfilename option)
-!! input
+!! wikitext
<gallery showfilename>
File:Nonexistant.jpg|caption
File:Nonexistant.jpg
image:foobar.jpg|some '''caption''' [[Main Page]]
File:Foobar.jpg
</gallery>
-!! result
+!! html
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
<div class="thumb" style="height: 150px;">Nonexistant.jpg</div>
!! test
Gallery (with namespace-less filenames)
-!! input
+!! wikitext
<gallery>
File:Nonexistant.jpg
Nonexistant.jpg
image:foobar.jpg
foobar.jpg
</gallery>
-!! result
+!! html
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
<div class="thumb" style="height: 150px;">Nonexistant.jpg</div>
!! test
HTML Hex character encoding (spells the word "JavaScript")
-!! input
+!! wikitext
JavaScript
-!! result
+!! html
<p>JavaScript
</p>
!! end
!! test
HTML Hex character encoding bogus encoding (bug 26437 regression check)
-!! input
+!! wikitext
&#xsee;&#XSEE;
-!! result
+!! html
<p>&#xsee;&#XSEE;
</p>
!! end
!! test
HTML Hex character encoding mixed case
-!! input
+!! wikitext
îî
-!! result
+!! html
<p>îî
</p>
!! end
!! test
__FORCETOC__ override
-!! input
+!! wikitext
__NEWSECTIONLINK__
__FORCETOC__
-!! result
+!! html
<p><br />
</p>
!! end
!! test
ISBN code coverage
-!! input
+!! wikitext
ISBN 978-0-1234-56 789
-!! result
+!! html
<p><a href="/wiki/Special:BookSources/9780123456" class="internal mw-magiclink-isbn">ISBN 978-0-1234-56</a> 789
</p>
!! end
!! test
ISBN followed by 5 spaces
-!! input
+!! wikitext
ISBN
-!! result
+!! html
<p>ISBN
</p>
!! end
!! test
Double ISBN
-!! input
+!! wikitext
ISBN ISBN 1234567890
-!! result
+!! html
<p>ISBN <a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1234567890</a>
</p>
!! end
!! test
ISBN with an X
-!! input
+!! wikitext
ISBN 3-462-04561-X
-!! result
+!! html
<p><a href="/wiki/Special:BookSources/346204561X" class="internal mw-magiclink-isbn">ISBN 3-462-04561-X</a>
</p>
!! end
!! test
Bug 22905: <abbr> followed by ISBN followed by </a>
-!! input
+!! wikitext
<abbr>(fr)</abbr> ISBN 2753300917 [http://www.example.com example.com]
-!! result
+!! html
<p><abbr>(fr)</abbr> <a href="/wiki/Special:BookSources/2753300917" class="internal mw-magiclink-isbn">ISBN 2753300917</a> <a rel="nofollow" class="external text" href="http://www.example.com">example.com</a>
</p>
!! end
!! test
Double RFC
-!! input
+!! wikitext
RFC RFC 1234
-!! result
+!! html
<p>RFC <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc1234">RFC 1234</a>
</p>
!! end
!! test
Double RFC with a wiki link
-!! input
+!! wikitext
RFC [[RFC 1234]]
-!! result
+!! html
<p>RFC <a href="/index.php?title=RFC_1234&action=edit&redlink=1" class="new" title="RFC 1234 (page does not exist)">RFC 1234</a>
</p>
!! end
!! test
RFC code coverage
-!! input
+!! wikitext
RFC 983 987
-!! result
+!! html
<p><a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc983">RFC 983</a> 987
</p>
!! end
!! test
Centre-aligned image
-!! input
+!! wikitext
[[Image:foobar.jpg|centre]]
-!! result
+!! html
<div class="center"><div class="floatnone"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div></div>
!!end
!! test
None-aligned image
-!! input
+!! wikitext
[[Image:foobar.jpg|none]]
-!! result
+!! html
<div class="floatnone"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
!!end
!! test
Width + Height sized image (using px) (height is ignored)
-!! input
+!! wikitext
[[Image:foobar.jpg|640x480px]]
-!! result
+!! html
<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
</p>
!!end
!! test
Width-sized image (using px, no following whitespace)
-!! input
+!! wikitext
[[Image:foobar.jpg|640px]]
-!! result
+!! html
<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
</p>
!!end
!! test
Width-sized image (using px, with following whitespace - test regression from r39467)
-!! input
+!! wikitext
[[Image:foobar.jpg|640px ]]
-!! result
+!! html
<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
</p>
!!end
!! test
Width-sized image (using px, with preceding whitespace - test regression from r39467)
-!! input
+!! wikitext
[[Image:foobar.jpg| 640px]]
-!! result
+!! html
<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
</p>
!!end
!! test
Another italics / bold test
-!! input
+!! wikitext
''' ''x'
-!! result
+!! html
<pre>'<i> </i>x'
</pre>
!!end
dt/dd/dl test
!! options
disabled
-!! input
+!! wikitext
:;;;::
-!! result
+!! html
<dl>
<dd><dl>
<dt><dl>
# Images with the "|" character in external URLs in comment tags; Eats half the comment, leaves unmatched "</a>" tag.
!! test
Images with the "|" character in the comment
-!! input
+!! wikitext
[[image:Foobar.jpg|thumb|An [http://test/?param1=|left|¶m2=|x external] URL]]
-!! result
+!! html
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>An <a rel="nofollow" class="external text" href="http://test/?param1=%7Cleft%7C&param2=%7Cx">external</a> URL</div></div></div>
!!end
!! test
[Before] HTML without raw HTML enabled ($wgRawHtml==false)
-!! input
+!! wikitext
<html><script>alert(1);</script></html>
-!! result
+!! html
<p><html><script>alert(1);</script></html>
</p>
!! end
HTML with raw HTML ($wgRawHtml==true)
!! options
wgRawHtml=1
-!! input
+!! wikitext
<html><script>alert(1);</script></html>
-!! result
+!! html
<p><script>alert(1);</script>
</p>
!! end
Parents of subpages, one level up
!! options
subpage title=[[Subpage test/L1/L2/L3]]
-!! input
+!! wikitext
[[../|L2]]
-!! result
+!! html
<p><a href="/index.php?title=Subpage_test/L1/L2&action=edit&redlink=1" class="new" title="Subpage test/L1/L2 (page does not exist)">L2</a>
</p>
!! end
Parents of subpages, one level up, not named
!! options
subpage title=[[Subpage test/L1/L2/L3]]
-!! input
+!! wikitext
[[../]]
-!! result
+!! html
<p><a href="/index.php?title=Subpage_test/L1/L2&action=edit&redlink=1" class="new" title="Subpage test/L1/L2 (page does not exist)">Subpage test/L1/L2</a>
</p>
!! end
Parents of subpages, two levels up
!! options
subpage title=[[Subpage test/L1/L2/L3]]
-!! input
+!! wikitext
[[../../|L1]]2
[[../../|L1]]l
-!! result
+!! html
<p><a href="/index.php?title=Subpage_test/L1&action=edit&redlink=1" class="new" title="Subpage test/L1 (page does not exist)">L1</a>2
</p><p><a href="/index.php?title=Subpage_test/L1&action=edit&redlink=1" class="new" title="Subpage test/L1 (page does not exist)">L1l</a>
</p>
Parents of subpages, two levels up, without trailing slash or name.
!! options
subpage title=[[Subpage test/L1/L2/L3]]
-!! input
+!! wikitext
[[../..]]
-!! result
+!! html
<p>[[../..]]
</p>
!! end
Parents of subpages, two levels up, with lots of extra trailing slashes.
!! options
subpage title=[[Subpage test/L1/L2/L3]]
-!! input
+!! wikitext
[[../../////]]
-!! result
+!! html
<p><a href="/index.php?title=Subpage_test/L1////&action=edit&redlink=1" class="new" title="Subpage test/L1//// (page does not exist)">///</a>
</p>
!! end
Transclusion of a sibling page (one level up)
!! options
subpage title=[[Subpage test/L1/L2/L3]]
-!! input
+!! wikitext
{{../L3Sibling}}
-!! result
+!! html
<p>Sibling article
</p>
!! end
Transclusion of a child page
!! options
subpage title=[[Subpage test/L1/L2]]
-!! input
+!! wikitext
{{/L3Sibling}}
-!! result
+!! html
<p>Sibling article
</p>
!! end
Non-transclusion because of too many up levels
!! options
subpage title=[[Subpage test/L1/L2/L3]]
-!! input
+!! wikitext
{{../../../../More than parent}}
-!! result
+!! html
<p>{{../../../../More than parent}}
</p>
!! end
!! test
Definition list code coverage
-!! input
+!! wikitext
; title : def
; title : def
;title: def
-!! result
+!! html
<dl>
<dt> title  </dt>
<dd> def
!! test
Don't fall for the self-closing div
-!! input
+!! wikitext
<div>hello world</div/>
-!! result
+!! html
<div>hello world</div>
!! end
!! test
MSGNW magic word
-!! input
+!! wikitext
{{MSGNW:msg}}
-!! result
+!! html
<p>[[:Template:Msg]]
</p>
!! end
!! test
RAW magic word
-!! input
+!! wikitext
{{RAW:QUERTY}}
-!! result
+!! html
<p><a href="/index.php?title=Template:QUERTY&action=edit&redlink=1" class="new" title="Template:QUERTY (page does not exist)">Template:QUERTY</a>
</p>
!! 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
+!! wikitext
><>
-!! result
+!! html
<p>><>
</p>
!! end
!! test
Template caching
-!! input
+!! wikitext
{{Test}}
{{Test}}
-!! result
+!! html
<p>This is a test template
This is a test template
</p>
!! test
Inclusion of !userCanEdit() content
-!! input
+!! wikitext
{{MediaWiki:Fake}}
-!! result
+!! html
<h2><span class="mw-headline" id="header">header</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=MediaWiki:Fake&action=edit&section=T-1" title="MediaWiki:Fake">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
!! end
!! test
Out-of-order TOC heading levels
-!! input
+!! wikitext
==2==
======6======
===3===
=1=
=====5=====
==2==
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#2"><span class="tocnumber">1</span> <span class="toctext">2</span></a>
!! test
ISBN with a dummy number
-!! input
+!! wikitext
ISBN ---
-!! result
+!! html
<p>ISBN ---
</p>
!! end
!! test
ISBN with space-delimited number
-!! input
+!! wikitext
ISBN 92 9017 032 8
-!! result
+!! html
<p><a href="/wiki/Special:BookSources/9290170328" class="internal mw-magiclink-isbn">ISBN 92 9017 032 8</a>
</p>
!! end
!! test
ISBN with multiple spaces, no number
-!! input
+!! wikitext
ISBN foo
-!! result
+!! html
<p>ISBN foo
</p>
!! end
!! test
ISBN length
-!! input
+!! wikitext
ISBN 123456789
ISBN 1234567890
ISBN 12345678901
-!! result
+!! html
<p>ISBN 123456789
</p><p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1234567890</a>
</p><p>ISBN 12345678901
!! test
ISBN with trailing year (bug 8110)
-!! input
+!! wikitext
ISBN 1-234-56789-0 - 2006
ISBN 1 234 56789 0 - 2006
-!! result
+!! html
<p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1-234-56789-0</a> - 2006
</p><p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1 234 56789 0</a> - 2006
</p>
!! test
anchorencode
-!! input
+!! wikitext
{{anchorencode:foo bar©#%n}}
-!! result
+!! html
<p>foo_bar.C2.A9.23.25n
</p>
!! end
!! test
anchorencode trims spaces
-!! input
+!! wikitext
{{anchorencode: __pretty__please__}}
-!! result
+!! html
<p>pretty_please
</p>
!! end
!! test
anchorencode deals with links
-!! input
+!! wikitext
{{anchorencode: [[hello|world]] [[hi]]}}
-!! result
+!! html
<p>world_hi
</p>
!! end
!! test
anchorencode deals with templates
-!! input
+!! wikitext
{{anchorencode: {{Foo}} }}
-!! result
+!! html
<p>FOO
</p>
!! end
!! test
anchorencode encodes like the TOC generator: (bug 18431)
-!! input
+!! wikitext
=== _ +:.3A%3A&&]] ===
{{anchorencode: _ +:.3A%3A&&]] }}
__NOEDITSECTION__
-!! result
+!! html
<h3><span class="mw-headline" id=".2B:.3A.253A.26.26.5D.5D">_ +:.3A%3A&&]]</span></h3>
<p>.2B:.3A.253A.26.26.5D.5D
</p>
!! test
Bug 6200: blockquotes and paragraph formatting
-!! input
+!! wikitext
<blockquote>
foo
</blockquote>
bar
baz
-!! result
+!! html
<blockquote>
<p>foo
</p>
!! test
Bug 8293: Use of center tag ruins paragraph formatting
-!! input
+!! wikitext
<center>
foo
</center>
bar
baz
-!! result
+!! html
<center>
<p>foo
</p>
!! end
!!test
-Parsing of overlapping (improperly nested) inline html tags (PHP parser)
-!!options
-php
-!!input
+Parsing of overlapping (improperly nested) inline html tags
+!! wikitext
<span><s>x</span></s>
-!!result
+!! html/php
<p><span><s>x</span></s></span>
</p>
-!!end
-
-!!test
-Parsing of overlapping (improperly nested) inline html tags (Parsoid)
-!!options
-parsoid
-!!input
-<span><s>x</span></s>
-!!result
-<p><span><s>x</s></span><s></s>
+!! html/parsoid
+<p><span><s>x</s></span>
</p>
!!end
Self-link in language variants
!! options
title=[[Dunav]] language=sr
-!! input
+!! wikitext
Both [[Dunav]] and [[Дунав]] are names for this river.
-!! result
+!! html
<p>Both <strong class="selflink">Dunav</strong> and <strong class="selflink">Дунав</strong> are names for this river.
</p>
!!end
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
+!! wikitext
[[Дуна]] is not a self-link while [[Duna]] and [[Dуна]] are still self-links.
-!! result
+!! html
<p><a href="/wiki/%D0%94%D1%83%D0%BD%D0%B0" title="Дуна">Дуна</a> is not a self-link while <strong class="selflink">Duna</strong> and <strong class="selflink">Dуна</strong> are still self-links.
</p>
!! end
Link to a section of a variant of this title shouldn't be parsed as self-link
!! options
title=[[Duna]] language=sr
-!! input
+!! wikitext
[[Dуна]] is a self-link while [[Dunа#Foo]] and [[Dуна#Foo]] are not self-links.
-!! result
+!! html
<p><strong class="selflink">Dуна</strong> is a self-link while <a href="/wiki/%D0%94%D1%83%D0%BD%D0%B0" title="Дуна">Dunа#Foo</a> and <a href="/wiki/%D0%94%D1%83%D0%BD%D0%B0" title="Дуна">Dуна#Foo</a> are not self-links.
</p>
!! end
Link to pages in language variants
!! options
language=sr
-!! input
+!! wikitext
Main Page can be written as [[Маин Паге]]
-!! result
+!! html
<p>Main Page can be written as <a href="/wiki/Main_Page" title="Main Page">Маин Паге</a>
</p>
!!end
Multiple links to pages in language variants
!! options
language=sr
-!! input
+!! wikitext
[[Main Page]] can be written as [[Маин Паге]] same as [[Маин Паге]].
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">Main Page</a> can be written as <a href="/wiki/Main_Page" title="Main Page">Маин Паге</a> same as <a href="/wiki/Main_Page" title="Main Page">Маин Паге</a>.
</p>
!!end
Simple template in language variants
!! options
language=sr
-!! input
+!! wikitext
{{тест}}
-!! result
+!! html
<p>This is a test template
</p>
!! end
Template with explicit namespace in language variants
!! options
language=sr
-!! input
+!! wikitext
{{Template:тест}}
-!! result
+!! html
<p>This is a test template
</p>
!! end
Basic test for template parameter in language variants
!! options
language=sr
-!! input
+!! wikitext
{{парамтест|param=foo}}
-!! result
+!! html
<p>This is a test template with parameter foo
</p>
!! end
Simple category in language variants
!! options
language=sr cat
-!! input
+!! wikitext
[[Category:МедиаWики Усер'с Гуиде]]
-!! result
+!! html
<a href="/wiki/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%98%D0%B0:MediaWiki_User%27s_Guide" title="Категорија:MediaWiki User's Guide">MediaWiki User's Guide</a>
!! end
Don't convert blue categorylinks to another variant (bug 33210)
!! options
language=zh cat
-!! input
+!! wikitext
[[A]][[Category:分类]]
-!! result
+!! html
<a href="/wiki/Category:%E5%88%86%E7%B1%BB" title="Category:分类">分类</a>
!! end
Stripping -{}- tags (language variants)
!! options
language=sr
-!! input
+!! wikitext
Latin proverb: -{Ne nuntium necare}-
-!! result
+!! html
<p>Latin proverb: Ne nuntium necare
</p>
!! end
Prevent conversion with -{}- tags (language variants)
!! options
language=sr variant=sr-ec
-!! input
+!! wikitext
Latinski: -{Ne nuntium necare}-
-!! result
+!! html
<p>Латински: Ne nuntium necare
</p>
!! end
Prevent conversion of text with -{}- tags (language variants)
!! options
language=sr variant=sr-ec
-!! input
+!! wikitext
Latinski: -{Ne nuntium necare}-
-!! result
+!! html
<p>Латински: Ne nuntium necare
</p>
!! end
Prevent conversion of links with -{}- tags (language variants)
!! options
language=sr variant=sr-ec
-!! input
+!! wikitext
-{[[Main Page]]}-
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
</p>
!! end
-{}- tags within headlines (within html for parserConvert())
!! options
language=sr variant=sr-ec
-!! input
+!! wikitext
== -{Naslov}- ==
-!! result
+!! html
<h2><span class="mw-headline" id="-.7BNaslov.7D-">Naslov</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Уредите одељак „Naslov“">уреди</a><span class="mw-editsection-bracket">]</span></span></h2>
!! end
Explicit definition of language variant alternatives
!! options
language=zh variant=zh-tw
-!! input
+!! wikitext
-{zh:China;zh-tw:Taiwan}-, not China
-!! result
+!! html
<p>Taiwan, not China
</p>
!! end
Conversion around HTML tags
!! options
language=sr variant=sr-ec
-!! input
+!! wikitext
-{H|span=>sr-ec:script;title=>sr-ec:src;}-
<span title="La-{sr-el:L;sr-ec:C;}-tin">ski</span>
-!! result
+!! html
<p>
<span title="ЛаCтин">ски</span>
</p>
Explicit session-wise language variant mapping (A flag and - flag)
!! options
language=zh variant=zh-tw
-!! input
+!! wikitext
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
+!! html
<p>Taiwan is not China.
But Taiwan is Taiwan,
(This should be stripped!)
Explicit session-wise language variant mapping (H flag for hide)
!! options
language=zh variant=zh-tw
-!! input
+!! wikitext
(This-{H|zh:China;zh-tw:Taiwan}- should be stripped!)
Taiwan is China.
-!! result
+!! html
<p>(This should be stripped!)
Taiwan is Taiwan.
</p>
Adding explicit conversion rule for title (T flag)
!! options
language=zh variant=zh-tw showtitle
-!! input
+!! wikitext
Should be stripped-{T|zh:China;zh-tw:Taiwan}-!
-!! result
+!! html
Taiwan
<p>Should be stripped!
</p>
Testing that changing the language variant here in the tests actually works
!! options
language=zh variant=zh showtitle
-!! input
+!! wikitext
Should be stripped-{T|zh:China;zh-tw:Taiwan}-!
-!! result
+!! html
China
<p>Should be stripped!
</p>
Recursive conversion of alt and title attrs shouldn't clear converter state
!! options
language=zh variant=zh-cn showtitle
-!! input
+!! wikitext
-{H|zh-cn:Exclamation;zh-tw:exclamation;}-
Should be stripped-{T|zh-cn:China;zh-tw:Taiwan}-<span title="exclamation">!</span>
-!! result
+!! html
China
<p>
Should be stripped<span title="Exclamation">!</span>
Bug 24072: more test on conversion rule for title
!! options
language=zh variant=zh-tw showtitle
-!! input
+!! wikitext
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
+!! html
Taiwan
<p>This should be stripped!
This won't take interferes with the title rule.
Partly disable title conversion if variant == main language code
!! options
language=zh variant=zh title=[[ZH]] showtitle
-!! input
+!! wikitext
-{T|zh-cn:CN;zh-tw:TW}-
-!! result
+!! html
ZH
<p>
</p>
Partly disable title conversion if variant == main language code, more
!! options
language=zh variant=zh title=[[ZH]] showtitle
-!! input
+!! wikitext
-{T|TW}-
-!! result
+!! html
ZH
<p>
</p>
Raw output of variant escape tags (R flag)
!! options
language=zh variant=zh-tw
-!! input
+!! wikitext
Raw: -{R|zh:China;zh-tw:Taiwan}-
-!! result
+!! html
<p>Raw: zh:China;zh-tw:Taiwan
</p>
!! end
Nested using of manual convert syntax
!! options
language=zh variant=zh-hk
-!! input
+!! wikitext
Nested: -{zh-hans:Hi -{zh-cn:China;zh-sg:Singapore;}-;zh-hant:Hello -{zh-tw:Taiwan;zh-hk:H-{ong}- K-{}-ong;}-;}-!
-!! result
+!! html
<p>Nested: Hello Hong Kong!
</p>
!! end
Proper conversion of text in external links
!! options
language=sr variant=sr-ec
-!! input
+!! wikitext
http://www.google.com
gopher://www.google.com
[http://www.google.com http://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
+!! html
<p><a rel="nofollow" class="external free" href="http://www.google.com">http://www.google.com</a>
<a rel="nofollow" class="external free" href="gopher://www.google.com">gopher://www.google.com</a>
<a rel="nofollow" class="external free" href="http://www.google.com">http://www.google.com</a>
Do not convert roman numbers to language variants
!! options
language=sr variant=sr-ec
-!! input
+!! wikitext
Fridrih IV je car.
-!! result
+!! html
<p>Фридрих IV је цар.
</p>
!! end
Unclosed language converter markup "-{"
!! options
language=sr
-!! input
+!! wikitext
-{T|hello
-!! result
+!! html
<p>-{T|hello
</p>
!! end
Don't convert raw rule "-{R|=>}-" to "=>"
!! options
language=sr
-!! input
+!! wikitext
-{R|=>}-
-!! result
+!! html
<p>=>
</p>
!!end
Don't break link parsing if language converter markup is in the caption.
!! options
language=sr variant=sr-ec
-!! input
+!! wikitext
[[Main Page|-{R|main page}-]]
-!! result
+!! html
<p><a href="/wiki/Main_Page" title="Маин Паге">main page</a>
</p>
!! end
!! options
language=sr
disabled
-!! input
+!! wikitext
[[File:Foobar.jpg|-{R|caption}-]]
-!! result
+!! html
<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!! end
!! options
language=zh variant=zh-cn
disabled
-!! input
+!! wikitext
;-{zh-cn:AAA;zh-tw:BBB}-
-!! result
+!! html
<dl><dt>AAA
</dt></dl>
!! options
language=sr variant=sr-ec
disabled
-!! input
+!! wikitext
{|
|-
| -{R|B}-
|}
-!! result
+!! html
<table>
<tr>
!! test
Bug 529: Uncovered bullet
-!! input
+!! wikitext
* Foo {{bullet}}
-!! result
+!! html
<ul>
<li> Foo
</li>
# the expected output and your parser's output.
!! test
Bug 529: Uncovered bullet leaving empty list, normally removed by tidy
-!! input
+!! wikitext
******* Foo {{bullet}}
-!! result
+!! html
<ul>
<li><ul>
<li><ul>
!! test
Bug 529: Uncovered table already at line-start
-!! input
+!! wikitext
x
{{table}}
y
-!! result
+!! html
<p>x
</p>
<table>
!! test
Bug 529: Uncovered bullet in parser function result
-!! input
+!! wikitext
* Foo {{lc:{{bullet}} }}
-!! result
+!! html
<ul>
<li> Foo
</li>
!! test
Bug 5678: Double-parsed template argument
-!! input
+!! wikitext
{{lc:{{{1}}}|hello}}
-!! result
+!! html
<p>{{{1}}}
</p>
!! end
!! test
Bug 5678: Double-parsed template invocation
-!! input
+!! wikitext
{{lc:{{paramtest {{!}} param = hello }} }}
-!! result
+!! html
<p>{{paramtest | param = hello }}
</p>
!! end
!! options
language=cs
title=[[Main Page]]
-!! input
+!! wikitext
{{PRVNÍVELKÉ:ěščř}}
{{prvnívelké:ěščř}}
{{PRVNÍMALÉ:ěščř}}
{{malá:ěščř}}
{{VELKÁ:ěščř}}
{{velká:ěščř}}
-!! result
+!! html
<p>Ěščř
Ěščř
ěščř
!! test
Morwen/13: Unclosed link followed by heading
-!! input
+!! wikitext
[[link
==heading==
-!! result
+!! html
<p>[[link
</p>
<h2><span class="mw-headline" id="heading">heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: heading">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
!! test
HHP2.1: Heuristics for headings in preprocessor parenthetical structures
-!! input
+!! wikitext
{{foo|
=heading=
-!! result
+!! html
<p>{{foo|
</p>
<h1><span class="mw-headline" id="heading">heading</span></h1>
!! test
HHP2.2: Heuristics for headings in preprocessor parenthetical structures
-!! input
+!! wikitext
{{foo|
==heading==
-!! result
+!! html
<p>{{foo|
</p>
<h2><span class="mw-headline" id="heading">heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: heading">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
Tildes in comments
!! options
pst
-!! input
+!! wikitext
<!-- ~~~~ -->
-!! result
+!! html
<!-- ~~~~ -->
!! end
!! test
Paragraphs inside divs (no extra line breaks)
-!! input
+!! wikitext
<div>Line one
Line two</div>
-!! result
+!! html
<div>Line one
Line two</div>
!! test
Paragraphs inside divs (extra line break on open)
-!! input
+!! wikitext
<div>
Line one
Line two</div>
-!! result
+!! html
<div>
<p>Line one
</p>
!! test
Paragraphs inside divs (extra line break on close)
-!! input
+!! wikitext
<div>Line one
Line two
</div>
-!! result
+!! html
<div>Line one
<p>Line two
</p>
!! test
Paragraphs inside divs (extra line break on open and close)
-!! input
+!! wikitext
<div>
Line one
Line two
</div>
-!! result
+!! html
<div>
<p>Line one
</p><p>Line two
Nesting tags, paragraphs on lines which begin with <div>
!! options
disabled
-!! input
+!! wikitext
<div></div><strong>A
B</strong>
-!! result
+!! html
<div></div>
<p><strong>A
B</strong>
# Bug 6200: <blockquote> should behave like <div> with respect to line breaks
!! test
Bug 6200: paragraphs inside blockquotes (no extra line breaks)
-!! input
+!! wikitext
<blockquote>Line one
Line two</blockquote>
-!! result
+!! html
<blockquote>Line one
Line two</blockquote>
!! test
Bug 6200: paragraphs inside blockquotes (extra line break on open)
-!! input
+!! wikitext
<blockquote>
Line one
Line two</blockquote>
-!! result
+!! html
<blockquote>
<p>Line one
</p>
!! test
Bug 6200: paragraphs inside blockquotes (extra line break on close)
-!! input
+!! wikitext
<blockquote>Line one
Line two
</blockquote>
-!! result
+!! html
<blockquote>Line one
<p>Line two
</p>
!! test
Bug 6200: paragraphs inside blockquotes (extra line break on open and close)
-!! input
+!! wikitext
<blockquote>
Line one
Line two
</blockquote>
-!! result
+!! html
<blockquote>
<p>Line one
</p><p>Line two
!! test
Paragraphs inside blockquotes/divs (no extra line breaks)
-!! input
+!! wikitext
<blockquote><div>Line one
Line two</div></blockquote>
-!! result
+!! html
<blockquote><div>Line one
Line two</div></blockquote>
!! test
Paragraphs inside blockquotes/divs (extra line break on open)
-!! input
+!! wikitext
<blockquote><div>
Line one
Line two</div></blockquote>
-!! result
+!! html
<blockquote><div>
<p>Line one
</p>
!! test
Paragraphs inside blockquotes/divs (extra line break on close)
-!! input
+!! wikitext
<blockquote><div>Line one
Line two
</div></blockquote>
-!! result
+!! html
<blockquote><div>Line one
<p>Line two
</p>
!! test
Paragraphs inside blockquotes/divs (extra line break on open and close)
-!! input
+!! wikitext
<blockquote><div>
Line one
Line two
</div></blockquote>
-!! result
+!! html
<blockquote><div>
<p>Line one
</p><p>Line two
Interwiki links trounced by replaceExternalLinks after early LinkHolderArray expansion
!! options
wgLinkHolderBatchSize=0
-!! input
+!! wikitext
[[meatball:1]]
[[meatball:2]]
[[meatball:3]]
-!! result
+!! html
<p><a href="http://www.usemod.com/cgi-bin/mb.pl?1" class="extiw" title="meatball:1">meatball:1</a>
<a href="http://www.usemod.com/cgi-bin/mb.pl?2" class="extiw" title="meatball:2">meatball:2</a>
<a href="http://www.usemod.com/cgi-bin/mb.pl?3" class="extiw" title="meatball:3">meatball:3</a>
!! test
Free external link invading image caption
-!! input
+!! wikitext
[[Image:Foobar.jpg|thumb|http://x|hello]]
-!! result
+!! html
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>hello</div></div></div>
!! end
Bug 15196: localised external link numbers
!! options
language=fa
-!! input
+!! wikitext
[http://en.wikipedia.org/]
-!! result
+!! html
<p><a rel="nofollow" class="external autonumber" href="http://en.wikipedia.org/">[۱]</a>
</p>
!! end
!! test
Multibyte character in padleft
-!! input
+!! wikitext
{{padleft:-Hello|7|Æ}}
-!! result
+!! html
<p>Æ-Hello
</p>
!! end
!! test
Multibyte character in padright
-!! input
+!! wikitext
{{padright:Hello-|7|Æ}}
-!! result
+!! html
<p>Hello-Æ
</p>
!! end
!!test
formatdate parser function
-!!input
+!! wikitext
{{#formatdate:2009-03-24}}
-!! result
+!! html
<p><span class="mw-formatted-date" title="2009-03-24">2009-03-24</span>
</p>
!! end
!!test
formatdate parser function, with default format
-!!input
+!! wikitext
{{#formatdate:2009-03-24|mdy}}
-!! result
+!! html
<p><span class="mw-formatted-date" title="2009-03-24">March 24, 2009</span>
</p>
!! end
!! test
Spacing of numbers in formatted dates
-!! input
+!! wikitext
{{#formatdate:January 15}}
-!! result
+!! html
<p><span class="mw-formatted-date" title="01-15">January 15</span>
</p>
!! end
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
+!! wikitext
{{#formatdate:2009-03-24|dmy}}
-!! result
+!! html
<p><span class="mw-formatted-date" title="2009-03-24">24 March 2009</span>
</p>
!! end
Edit comment with link
!! options
comment
-!! input
+!! wikitext
I like the [[Main Page]] a lot
-!! result
+!! html
I like the <a href="/wiki/Main_Page" title="Main Page">Main Page</a> a lot
!!end
Edit comment with link and link text
!! options
comment
-!! input
+!! wikitext
I like the [[Main Page|best pages]] a lot
-!! result
+!! html
I like the <a href="/wiki/Main_Page" title="Main Page">best pages</a> a lot
!!end
Edit comment with link and link text with suffix
!! options
comment
-!! input
+!! wikitext
I like the [[Main Page|best page]]s a lot
-!! result
+!! html
I like the <a href="/wiki/Main_Page" title="Main Page">best pages</a> a lot
!!end
Edit comment with section link (non-local, eg in history list)
!! options
comment title=[[Main Page]]
-!! input
+!! wikitext
/* External links */ removed bogus entries
-!! result
+!! html
<a href="/wiki/Main_Page#External_links" title="Main Page">→</a><span dir="auto"><span class="autocomment">External links: </span> removed bogus entries</span>
!!end
Edit comment with section link and text before it (non-local, eg in history list)
!! options
comment title=[[Main Page]]
-!! input
+!! wikitext
pre-comment text /* External links */ removed bogus entries
-!! result
+!! html
pre-comment text <a href="/wiki/Main_Page#External_links" title="Main Page">→</a><span dir="auto"><span class="autocomment">External links: </span> removed bogus entries</span>
!!end
Edit comment with section link (local, eg in diff view)
!! options
comment local title=[[Main Page]]
-!! input
+!! wikitext
/* External links */ removed bogus entries
-!! result
+!! html
<a href="#External_links">→</a><span dir="auto"><span class="autocomment">External links: </span> removed bogus entries</span>
!!end
comment
subpage
title=[[Subpage test]]
-!! input
+!! wikitext
Poked at a [[/subpage]] here...
-!! result
+!! html
Poked at a <a href="/wiki/Subpage_test/subpage" title="Subpage test/subpage">/subpage</a> here...
!!end
comment
subpage
title=[[Subpage test]]
-!! input
+!! wikitext
Poked at a [[/subpage|neat little page]] here...
-!! result
+!! html
Poked at a <a href="/wiki/Subpage_test/subpage" title="Subpage test/subpage">neat little page</a> here...
!!end
!! options
comment
title=[[Subpage test]]
-!! input
+!! wikitext
Poked at a [[/subpage]] here...
-!! result
+!! html
Poked at a <a href="/index.php?title=/subpage&action=edit&redlink=1" class="new" title="/subpage (page does not exist)">/subpage</a> here...
!!end
comment
local
title=[[Main Page]]
-!!input
+!! wikitext
[[#section]]
-!! result
+!! html
<a href="#section">#section</a>
!! end
!! options
comment
title=[[Main Page]]
-!!input
+!! wikitext
[[#section]]
-!! result
+!! html
<a href="/wiki/Main_Page#section" title="Main Page">#section</a>
!! end
!! test
Anchor starting with underscore
-!!input
+!! wikitext
[[#_ref|One]]
-!! result
+!! html
<p><a href="#_ref">One</a>
</p>
!! end
!! test
Id starting with underscore
-!!input
+!! wikitext
<div id="_ref"></div>
-!! result
+!! html
<div id="_ref"></div>
!! end
!! options
comment
title=[[Main Page]]
-!!input
+!! wikitext
/* __hello__world__ */
-!! result
+!! html
<a href="/wiki/Main_Page#hello_world" title="Main Page">→</a><span dir="auto"><span class="autocomment">__hello__world__</span></span>
!! end
percent-encoding and + signs in comments (Bug 26410)
!! options
comment
-!!input
+!! wikitext
[[ABC%33D% ++]] [[ABC%33D% ++|+%20]]
-!! result
+!! html
<a href="/index.php?title=ABC3D%25_%2B%2B&action=edit&redlink=1" class="new" title="ABC3D% ++ (page does not exist)">ABC3D% ++</a> <a href="/index.php?title=ABC3D%25_%2B%2B&action=edit&redlink=1" class="new" title="ABC3D% ++ (page does not exist)">+%20</a>
!! end
Bad images - basic functionality
!! options
disabled
-!! input
+!! wikitext
[[File:Bad.jpg]]
-!! result
+!! html
!! end
!! test
Bad images - bug 16039: text after bad image disappears
!! options
disabled
-!! input
+!! wikitext
Foo bar
[[File:Bad.jpg]]
Bar foo
-!! result
+!! html
<p>Foo bar
</p><p>Bar foo
</p>
!! config
wgAllowDisplayTitle=true
wgRestrictDisplayTitle=false
-!! input
+!! wikitext
this is not the the title
-!! result
+!! html
Parser test
<p>this is not the the title
</p>
!! config
wgAllowDisplayTitle=true
wgRestrictDisplayTitle=false
-!! input
+!! wikitext
this is not the the title
{{DISPLAYTITLE:whatever}}
-!! result
+!! html
whatever
<p>this is not the the title
</p>
!! config
wgAllowDisplayTitle=true
wgRestrictDisplayTitle=true
-!! input
+!! wikitext
this is not the the title
{{DISPLAYTITLE:whatever}}
-!! result
+!! html
Screen
<p>this is not the the title
</p>
!! config
wgAllowDisplayTitle=true
wgRestrictDisplayTitle=true
-!! input
+!! wikitext
this is not the the title
{{DISPLAYTITLE:screen}}
-!! result
+!! html
screen
<p>this is not the the title
</p>
title=[[Screen]]
!! config
wgAllowDisplayTitle=false
-!! input
+!! wikitext
this is not the the title
{{DISPLAYTITLE:screen}}
-!! result
+!! html
Screen
<p>this is not the the title
<a href="/index.php?title=Template:DISPLAYTITLE:screen&action=edit&redlink=1" class="new" title="Template:DISPLAYTITLE:screen (page does not exist)">Template:DISPLAYTITLE:screen</a>
title=[[Screen]]
!! config
wgAllowDisplayTitle=false
-!! input
+!! wikitext
this is not the the title
-!! result
+!! html
Screen
<p>this is not the the title
</p>
!! config
wgAllowDisplayTitle=true
wgRestrictDisplayTitle=true
-!! input
+!! wikitext
this is not the the title
{{DISPLAYTITLE:<span style="display: none;">s</span>creen}}
-!! result
+!! html
<span style="/* attempt to bypass $wgRestrictDisplayTitle */">s</span>creen
<p>this is not the the title
</p>
!! config
wgAllowDisplayTitle=true
wgRestrictDisplayTitle=true
-!! input
+!! wikitext
this is not the the title
{{DISPLAYTITLE:<span style="color: red;">s</span>creen}}
-!! result
+!! html
<span style="color: red;">s</span>creen
<p>this is not the the title
</p>
preload: check <noinclude> and <includeonly>
!! options
preload
-!! input
+!! wikitext
Hello <noinclude>cruel</noinclude><includeonly>kind</includeonly> world.
-!! result
+!! html
Hello kind world.
!! end
preload: check <onlyinclude>
!! options
preload
-!! input
+!! wikitext
Goodbye <onlyinclude>Hello world</onlyinclude>
-!! result
+!! html
Hello world
!! end
preload: can pass tags through if we want to
!! options
preload
-!! input
+!! wikitext
<includeonly><</includeonly>includeonly>Hello world<includeonly><</includeonly>/includeonly>
-!! result
+!! html
<includeonly>Hello world</includeonly>
!! end
preload: check that it doesn't try to do tricks
!! options
preload
-!! input
+!! wikitext
* <!-- Hello --> ''{{world}}'' {{<includeonly>subst:</includeonly>How are you}}{{ {{{|safesubst:}}} #if:1|2|3}}
-!! result
+!! html
* <!-- Hello --> ''{{world}}'' {{subst:How are you}}{{ {{{|safesubst:}}} #if:1|2|3}}
!! end
Play a bit with r67090 and bug 3158
!! options
disabled
-!! input
+!! wikitext
<div style="width:50% !important"> </div>
<div style="width:50% !important"> </div>
<div style="width:50% !important"> </div>
<div style="border : solid;"> </div>
-!! result
+!! html
<div style="width:50% !important"> </div>
<div style="width:50% !important"> </div>
<div style="width:50% !important"> </div>
!! test
HTML5 data attributes
-!! input
+!! wikitext
<span data-foo="bar">Baz</span>
<p data-abc-def_hij="">Quuz</p>
-!! result
+!! html
<p><span data-foo="bar">Baz</span>
</p>
<p data-abc-def_hij="">Quuz</p>
!! test
percent-encoding and + signs in internal links (Bug 26410)
-!! input
+!! wikitext
[[User:+%]] [[Page+title%]]
[[%+]] [[%+|%20]] [[%+ ]] [[%+r]]
[[%]] [[+]] [[image:%+abc%39|foo|[[bar]]]]
[[%33%45]] [[%33%45+]]
-!! result
+!! html
<p><a href="/index.php?title=User:%2B%25&action=edit&redlink=1" class="new" title="User:+% (page does not exist)">User:+%</a> <a href="/index.php?title=Page%2Btitle%25&action=edit&redlink=1" class="new" title="Page+title% (page does not exist)">Page+title%</a>
<a href="/index.php?title=%25%2B&action=edit&redlink=1" class="new" title="%+ (page does not exist)">%+</a> <a href="/index.php?title=%25%2B&action=edit&redlink=1" class="new" title="%+ (page does not exist)">%20</a> <a href="/index.php?title=%25%2B&action=edit&redlink=1" class="new" title="%+ (page does not exist)">%+ </a> <a href="/index.php?title=%25%2Br&action=edit&redlink=1" class="new" title="%+r (page does not exist)">%+r</a>
<a href="/index.php?title=%25&action=edit&redlink=1" class="new" title="% (page does not exist)">%</a> <a href="/index.php?title=%2B&action=edit&redlink=1" class="new" title="+ (page does not exist)">+</a> <a href="/index.php?title=Special:Upload&wpDestFile=%25%2Babc9" class="new" title="File:%+abc9">bar</a>
!! test
Special characters in embedded file links (bug 27679)
-!! input
+!! wikitext
[[File:Contains & ampersand.jpg]]
[[File:Does not exist.jpg|Title with & ampersand]]
-!! result
+!! html
<p><a href="/index.php?title=Special:Upload&wpDestFile=Contains_%26_ampersand.jpg" class="new" title="File:Contains & ampersand.jpg">File:Contains & ampersand.jpg</a>
<a href="/index.php?title=Special:Upload&wpDestFile=Does_not_exist.jpg" class="new" title="File:Does not exist.jpg">Title with & ampersand</a>
</p>
!! test
Confirm that 'apos' named character reference doesn't make it to output (not legal in HTML 4)
-!! input
+!! wikitext
Text's been normalized?
-!! result
+!! html
<p>Text's been normalized?
</p>
!! end
!! test
Bug 19052 U+3000 IDEOGRAPHIC SPACE should terminate free external links
-!! input
+!! wikitext
http://www.example.org/ <-- U+3000 (vim: ^Vu3000)
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="http://www.example.org/">http://www.example.org/</a> <-- U+3000 (vim: ^Vu3000)
</p>
!! end
!! test
Bug 19052 U+3000 IDEOGRAPHIC SPACE should terminate bracketed external links
-!! input
+!! wikitext
[http://www.example.org/ ideograms]
-!! result
+!! html
<p><a rel="nofollow" class="external text" href="http://www.example.org/">ideograms</a>
</p>
!! end
!! test
Bug 19052 U+3000 IDEOGRAPHIC SPACE should terminate external images links
-!! input
+!! wikitext
http://www.example.org/pic.png <-- U+3000 (vim: ^Vu3000)
-!! result
+!! html
<p><img src="http://www.example.org/pic.png" alt="pic.png" /> <-- U+3000 (vim: ^Vu3000)
</p>
!! end
!! test
Bug 31098 Template which includes system messages which includes the template
-!! input
+!! wikitext
{{Identical}}
-!! result
+!! html
<p><span class="error">Template loop detected: <a href="/wiki/Template:Identical" title="Template:Identical">Template:Identical</a></span>
<span class="error">Template loop detected: <a href="/wiki/Template:Identical" title="Template:Identical">Template:Identical</a></span>
</p>
Bug31490 Turkish: ucfirst 'blah'
!! options
language=tr
-!! input
+!! wikitext
{{ucfirst:blah}}
-!! result
+!! html
<p>Blah
</p>
!! end
Bug31490 Turkish: ucfirst 'ix'
!! options
language=tr
-!! input
+!! wikitext
{{ucfirst:ix}}
-!! result
+!! html
<p>İx
</p>
!! end
Bug31490 Turkish: lcfirst 'BLAH'
!! options
language=tr
-!! input
+!! wikitext
{{lcfirst:BLAH}}
-!! result
+!! html
<p>bLAH
</p>
!! end
Bug31490 Turkish: ucfırst (with a dotless i)
!! options
language=tr
-!! input
+!! wikitext
{{ucfırst:blah}}
-!! result
+!! html
<p><a href="/index.php?title=%C5%9Eablon:Ucf%C4%B1rst:blah&action=edit&redlink=1" class="new" title="Şablon:Ucfırst:blah (sayfa mevcut değil)">Şablon:Ucfırst:blah</a>
</p>
!! end
Bug31490 ucfırst (with a dotless i) with English language
!! options
language=en
-!! input
+!! wikitext
{{ucfırst:blah}}
-!! result
+!! html
<p><a href="/index.php?title=Template:Ucf%C4%B1rst:blah&action=edit&redlink=1" class="new" title="Template:Ucfırst:blah (page does not exist)">Template:Ucfırst:blah</a>
</p>
!! end
Bug 26375: TOC with italics
!! options
title=[[Main Page]]
-!! input
+!! wikitext
__TOC__
== ''Lost'' episodes ==
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Lost_episodes"><span class="tocnumber">1</span> <span class="toctext"><i>Lost</i> episodes</span></a></li>
Bug 26375: TOC with bold
!! options
title=[[Main Page]]
-!! input
+!! wikitext
__TOC__
== '''should be bold''' then normal text ==
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#should_be_bold_then_normal_text"><span class="tocnumber">1</span> <span class="toctext"><b>should be bold</b> then normal text</span></a></li>
Bug 33845: Headings become cursive in TOC when they contain an image
!! options
title=[[Main Page]]
-!! input
+!! wikitext
__TOC__
== Image [[Image:foobar.jpg]] ==
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Image"><span class="tocnumber">1</span> <span class="toctext">Image</span></a></li>
Bug 33845 (2): Headings become bold in TOC when they contain a blockquote
!! options
title=[[Main Page]]
-!! input
+!! wikitext
__TOC__
== <blockquote>Quote</blockquote> ==
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Quote"><span class="tocnumber">1</span> <span class="toctext">Quote</span></a></li>
Unclosed tags in TOC
!! options
title=[[Main Page]]
-!! input
+!! wikitext
__TOC__
== Proof: 2 < 3 ==
<small>Hanc marginis exiguitas non caperet.</small>
QED
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Proof:_2_.3C_3"><span class="tocnumber">1</span> <span class="toctext">Proof: 2 < 3</span></a></li>
!! test
Multiple tags in TOC
-!! input
+!! wikitext
__TOC__
== <i>Foo</i> <b>Bar</b> ==
== <i>Foo</i> <blockquote>Bar</blockquote> ==
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Foo_Bar"><span class="tocnumber">1</span> <span class="toctext"><i>Foo</i> <b>Bar</b></span></a></li>
!! test
Tags with parameters in TOC
-!! input
+!! wikitext
__TOC__
== <sup class="in-h2">Hello</sup> ==
== <sup class="a > b">Evilbye</sup> ==
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Hello"><span class="tocnumber">1</span> <span class="toctext"><sup>Hello</sup></span></a></li>
!! test
span tags with directionality in TOC
-!! input
+!! wikitext
__TOC__
== <span dir="ltr">C++</span> ==
== <span style="font-style: italic" dir="ltr">All attributes on these span tags must be deleted from the TOC</span> ==
== <span dir="ltr" style="font-style: italic">Attributes after dir on these span tags must be deleted from the TOC</span> ==
-!! result
+!! html
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#C.2B.2B"><span class="tocnumber">1</span> <span class="toctext"><span dir="ltr">C++</span></span></a></li>
Bug 32057: Title needed when expanding <h> nodes.
!! options
title=[[Main Page]]
-!! input
+!! wikitext
{{int:Bug32057}}
-!! result
+!! html
<h2><span class="mw-headline" id="Headline_text">Headline text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&action=edit&section=1" title="Edit section: Headline text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
!! end
!! test
Strip marker in urlencode
-!! input
+!! wikitext
{{urlencode:x<nowiki/>y}}
{{urlencode:x<nowiki/>y|wiki}}
{{urlencode:x<nowiki/>y|path}}
-!! result
+!! html
<p>xy
xy
xy
!! test
Strip marker in lc
-!! input
+!! wikitext
{{lc:x<nowiki/>y}}
-!! result
+!! html
<p>xy
</p>
!! end
!! test
Strip marker in uc
-!! input
+!! wikitext
{{uc:x<nowiki/>y}}
-!! result
+!! html
<p>XY
</p>
!! end
!! test
Strip marker in formatNum
-!! input
+!! wikitext
{{formatnum:1<nowiki/>2}}
{{formatnum:1<nowiki/>2|R}}
-!! result
+!! html
<p>12
12
</p>
Check noCommafy in formatNum
!! options
language=be-tarask
-!! input
+!! wikitext
{{formatnum:123456.78}}
{{formatnum:123456.78|NOSEP}}
-!! result
+!! html
<p>123 456,78
123456.78
</p>
!! test
Wrong option for formatNum (bug 56199)
-!! input
+!! wikitext
{{formatnum:1,234.56|Random}}
{{formatnum:1,234.56|EVERYTHING}}
{{formatnum:1234.56|any argument that has the string 'NOSEP'}}
-!! result
+!! html
<p>1,234.56
1,234.56
1,234.56
Strip marker in grammar
!! options
language=fi
-!! input
+!! wikitext
{{grammar:elative|foo<nowiki/>bar}}
-!! result
+!! html
<p>foobarista
</p>
!! end
!! test
Strip marker in padleft
-!! input
+!! wikitext
{{padleft:|2|x<nowiki/>y}}
-!! result
+!! html
<p>xy
</p>
!! end
!! test
Strip marker in padright
-!! input
+!! wikitext
{{padright:|2|x<nowiki/>y}}
-!! result
+!! html
<p>xy
</p>
!! end
!! test
Strip marker in anchorencode
-!! input
+!! wikitext
{{anchorencode:x<nowiki/>y}}
-!! result
+!! html
<p>xy
</p>
!! end
!! test
nowiki inside link inside heading (bug 18295)
-!! input
+!! wikitext
==[[foo|x<nowiki>y</nowiki>z]]==
-!! result
+!! html
<h2><span class="mw-headline" id="xyz"><a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)">xyz</a></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: xyz">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
!! end
!! test
new support for bdi element (bug 31817)
-!! input
+!! wikitext
<p dir="rtl" lang="he">ולדימיר לנין (ברוסית: <bdi lang="ru">Владимир Ленин</bdi>, 24 באפריל 1870–22 בינואר 1924) הוא מנהיג פוליטי קומוניסטי רוסי.</p>
-!! result
+!! html
<p dir="rtl" lang="he">ולדימיר לנין (ברוסית: <bdi lang="ru">Владимир Ленин</bdi>, 24 באפריל 1870–22 בינואר 1924) הוא מנהיג פוליטי קומוניסטי רוסי.</p>
!!end
!! test
Ignore pipe between table row attributes
-!! input
+!! wikitext
{|
| quux
|- id=foo | style='color: red'
| bar
|}
-!! result
+!! html
<table>
<tr>
<td> quux
!!test
Gallery override link with WikiLink (bug 34852)
-!! input
+!! wikitext
<gallery>
File:foobar.jpg|caption|alt=galleryalt|link=InterWikiLink
</gallery>
-!! result
+!! html
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
<div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/InterWikiLink"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" /></a></div></div>
!!test
Gallery override link with absolute external link (bug 34852)
-!! input
+!! wikitext
<gallery>
File:foobar.jpg|caption|alt=galleryalt|link=http://www.example.org
</gallery>
-!! result
+!! html
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
<div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="http://www.example.org"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" /></a></div></div>
!!test
Gallery override link with malicious javascript (bug 34852)
-!! input
+!! wikitext
<gallery>
File:foobar.jpg|caption|alt=galleryalt|link=" onclick="alert('malicious javascript code!');
</gallery>
-!! result
+!! html
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
<div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/%22_onclick%3D%22alert(%27malicious_javascript_code!%27);"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" /></a></div></div>
!!test
Gallery with invalid title as link (bug 43964)
-!! input
+!! wikitext
<gallery>
File:foobar.jpg|link=<
</gallery>
-!! result
+!! html
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
<div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" /></a></div></div>
!!test
Language parser function
-!! input
+!! wikitext
{{#language:ar}}
-!! result
+!! html
<p>العربية
</p>
!! end
!!test
Padleft and padright as substr
-!! input
+!! wikitext
{{padleft:|3|abcde}}
{{padright:|3|abcde}}
-!! result
+!! html
<p>abc
abc
</p>
!!test
Special parser function
-!! input
+!! wikitext
{{#special:RandomPage}}
{{#special:BaDtItLe}}
{{#special:Foobar}}
-!! result
+!! html
<p>Special:Random
Special:Badtitle
Special:Foobar
!!test
Bug 34939 - Case insensitive link parsing ([HttP://])
-!! input
+!! wikitext
[HttP://MediaWiki.Org/]
-!! result
+!! html
<p><a rel="nofollow" class="external autonumber" href="HttP://MediaWiki.Org/">[1]</a>
</p>
!! end
!!test
Bug 34939 - Case insensitive link parsing ([HttP:// title])
-!! input
+!! wikitext
[HttP://MediaWiki.Org/ MediaWiki]
-!! result
+!! html
<p><a rel="nofollow" class="external text" href="HttP://MediaWiki.Org/">MediaWiki</a>
</p>
!! end
!!test
Bug 34939 - Case insensitive link parsing (HttP://)
-!! input
+!! wikitext
HttP://MediaWiki.Org/
-!! result
+!! html
<p><a rel="nofollow" class="external free" href="HttP://MediaWiki.Org/">HttP://MediaWiki.Org/</a>
</p>
!! end
Disable TOC
!! options
notoc
-!! input
+!! wikitext
Lead
== Section 1 ==
== Section 2 ==
== Section 3 ==
== Section 4 ==
== Section 5 ==
-!! result
+!! html
<p>Lead
</p>
1. SOL-sensitive wikitext tokens as template-args
!!options
parsoid=wt2html,wt2wt
-!!input
+!! wikitext
{{echo|*a}}
{{echo|#a}}
{{echo|:a}}
-!!result
+!! html
<span about="#mwt1" typeof="mw:Transclusion">
</span><ul about="#mwt1"><li>a</li>
</ul>
Ref: 1. ref-location should be replaced with an index span
!!options
parsoid
-!!input
+!! wikitext
A <ref>foo</ref>
B <ref name="x">foo</ref>
C <ref name="y" />
-!!result
+!! html
<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span>
B <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"x"}}' id="cite_ref-x-2-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-x-2">[2]</a></span>
C <span about="#mwt3" class="reference" data-mw='{"name":"ref","attrs":{"name":"y"}}' id="cite_ref-y-3-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-y-3">[3]</a></span></p>
Ref: 2. ref-tags with identical names should all get the same index
!!options
parsoid
-!!input
+!! wikitext
A <ref name="x">foo</ref>
B <ref name="x" />
-!!result
+!! html
<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"x"}}' id="cite_ref-x-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-x-1">[1]</a></span>
B <span about="#mwt2" class="reference" data-mw='{"name":"ref","attrs":{"name":"x"}}' id="cite_ref-x-1-1" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-x-1">[1]</a></span></p>
!!end
Ref: 3. spaces in ref-names should be ignored
!!options
parsoid
-!!input
+!! wikitext
A <ref name="x">foo</ref>
B <ref name=" x " />
C <ref name= x />
-!!result
+!! html
<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"x"}}' id="cite_ref-x-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-x-1">[1]</a></span>
B <span about="#mwt2" class="reference" data-mw='{"name":"ref","attrs":{"name":"x"}}' id="cite_ref-x-1-1" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-x-1">[1]</a></span>
C <span about="#mwt3" class="reference" data-mw='{"name":"ref","attrs":{"name":"x"}}' id="cite_ref-x-1-2" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-x-1">[1]</a></span></p>
(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
+!! wikitext
A <ref name="constructor">foo</ref>
-!!result
+!! html
<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"constructor"}}' id="cite_ref-constructor-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-constructor-1">[1]</a></span></p>
!!end
Ref: 5. body should accept generic wikitext
!!options
parsoid
-!!input
+!! wikitext
A <ref>
This is a '''[[bolded link]]''' and this is a {{echo|transclusion}}
</ref>
<references />
-!!result
+!! html
<p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"This is a <b data-parsoid='{\"dsr\":[19,40,3,3]}'><a rel=\"mw:WikiLink\" href=\"./Bolded_link\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Bolded_link\"},\"sa\":{\"href\":\"bolded link\"},\"dsr\":[22,37,2,2]}'>bolded link</a></b> and this is a <span about=\"#mwt3\" typeof=\"mw:Transclusion\" data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"transclusion\"}},\"i\":0}}]}' data-parsoid='{\"dsr\":[55,76,null,null],\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]]}'>transclusion</span>\n"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span></p>
<ol class="references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'>
Ref: 6. indent-pres should not be output in ref-body
!!options
parsoid
-!!input
+!! wikitext
A <ref>
foo
bar
</ref>
<references />
-!!result
+!! html
<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo\n bar\n baz\n"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span></p>
<ol class="references" typeof="mw:Extension/references" about="#mwt3" data-mw='{"name":"references","attrs":{}}'>
Ref: 7. No p-wrapping in ref-body
!!options
parsoid
-!!input
+!! wikitext
A <ref>
foo
</ref>
<references />
-!!result
+!! html
<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo\n\nbar\n\n\nbaz\n\n\n\nbooz\n"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span></p>
<ol about="#mwt2" class="references" typeof="mw:Extension/references" data-mw='{"name":"references","attrs":{}}'>
Ref: 8. transclusion wikitext has lower precedence
!!options
parsoid
-!!input
+!! wikitext
A <ref> foo {{echo|</ref> B C}}
<references />
-!!result
+!! html
<p>A <span class="reference" data-mw="{"name":"ref","body":{"html":"foo <span typeof=\"mw:Nowiki\" data-parsoid='{\"src\":\"{{\",\"dsr\":[12,14,0,0]}'>{{</span>echo|"},"attrs":{}}" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span> B C<span typeof="mw:Nowiki">}}</span></p>
<ol class="references" typeof="mw:Extension/references" data-mw="{"name":"references","attrs":{}}">
<li id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo <span typeof="mw:Nowiki">{{</span>echo|</li>
Ref: 9. unclosed comments should not leak out of ref-body
!!options
parsoid
-!!input
+!! wikitext
A <ref> foo <!--</ref> B C
<references />
-!!result
+!! html
<p>A <span class="reference" data-mw='{"name":"ref","body":{"html":"foo <!---->"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span> B C</p>
<ol class="references" typeof="mw:Extension/references" data-mw='{"name":"references","attrs":{}}'>
<li id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo </li>
Ref: 10. Unclosed HTML tags should not leak out of ref-body
!!options
parsoid
-!!input
+!! wikitext
A <ref> <b> foo </ref> B C
<references />
-!!result
+!! html
<p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"<b data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[8,16,3,0]}'> foo </b>"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-parsoid='{"src":"<ref> <b> foo </ref>"}'><a href="#cite_note-1">[1]</a></span> B C</p>
Ref: 11. ref-tags acts like an inline element wrt P-wrapping
!!options
parsoid
-!!input
+!! wikitext
A <ref>foo</ref> B
C <ref>bar</ref> D
-!!result
+!! html
<p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-parsoid='{"src":"<ref>foo</ref>"}'><a href="#cite_note-1">[1]</a></span> B
C <span about="#mwt4" class="reference" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{}}' id="cite_ref-2-0" rel="dc:references" typeof="mw:Extension/ref" data-parsoid='{"src":"<ref>bar</ref>"}'><a href="#cite_note-2">[2]</a></span> D</p>
!!end
Ref: 12. ref-tags act as trailing newline migration barrier
!!options
parsoid
-!!input
+!! wikitext
<!--the newline at the end of this line moves out of the p-tag-->a
b<!--the newline at the end of this line stays inside the p-tag--> <ref />
<ref />
c
-!!result
+!! html
<p><!--the newline at the end of this line moves out of the p-tag-->a</p>
Ref: 13. ref-tags are not SOL-transparent and block indent-pres
!!options
parsoid
-!!input
+!! wikitext
<ref>foo</ref> A
<ref>bar
</ref> B
-!!result
+!! html
<p><span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span> A
<span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"bar\n"},"attrs":{}}' id="cite_ref-2-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-2">[2]</a></span> B</p>
!!end
Ref: 14. A nested ref-tag should be emitted as plain text
!!options
parsoid
-!!input
+!! wikitext
<ref>foo <ref>bar</ref> baz</ref>
<references />
-!!result
+!! html
<p><span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"foo &lt;ref>bar&lt;/ref> baz"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-parsoid='{"src":"<ref>foo <ref>bar</ref> baz</ref>"}'><a href="#cite_note-1">[1]</a></span></p>
<ol class="references" typeof="mw:Extension/references" about="#mwt5" data-parsoid='{"src":"<references />"}' data-mw='{"name":"references","attrs":{}}'>
Ref: 15. ref-tags with identical names should get identical indexes
!!options
parsoid
-!!input
+!! wikitext
A1 <ref name="a">foo</ref> A2 <ref name="a" />
B1 <ref name="b" /> B2 <ref name="b">bar</ref>
<references />
-!!result
+!! html
<p>A1 <span about="#mwt3" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"a"}}' id="cite_ref-a-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-a-1">[1]</a></span> A2 <span about="#mwt4" class="reference" data-mw='{"name":"ref","attrs":{"name":"a"}}' id="cite_ref-a-1-1" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-a-1">[1]</a></span>
B1 <span about="#mwt7" class="reference" data-mw='{"name":"ref","attrs":{"name":"b"}}' id="cite_ref-b-2-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-b-2">[2]</a></span> B2 <span about="#mwt8" class="reference" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{"name":"b"}}' id="cite_ref-b-2-1" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-b-2">[2]</a></span></p>
Ref: 16. Tokenizer should accept non-standard whitespace in <ref> and </ref> tags
!!options
parsoid=wt2html
-!!input
+!! wikitext
A <ref >foo</ref >
<references />
-!!result
+!! html
<p>A <span class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span></p>
<ol class="references" typeof="mw:Extension/references" data-mw='{"name":"references","attrs":{}}'>
References: 1. references tag without any refs should be handled properly
!!options
parsoid
-!!input
+!! wikitext
<references />
-!!result
+!! html
<ol about="#mwt2" class="references" typeof="mw:Extension/references" data-mw='{"name":"references","attrs":{}}'></ol>
!!end
References: 2. references tag with group only outputs references from that group
!!options
parsoid
-!!input
+!! wikitext
A <ref group="a">foo</ref>
B <ref group="b">bar</ref>
<references group="a" />
-!!result
+!! html
<p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"group":"a"}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[a 1]</a></span>
B <span about="#mwt4" class="reference" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{"group":"b"}}' id="cite_ref-2-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-2">[b 1]</a></span></p>
References: 3. ref list should be cleared after processing references
!!options
parsoid
-!!input
+!! wikitext
A <ref>foo</ref>
<references />
B <ref>bar</ref>
<references />
-!!result
+!! html
<p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span></p>
<ol about="#mwt4" class="references" typeof="mw:Extension/references" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo</li>
References: 4. only referenced group should be cleared after processing references
!!options
parsoid
-!!input
+!! wikitext
A <ref group="a">afoo</ref>
B <ref>bfoo</ref>
C <ref>cfoo</ref>
<references />
-!!result
+!! html
<p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"afoo"},"attrs":{"group":"a"}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[a 1]</a></span>
B <span about="#mwt4" class="reference" data-mw='{"name":"ref","body":{"html":"bfoo"},"attrs":{}}' id="cite_ref-2-0" rel="dc:references" typeof="mw:Extension/ref" data-parsoid='{"src":"<ref>bfoo</ref>"}'><a href="#cite_note-2">[1]</a></span></p>
References: 5. ref tags in references should be processed while ignoring all other content
!!options
parsoid
-!!input
+!! wikitext
A <ref name="a" />
B <ref name="b">bar</ref>
<ref name="a">foo</ref>
This should just get lost.
</references>
-!!result
+!! html
<p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","attrs":{"name":"a"}}' id="cite_ref-a-1-0" rel="dc:references" typeof="mw:Extension/ref" data-parsoid='{"src":"<ref name=\"a\" />"}'><a href="#cite_note-a-1">[1]</a></span>
B <span about="#mwt4" class="reference" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{"name":"b"}}' id="cite_ref-b-2-0" rel="dc:references" typeof="mw:Extension/ref" data-parsoid='{"src":"<ref name=\"b\">bar</ref>"}'><a href="#cite_note-b-2">[2]</a></span></p>
References: 6. <references /> from a transclusion
!!options
parsoid
-!!input
+!! wikitext
<ref>Foo</ref> {{echo|<references />}}
-!!result
+!! html
<span about="#mwt3" class="reference" data-mw='{"name":"ref","body":{"html":"Foo"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span> <ol class="references" typeof="mw:Extension/references mw:Transclusion" about="#mwt4" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<references />"}},"i":0}}]}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> Foo</li></ol>
!!end
References: 7. Multiple references tags (one without and one with nested refs) should be correctly handled
!! options
parsoid
-!! input
+!! wikitext
A <ref>foo bar for a</ref>
-B <ref name="b" />
+B <ref group="X" name="b" />
<references />
-<references>
+<references group="X">
<ref name="b">foo</ref>
</references>
-!! result
-<p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"foo bar for a"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-parsoid='{"src":"<ref>foo bar for a</ref>"}'><a href="#cite_note-1">[1]</a></span>
-B <span about="#mwt4" class="reference" data-mw='{"name":"ref","attrs":{"name":"b"}}' id="cite_ref-b-2-0" rel="dc:references" typeof="mw:Extension/ref" data-parsoid='{"src":"<ref name=\"b\" />"}'><a href="#cite_note-b-2">[2]</a></span></p>
-
-
-<ol class="references" typeof="mw:Extension/references" about="#mwt6" data-parsoid='{"src":"<references />"}' data-mw='{"name":"references","attrs":{}}'>
-<li about="#cite_note-1" id="cite_note-1" data-parsoid="{}"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo bar for a</li>
-<li about="#cite_note-b-2" id="cite_note-b-2" data-parsoid="{}"><span rel="mw:referencedBy"><a href="#cite_ref-b-2-0">↑</a></span> </li></ol>
+!! html
+<p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"foo bar for a"},"attrs":{}}' id="cite_ref-2-0" rel="dc:references" typeof="mw:Extension/ref" data-parsoid='{"src":"<ref>foo bar for a</ref>"}'><a href="#cite_note-2" data-parsoid="{}">[2]</a></span>
+B <span about="#mwt4" class="reference" data-mw='{"name":"ref","attrs":{"group":"X","name":"b"}}' id="cite_ref-b-3-0" rel="dc:references" typeof="mw:Extension/ref" data-parsoid='{"src":"<ref name=\"b\" group=\"X\" />"}'><a href="#cite_note-b-3" data-parsoid="{}">[X 1]</a></span></p>
+<ol class="references" typeof="mw:Extension/references" about="#mwt6" data-parsoid='{"src":"<references />"}' data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-b-1" id="cite_note-b-1" data-parsoid="{}"><span rel="mw:referencedBy" data-parsoid="{}">↑</span> foo</li><li about="#cite_note-2" id="cite_note-2" data-parsoid="{}"><span rel="mw:referencedBy" data-parsoid="{}"><a href="#cite_ref-2-0" data-parsoid="{}">↑</a></span> foo bar for a</li></ol>
-<ol class="references" typeof="mw:Extension/references" about="#mwt8" data-parsoid='{"src":"<references>\n<ref name=\"b\">foo</ref>\n</references>"}' data-mw='{"name":"references","body":{"extsrc":"<ref name=\"b\">foo</ref>","html":"\n<span about=\"#mwt10\" class=\"reference\" data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"foo\"},\"attrs\":{\"name\":\"b\"}}' rel=\"dc:references\" typeof=\"mw:Extension/ref\"><a href=\"#cite_note-b-3\">[1]</a></span>\n"},"attrs":{}}'>
-<li about="#cite_note-b-3" id="cite_note-b-3" data-parsoid="{}"><span rel="mw:referencedBy">↑</span> foo</li>
-</ol>
+<ol class="references" typeof="mw:Extension/references" about="#mwt8" data-parsoid='{"src":"<references group=\"X\">\n<ref name=\"b\">foo</ref>\n</references>","group":"X"}' data-mw='{"name":"references","body":{"extsrc":"<ref name=\"b\">foo</ref>","html":"\n<span about=\"#mwt10\" class=\"reference\" data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"foo\"},\"attrs\":{\"name\":\"b\"}}' rel=\"dc:references\" typeof=\"mw:Extension/ref\"><a href=\"#cite_note-b-1\">[1]</a></span>\n"},"attrs":{"group":"X"}}'><li about="#cite_note-b-3" id="cite_note-b-3" data-parsoid="{}"><span rel="mw:referencedBy" data-parsoid="{}"><a href="#cite_ref-b-3-0" data-parsoid="{}">↑</a></span> </li></ol>
!! end
# This test is wt2html only because we're permitting the serializer to produce
Generate references for unclosed references tag
!! options
parsoid=wt2html
-!! input
+!! wikitext
a<ref>foo</ref>
<references>
-!! result
+!! html
<p data-parsoid='{}'>a<span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-parsoid='{"src":"<ref>foo</ref>"}'><a href="#cite_note-1" data-parsoid="{}">[1]</a></span></p>
New reference serializes on its own line
!! options
parsoid=wt2wt,html2wt
-!! input
+!! wikitext
foo
<references />
-!! result
+!! html
foo<ol class="references" typeof="mw:Extension/references" about="#mwt2" data-mw='{"name":"references","attrs":{}}'></ol>
!! end
Headings: 0. Unnested
!! options
parsoid
-!! input
+!! wikitext
<nowiki>=foo=</nowiki>
<nowiki> =foo= </nowiki>
<nowiki>=foo=</nowiki>
=foo''a''<nowiki>=</nowiki>
-!! result
+!! html
<p><span typeof="mw:Nowiki">=foo=</span></p>
<p><span typeof="mw:Nowiki"> =foo= </span>
(New headings and existing headings are handled differently)
!! options
parsoid=html2wt
-!! input
+!! wikitext
= =foo= =
== =foo= ==
=====<nowiki>=foo=</nowiki>=====
======<nowiki>=foo=</nowiki>======
-!! result
+!! html
<h1>=foo=</h1>
<h2>=foo=</h2>
<h3>=foo=</h3>
Headings: 2. Outside heading nest on a single line <h1>foo</h1>*bar
!! options
parsoid=html2wt
-!! input
+!! wikitext
= foo =
<nowiki>*</nowiki>bar
= foo =
<nowiki>=bar=</nowiki>
-!! result
+!! html
<h1>foo</h1>*bar
<h1>foo</h1>=bar
<h1>foo</h1>=bar=
Headings: 3. Nested inside html with wikitext split by html tags
!! options
parsoid=html2wt
-!! input
+!! wikitext
= ='''bold'''<nowiki>foo=</nowiki> =
-!! result
+!! html
<h1>=<b>bold</b><span typeof="mw:Nowiki">foo=</span></h1>
!!end
Headings: 4a. No escaping needed (testing just h1 and h2)
!! options
parsoid=html2wt
-!! input
+!! wikitext
= =foo =
= foo= =
= ''=''foo= =
= <nowiki>=</nowiki> =
-!! result
+!! html
<h1>=foo</h1>
<h1>foo=</h1>
<h1> =foo= </h1>
Headings: 4b. No escaping needed (inside p-tags)
!! options
parsoid=html2wt
-!! input
+!! wikitext
===
=foo= x
=foo= <s></s>
-!! result
+!! html
<p>===
=foo= x
=foo= <s></s>
Headings: 5. Empty headings
!! options
parsoid
-!! input
+!! wikitext
=<nowiki/>=
==<nowiki/>==
=====<nowiki/>=====
======<nowiki/>======
-!! result
+!! html
<h1></h1>
<h2></h2>
<h3></h3>
Headings: 6a. Heading chars in SOL context (with trailing spaces)
!! options
parsoid
-!! input
+!! wikitext
<nowiki>=a=</nowiki>
<nowiki>=a=</nowiki>
<nowiki>=a=</nowiki>
<nowiki>=a=</nowiki>
-!! result
+!! html
<p>=a=</p>
<p>=a= </p>
<p>=a= </p>
Headings: 6b. Heading chars in SOL context (with trailing newlines)
!! options
parsoid
-!! input
+!! wikitext
<nowiki>=a=
b</nowiki>
<nowiki>=a=
b</nowiki>
-!! result
+!! html
<p>=a=
b</p>
<p>=a=
Headings: 6c. Heading chars in SOL context (leading newline break)
!! options
parsoid
-!! input
+!! wikitext
a
<nowiki>=b=</nowiki>
-!! result
+!! html
<p>a
=b=</p>
!!end
Headings: 6d. Heading chars in SOL context (with interspersed comments)
!! options
parsoid
-!! input
+!! wikitext
<!--c0--><nowiki>=a=</nowiki>
<!--c1--><nowiki>=a=</nowiki> <!--c2--> <!--c3-->
-!! result
+!! html
<p><!--c0-->=a=</p>
<p><!--c1-->=a= <!--c2--> <!--c3--></p>
!!end
Headings: 6d. Heading chars in SOL context (No escaping needed)
!! options
parsoid=html2wt
-!! input
+!! wikitext
=a=<div>b</div>
-!! result
+!! html
=a=<div>b</div>
!!end
!! test
Lists: 0. Outside nests
-!! input
+!! wikitext
<nowiki>*</nowiki>foo
<nowiki>#</nowiki>foo
-!! result
+!! html
<p>*foo
</p><p>#foo
</p>
!! test
Lists: 1. Nested inside html
-!! input
+!! wikitext
*<nowiki>*foo</nowiki>
*<nowiki>#foo</nowiki>
#<nowiki>:foo</nowiki>
#<nowiki>;foo</nowiki>
-!! result
+!! html
<ul>
<li>*foo
</li>
!! test
Lists: 2. Inside definition lists
-!! input
+!! wikitext
;<nowiki>;foo</nowiki>
;<nowiki>:foo</nowiki>
:bar
:<nowiki>:foo</nowiki>
-!! result
+!! html
<dl>
<dt>;foo
</dt>
!! test
Lists: 3. Only bullets at start of text should be escaped
-!! input
+!! wikitext
*<nowiki>*foo*bar</nowiki>
*<nowiki>*foo</nowiki>''it''*bar
-!! result
+!! html
<ul>
<li>*foo*bar
</li>
Lists: 4. No escapes needed
!! options
parsoid
-!! input
+!! wikitext
*foo*bar
*''foo''*bar
*[[Foo]]: bar
*[[Foo]]*bar
-!! result
+!! html
<ul>
<li>foo*bar
</li>
!! test
Lists: 5. No unnecessary escapes
-!! input
+!! wikitext
* bar <span><nowiki>[[foo]]</nowiki></span>
*=bar <span><nowiki>[[foo]]</nowiki></span>
*=bar <span>foo]]</span>=
* <s></s>: a
-!! result
+!! html
<ul>
<li> bar <span>[[foo]]</span>
</li>
Lists: 6. Escape bullets in SOL position
!! options
parsoid
-!! input
+!! wikitext
<!--cmt--><nowiki>*foo</nowiki>
-!! result
+!! html
<p><!--cmt--><span typeof="mw:Nowiki">*foo</span></p>
!!end
!! test
Lists: 7. Escape bullets in a multi-line context
-!! input
+!! wikitext
a
<nowiki>*</nowiki>b
-!! result
+!! html
<p>a
*b
</p>
HRs: 1. Single line
!! options
parsoid
-!! input
+!! wikitext
----<nowiki>----</nowiki>
----=foo=
----*foo
-!! result
+!! html
<hr><span typeof="mw:Nowiki">----</span>
<hr>=foo=
<hr>*foo
!! test
Tables: 1a. Simple example
-!! input
+!! wikitext
<nowiki>{|
|}</nowiki>
-!! result
+!! html
<p>{|
|}
</p>
!! test
Tables: 1b. No escaping needed
-!! input
+!! wikitext
!foo
-!! result
+!! html
<p>!foo
</p>
!! end
!! test
Tables: 1c. No escaping needed
-!! input
+!! wikitext
|foo
-!! result
+!! html
<p>|foo
</p>
!! end
!! test
Tables: 1d. No escaping needed
-!! input
+!! wikitext
|}foo
-!! result
+!! html
<p>|}foo
</p>
!! end
Tables: 2a. Nested in td
!! options
parsoid=html2wt
-!! input
+!! wikitext
{|
|<nowiki>foo|bar</nowiki>
|-
|x<div><nowiki>a|b</nowiki></div>
|}
-!! result
+!! html
<table><tbody><tr>
<td>foo|bar</td></tr>
<tr><td>x<div>a|b</div></td>
Tables: 2b. Nested in td
!! options
parsoid
-!! input
+!! wikitext
{|
|<nowiki>foo||bar</nowiki>
|''it''<nowiki>foo||bar</nowiki>
|}
-!! result
+!! html
<table><tbody><tr>
<td><span typeof="mw:Nowiki">foo||bar</span></td>
<td><i>it</i><span typeof="mw:Nowiki">foo||bar</span></td></tr></tbody></table>
Tables: 2c. Nested in td -- no escaping needed
!! options
parsoid
-!! input
+!! wikitext
{|
|foo!!bar
|}
-!! result
+!! html
<table><tbody><tr><td>foo!!bar
</td></tr></tbody></table>
Tables: 3a. Nested in th
!! options
parsoid
-!! input
+!! wikitext
{|
!foo!bar
|}
-!! result
+!! html
<table><tbody><tr><th>foo!bar
</th></tr></tbody></table>
Tables: 3b. Nested in th
!! options
parsoid
-!! input
+!! wikitext
{|
!<nowiki>foo!!bar</nowiki>
|}
-!! result
+!! html
<table>
<tbody><tr><th><span typeof="mw:Nowiki">foo!!bar</span></th></tr>
</tbody></table>
Tables: 3c. Nested in th -- no escaping needed
!! options
parsoid
-!! input
+!! wikitext
{|
!<nowiki>foo||bar</nowiki>
|}
-!! result
+!! html
<table><tbody><tr>
<th><span typeof="mw:Nowiki">foo||bar</span></th></tr></tbody></table>
!! end
Tables: 4a. Escape -
!! options
parsoid
-!! input
+!! wikitext
{|
!-bar
|-
|<nowiki>-bar</nowiki>
|}
-!! result
+!! html
<table><tbody>
<tr><th>-bar</th></tr>
<tr>
Tables: 4b. Escape +
!! options
parsoid
-!! input
+!! wikitext
{|
!+bar
|-
|<nowiki>+bar</nowiki>
|}
-!! result
+!! html
<table><tbody>
<tr><th>+bar</th></tr>
<tr>
Tables: 4c. No escaping needed
!! options
parsoid
-!! input
+!! wikitext
{|
|foo-bar
|foo+bar
|x
<div>a|b</div>
|}
-!! result
+!! html
<table><tbody>
<tr><td>foo-bar</td><td>foo+bar</td></tr>
<tr><td><i>foo</i>-bar</td><td><i>foo</i>+bar</td></tr>
Tables: 4d. No escaping needed
!! options
parsoid
-!! input
+!! wikitext
{|
|[[Foo]]-bar
||+1
||-2
|}
-!! result
+!! html
<table>
<tbody><tr><td><a rel="mw:WikiLink" href="./Foo">Foo</a>-bar</td>
<td data-parsoid='{"startTagSrc":"|","attrSepSrc":"|"}'>+1</td>
Tables: Digest broken attributes on table and tr tag
!! options
parsoid=wt2html
-!! input
+!! wikitext
{| || |} ++
|- || || ++ --
+|- > [
|}
-!! result
+!! html
<table>
<tbody>
<tr></tr>
+<tr></tr>
</tbody></table>
!! end
Links 1. Quote marks in link text
!! options
parsoid
-!! input
+!! wikitext
[[Foo|Foo<nowiki>''boo''</nowiki>]]
-!! result
+!! html
<a rel="mw:WikiLink" href="Foo">Foo''boo''</a>
!! end
Links 2. WikiLinks: Escapes needed
!! options
parsoid
-!! input
+!! wikitext
[[Foo|[Foobar]]]
[[Foo|<nowiki>Foobar]</nowiki>]]
[[Foo|x [Foobar] x]]
[[Foo|<nowiki>x [[ y</nowiki>]]
[[Foo|<nowiki>x ]] y</nowiki>]]
[[Foo|<nowiki>x ]] y [[ z</nowiki>]]
-!! result
+!! html
<a href="Foo" rel="mw:WikiLink">[Foobar]</a>
<a href="Foo" rel="mw:WikiLink">Foobar]</a>
<a href="Foo" rel="mw:WikiLink">x [Foobar] x</a>
Links 3. WikiLinks: No escapes needed
!! options
parsoid
-!! input
+!! wikitext
[[Foo|[Foobar]]
[[Foo|foo|bar]]
-!! result
+!! html
<a href="Foo" rel="mw:WikiLink">[Foobar</a>
<a href="Foo" rel="mw:WikiLink">foo|bar</a>
!! end
Links 4. ExtLinks: Escapes needed
!! options
parsoid
-!! input
+!! wikitext
[http://google.com <nowiki>[google]</nowiki>]
[http://google.com <nowiki>google]</nowiki>]
<nowiki>[http://google.com google]</nowiki>
-!! result
+!! html
<p><a href="http://google.com" rel="mw:ExtLink">[google]</a>
<a href="http://google.com" rel="mw:ExtLink">google]</a></p>
<p>[http://google.com]</p>
Links 5. ExtLinks: No escapes needed
!! options
parsoid
-!! input
+!! wikitext
[http://google.com [google]
-!! result
+!! html
<a href="http://google.com" rel="mw:ExtLink">[google</a>
!! end
1. Quotes inside <b> and <i>
!! options
parsoid=html2wt,wt2wt
-!! input
+!! wikitext
''<nowiki>'foo'</nowiki>''
''<nowiki>''foo''</nowiki>''
''<nowiki>'''foo'''</nowiki>''
'<nowiki/>'''foo'''<nowiki/>'
''fools'<span> errand</span>''
''<span>fool</span>'s errand''
-!! result
+!! html
<p><i>'foo'</i>
<i>''foo''</i>
<i>'''foo'''</i>
!! test
2. Link fragments separated by <i> and <b> tags
-!! input
+!! wikitext
[[''foo''<nowiki>hello]]</nowiki>
[['''foo'''<nowiki>hello]]</nowiki>
-!! result
+!! html
<p>[[<i>foo</i>hello]]
</p><p>[[<b>foo</b>hello]]
</p>
3. Link fragments inside <i> and <b>
(FIXME: Escaping one or both of [[ and ]] is also acceptable --
this is one of the shortcomings of this format)
-!! input
+!! wikitext
''[[foo''<nowiki>]]</nowiki>
'''[[foo'''<nowiki>]]</nowiki>
-!! result
+!! html
<p><i>[[foo</i>]]
</p><p><b>[[foo</b>]]
</p>
!! test
4. No escaping needed
-!! input
+!! wikitext
'<span>''bar''</span>'
'<span>'''bar'''</span>'
-!! result
+!! html
<p>'<span><i>bar</i></span>'
'<span><b>bar</b></span>'
</p>
!! test
1. No unnecessary escapes
-!! input
+!! wikitext
bar <span><nowiki>[[foo]]</nowiki></span>
=bar <span><nowiki>[[foo]]</nowiki></span>
]]bar <span><nowiki>[[foo]]</nowiki></span>
=bar <span>foo]]</span><nowiki>=</nowiki>
-!! result
+!! html
<p>bar <span>[[foo]]</span>
</p><p>=bar <span>[[foo]]</span>
</p><p>[[bar <span>[[foo]]</span>
1. Leading whitespace in SOL context should be escaped
!! options
parsoid
-!! input
+!! wikitext
<nowiki> </nowiki>a
<nowiki> </nowiki> a
a
<nowiki> </nowiki> b
-!! result
+!! html
<p> a</p>
<p> a</p>
<p> a(tab)</p>
1. Valid behavior switches should be escaped
!! options
parsoid=html2wt
-!! input
+!! wikitext
<nowiki>__TOC__</nowiki>
-!! result
+!! html
__TOC__
!! end
2. Invalid behavior switches should not be escaped
!! options
parsoid=html2wt
-!! input
+!! wikitext
__TOO__
__|__
-!! result
+!! html
__TOO__
__|__
!! end
1. a tags
!! options
parsoid
-!! input
+!! wikitext
<a href="http://google.com">google</a>
-!! result
+!! html
<a href="http://google.com">google</a>
!! end
!! test
2. other tags
-!! input
+!! wikitext
<nowiki><div>foo</div>
<div style="color:red">foo</div></nowiki>
-!! result
+!! html
<p><div>foo</div>
<div style="color:red">foo</div>
</p>
!! test
3. multi-line html tag
-!! input
+!! wikitext
<nowiki><div
>foo</div
></nowiki>
-!! result
+!! html
<p><div
>foo</div
>
!! test
4. extension tags
-!! input
+!! wikitext
<nowiki><ref>foo</ref></nowiki>
<nowiki><ref>bar</nowiki>
baz<nowiki></ref></nowiki>
-!! result
+!! html
<p><ref>foo</ref>
</p><p><ref>bar
</p><p>baz</ref>
#### --------------- Others ---------------
!! test
Escaping nowikis
-!! input
+!! wikitext
<nowiki>foo</nowiki>
-!! result
+!! html
<p><nowiki>foo</nowiki>
</p>
!! end
(Bug 52035) Nowiki-escaping should not get tripped by " :" in text
!! options
parsoid=wt2wt,html2wt
-!! input
+!! wikitext
foo's bar :
-!! result
+!! html
<p>foo's bar :</p>
!! end
!! test
Tag-like HTML structures are passed through as text
-!! input
+!! wikitext
<x y>
<x.y>
a>b
1<d e>f
-!! result
+!! html
<p><x y>
</p><p><x.y>
</p><p><x-y>
# https://bugzilla.wikimedia.org/show_bug.cgi?id=17663)
!! test
Tag names followed by punctuation should not be recognized as tags
-!! input
+!! wikitext
<s.ome> text
-!! result
+!! html
<p><s.ome> text
</p>
!! end
!! test
HTML tag with necessary entities in attributes
-!! input
+!! wikitext
<span title="&amp;">foo</span>
-!! result
+!! html
<p><span title="&amp;">foo</span>
</p>
!! end
!! test
HTML tag with 'unnecessary' entity encoding in attributes
-!! input
+!! wikitext
<span title="&">foo</span>
-!! result
+!! html
<p><span title="&">foo</span>
</p>
!! end
!! test
HTML tag with broken attribute value quoting
-!! input
+!! wikitext
<span title="Hello world>Foo</span>
-!! result
+!! html
<p><span>Foo</span>
</p>
!! end
Parsoid-only: HTML tag with broken attribute value quoting
!! options
parsoid
-!! input
+!! wikitext
<span title="Hello world>Foo</span>
-!! result
+!! html
<p><span title="Hello world">Foo</span>
</p>
!! end
!! test
Table with broken attribute value quoting
-!! input
+!! wikitext
{|
| title="Hello world|Foo
|}
-!! result
+!! html
<table>
<tr>
<td>Foo
!! test
Table with broken attribute value quoting on consecutive lines
-!! input
+!! wikitext
{|
| title="Hello world|Foo
| style="color:red|Bar
|}
-!! result
+!! html
<table>
<tr>
<td>Foo
Parsoid-only: Table with broken attribute value quoting on consecutive lines
!! options
parsoid
-!! input
+!! wikitext
{|
| title="Hello world|Foo
| style="color:red|Bar
|}
-!! result
+!! html
<table><tbody>
<tr>
<td title="Hello world">Foo
Parsoid-only: Don't wrap broken template tags in <nowiki> on wt2wt (Bug 42353)
!! options
parsoid
-!! input
+!! wikitext
{{}}
-!! result
+!! html
{{}}
!! end
Parsoid-only: Don't wrap broken template tags in <nowiki> on wt2wt (Bug 42353)
!! options
parsoid
-!! input
+!! wikitext
}}{{
-!! result
+!! html
}}{{
!! end
!!test
Accept empty td cell attribute
-!!input
+!! wikitext
{|
| align="center" | foo || |
|}
-!!result
+!! html
<table>
<tr>
<td align="center"> foo </td>
!!test
Non-empty attributes in th-cells
-!!input
+!! wikitext
{|
! Foo !! style="color: red" | Bar
|}
-!!result
+!! html
<table>
<tr>
<th> Foo </th>
!!test
Accept empty attributes in th-cells
-!!input
+!! wikitext
{|
!| foo !!| bar
|}
-!!result
+!! html
<table>
<tr>
<th> foo </th>
!!test
Empty table rows go away
-!!input
+!! wikitext
{|
| Hello
| there
|- class="foo"
|-
|}
-!! result
+!! html
<table>
<tr>
<td> Hello
!!test
RT-ed inter-element separators should be valid separators
-!!input
+!! wikitext
{|
|- [[foo]]
|}
-!!result
+!! html
<table>
</table>
(Parsoid-only since PHP parser relies on Tidy for correct output)
!!options
parsoid
-!!input
+!! wikitext
{|
|<small>foo
bar
{|
|<small>foo<small>
|}
-!!result
+!! html
!!end
!!test
Empty TD followed by TD with tpl-generated attribute
-!!input
+!! wikitext
{|
|-
|
|{{echo|style='color:red'}}|foo
|}
-!!result
+!! html
<table>
<tr>
!!test
Indented table with an empty td
-!!input
+!! wikitext
{|
|-
|
|foo
|}
-!!result
+!! html
<table>
<tr>
(Parsoid-specific since PHP parser doesn't handle this mixed tbl-wikitext)
!!options
parsoid
-!!input
+!! wikitext
{|
|-
{{echo|<tr><td>foo</td></tr>}}
|}
-!!result
+!! html
<table>
<tbody>
<tr></tr>
Empty TR followed by mixed-ws-comment line should RT correctly
!!options
parsoid
-!!input
+!! wikitext
{|
|-
<!--c-->
|-
<!--c--> <!--d-->
|}
-!!result
+!! html
<table>
<tbody>
<tr></tr>
Multi-line image caption generated by templates with/without trailing newlines
!!options
parsoid
-!!input
+!! wikitext
[[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
+!! html
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=Special:Upload&wpDestFile=Foo.jpg" class="new" title="File:Foo.jpg">File:Foo.jpg</a> <div class="thumbcaption">foo\nA\nB\nC</div></div></div>
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=Special:Upload&wpDestFile=Foo.jpg" class="new" title="File:Foo.jpg">File:Foo.jpg</a> <div class="thumbcaption">foo\nA\nB\nC\n\n</div></div></div>
Improperly nested inline or quotes tags with whitespace in between
!!options
parsoid
-!!input
+!! wikitext
<span> <s>x</span> </s>
''' ''x''' ''
-!!result
+!! html
<p><span> <s>x</s></span><s> </s>
<b> <i>x</i></b><i> </i>
</p>
Encapsulate protected attributes from wt
!!options
parsoid
-!!input
+!! wikitext
<div typeof="mw:placeholder stuff" data-parsoid="weird" data-parsoid-other="no" about="time" rel="mw:true">foo</div>
-!!result
+!! html
<body><div data-x-typeof="mw:placeholder stuff" data-x-data-parsoid="weird" data-x-data-parsoid-other="no" data-x-about="time" data-x-rel="mw:true">foo</div>
</body>
!!end
Ensure ParagraphWrapper can deal with stray closing pre tags
!!options
parsoid=wt2html
-!!input
+!! wikitext
plain text</pre>
-!!result
+!! html
plain text
!!end
1. Ensure fostered text content is wrapped in spans
!!options
parsoid=wt2html
-!!input
+!! wikitext
<table>hi</table><table>ho</table>
-!!result
+!! html
<span>hi</span>
<table></table>
<span>ho</span>
2. Ensure fostered text content is wrapped in spans (traps regressions around fostered marker on the span getting lost)
!!options
parsoid=wt2html,wt2wt
-!!input
+!! wikitext
<table>
<tr> || ||
<td> a
</table>
-!!result
+!! html
<span> || ||</span>
<table>
<tbody>
Encapsulation properly handles null DSR information from foster box
!!options
parsoid=wt2html,wt2wt
-!!input
+!! wikitext
{{echo|<table>foo<tr><td>bar</td></tr></table>}}
-!!result
+!! html
<span typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"
<table>foo
<tr>
1. Encapsulate foster-parented transclusion content
!!options
parsoid=wt2wt,wt2html
-!!input
+!! wikitext
<table>{{echo|foo<tr><td>bar</td></tr>}}</table>
-!!result
+!! html
<span typeof="mw:Transclusion" data-mw="{"parts":["
<table>",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo
<tr>
2. Encapsulate foster-parented transclusion content
!!options
parsoid=wt2wt,wt2html
-!!input
+!! wikitext
<table><div>{{echo|foo}}</div><tr><td>bar</td></tr></table>
-!!result
+!! html
<div typeof="mw:Transclusion" data-mw="{"parts":["
<table>
<div>",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}},"</div>
3. Encapsulate foster-parented transclusion content
!!options
parsoid=wt2wt,wt2html
-!!input
+!! wikitext
<table><div><p>{{echo|foo</p></div><tr><td>}}bar</td></tr></table>
-!!result
+!! html
<div typeof="mw:Transclusion" data-mw="{"parts":["
<table>
<div>
4. Encapsulate foster-parented transclusion content
!!options
parsoid=wt2wt,wt2html
-!!input
+!! wikitext
<table><div><p>{{echo|foo</p></div><tr><td>}}bar</td></tr></table>
-!!result
+!! html
<div typeof="mw:Transclusion" data-mw="{"parts":["
<table>
<div>
5. Encapsulate foster-parented transclusion content
!!options
parsoid=wt2wt,wt2html
-!!input
+!! wikitext
<table><tr><td><div><p>{{echo|foo</p></div></td>foo}}</tr></table>
-!!result
+!! html
<span typeof="mw:Transclusion" data-mw="{"parts":["
<table>
<tr>
6. Encapsulate foster-parented transclusion content
!!options
parsoid=wt2wt,wt2html
-!!input
+!! wikitext
<table><tr><td><div><p>{{echo|foo</p></div></td>foo</tr></table>}}<p>ok</p>
-!!result
+!! html
<span typeof="mw:Transclusion" data-mw="{"parts":["
<table>
<tr>
7. Encapsulate foster-parented transclusion content
!!options
parsoid=wt2wt,wt2html
-!!input
+!! wikitext
<table>{{echo|<p>foo</p>}}<td>bar</td></table>
-!!result
+!! html
<p typeof="mw:Transclusion" data-mw="{"parts":["
<table>",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"
<p>foo</p>"}},"i":0}},"
8. Encapsulate foster-parented transclusion content
!!options
parsoid=wt2wt,wt2html
-!!input
+!! wikitext
{{echo|a
}}{|{{echo|style='color:red'}}
|-
|b
|}
-!!result
+!! html
<p typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a\n"}},"i":0}}]}">a</p><span typeof="mw:Transclusion" data-mw="{"parts":["{|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"style":{"wt":"'color:red'"}},"i":0}},"\n|-\n|b\n|}"]}">{{{1}}}</span>
<table>
<tbody>
Table in fosterable position
!!options
parsoid=wt2html,wt2wt
-!!input
+!! wikitext
{{OpenTable}}
<div>
{|
|}
</div>
|}
-!!result
+!! html
<div about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"OpenTable","href":"./Template:OpenTable"},"params":{},"i":0}},"\n<div>"]}' data-parsoid='{"stx":"html","autoInsertedEnd":true,"pi":[[]]}'></div><span about="#mwt1" data-parsoid="{}">
</span>
<table about="#mwt1" data-parsoid='{"autoInsertedEnd":true}'></table>
Support <object> element with .data attribute
!!options
parsoid=html2wt
-!!input
+!! wikitext
<object data="test.swf"></object>
-!!result
+!! html
<object data="test.swf"></object>
!!end
Image: Modifying size of an image (1)
!! options
parsoid=html2wt
-!! input
+!! wikitext
[[Image:Foobar.jpg|200x200px]]
-!! result
+!! html
<p><span typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"230x230px"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/230px-Foobar.jpg" height="22" width="200" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"26","width":"230"},"sa":{"resource":"Image:Foobar.jpg"}}'/></a></span></p>
!!end
Image: Modifying size of an image (2)
!! options
parsoid=html2wt
-!! input
+!! wikitext
[[Image:Foobar.jpg|500x500px]]
-!! result
+!! html
<p><span typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"230x230px"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/230px-Foobar.jpg" height="100" width="500" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"26","width":"230"},"sa":{"resource":"Image:Foobar.jpg"}}'/></a></span></p>
!!end
Image: Modifying alignment of an image (bug 48665)
!! options
parsoid=html2wt
-!! input
+!! wikitext
[[Image:Foobar.jpg|thumb|caption|left]]
-!! result
+!! html
<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"caption"},{"ck":"right","ak":"right"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" height="20" width="180" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"20","width":"180"},"sa":{"resource":"Image:Foobar.jpg"}}'/></a><figcaption>caption</figcaption></figure>
!! end
Image: Modifying valign of an image (bug 49221)
!! options
parsoid=html2wt
-!! input
+!! wikitext
[[File:Foobar.jpg|20px|text-top]]
-!! result
+!! html
<p><span class="mw-valign-text-top" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"20px"},{"ck":"text_top","ak":"text-top"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" height="2" width="20" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"2","width":"20"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></span></p>
!! end
Image: Modifying alt attribute of an image (bug 56400)
!! options
parsoid=html2wt
-!! input
+!! wikitext
[[File:Foobar.jpg|thumb|some caption|alt=some alternate edited text]]
-!! result
+!! html
<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"some caption"},{"ck":"alt","ak":"alt=some alternate text"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img alt="some alternate edited text" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" height="20" width="180" data-parsoid='{"a":{"alt":"some alternate edited text","resource":"./File:Foobar.jpg","height":"20","width":"180"},"sa":{"alt":"alt=some alternate edited text","resource":"File:Foobar.jpg"}}'/></a><figcaption>some caption</figcaption></figure>
!!end
Image: Modifying caption of an image
!! options
parsoid=html2wt
-!! input
+!! wikitext
[[Image:Foobar.jpg|thumb|new caption]]
-!! result
+!! html
<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"original caption"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" height="20" width="180" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"20","width":"180"},"sa":{"resource":"Image:Foobar.jpg"}}'/></a><figcaption>new caption</figcaption></figure>
!!end
Image: empty alt attribute (bug 48924)
!! options
parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|thumb|alt=|bar]]
-!! result
+!! html
<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"alt","ak":"alt="},{"ck":"caption","ak":"bar"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img alt="" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" height="25" width="220" data-parsoid='{"a":{"alt":"","resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"alt":"alt=","resource":"File:Foobar.jpg"}}'/></a><figcaption>bar</figcaption></figure>
!! end
Image: Block level image should have \n before and after
!! options
parsoid
-!! input
+!! wikitext
123
[[File:Foobar.jpg|right|thumb|150x150px]]
456
-!! result
+!! html
<p>123</p><figure typeof="mw:Image/Thumb" class="mw-halign-right"><a href="./File:Foobar.png"><img src="http://192.168.142.128/mw/images/thumb/b/bc/Foobar.png/131px-Foobar.png" width="131" height="150" resource="./File:Foobar.png" data-parsoid='{"a":{"resource":"./File:Foobar.png","width":"131"},"sa":{"resource":"File:Foobar.png","width":"150"}}'></a></figure><p>456</p>
!!end
content)
!! options
parsoid
-!! input
+!! wikitext
123
[[File:Foobar.jpg|right|thumb|150x150px]]
456
-!! result
+!! html
<p data-parsoid='{"dsr":[0,3,0,0]}'>123</p>
<figure class="mw-halign-right" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"right","ak":"right"},{"ck":"thumbnail","ak":"thumb"},{"ck":"width","ak":"150x150px"}],"dsr":[4,45,2,2]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"dsr":[6,43,null,null]}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/150px-Foobar.jpg" height="17" width="150" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"17","width":"150"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure>
<p data-parsoid='{"dsr":[46,49,0,0]}'>456</p>
Images: upright option (parsoid)
!! options
parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|thumb|upright|caption]]
[[File:Foobar.jpg|thumb|upright=0.5|caption]]
[[File:Foobar.jpg|thumb|500x500px|upright=0.5|caption]]
-!! result
+!! html
<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="19" width="170"/></a><figcaption>caption</figcaption></figure><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="19" width="170"/></a><figcaption>caption</figcaption></figure><figure typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="57" width="500"/></a><figcaption>caption</figcaption></figure>
!!end
Images: upright option is ignored on inline and frame images (parsoid)
!! options
parsoid
-!! input
+!! wikitext
[[File:Foobar.jpg|500x500px|upright=0.5|caption]]
-!! result
+!! html
<p><span typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="57" width="500"/></a></span></p>
!!end
Lists: Serialize correctly even when list content is wrapped in p-tags (like VE does)
!! options
parsoid=html2wt
-!! input
+!! wikitext
* foo
-!! result
+!! html
<ul>
<li><p>foo</p></li>
</ul>
Lists: Serialize correctly even when list tags has unneeded whitespace between tags
!! options
parsoid=html2wt
-!! input
+!! wikitext
* foo
-!! result
+!! html
<ul> <li>foo</li></ul>
!! end
Don't strip leading whitespace when handling indent-pre suppressing tags
!! options
parsoid=html2wt
-!! input
+!! wikitext
{|
| indented row
|}
</blockquote>
foo
<div>bar</div>
-!! result
+!! html
<table>
<tr><td> indented row</td></tr>
</table>
Strip leading whitespace when handling indent-pre inducing tags
!! options
parsoid=html2wt
-!! input
+!! wikitext
foo
<span>bar</span>
<div>
<span>foo</span>
</div>
-!! result
+!! html
<p>foo</p>
<span>bar</span>
Lists: Add space after bullets
!! options
parsoid=html2wt
-!! input
+!! wikitext
* foo
* bar
* <span> baz</span>
-!! result
+!! html
<ul>
<li>foo</li>
<li> bar</li>
</ul>
!! end
+!! test
+Lists: Dont insert newlines in a serialized list item.
+!! options
+parsoid=html2wt
+!! wikitext
+* a<br>b
+* c
+!! html
+<ul><li>a<br>b</li><li>c</li></ul>
+!! end
+
!! test
Headings: Add space before/after == (Bug 51744)
!! options
parsoid=html2wt
-!! input
+!! wikitext
== foo ==
== bar ==
== baz ==
== <span> baz</span> ==
-!! result
+!! html
<h2>foo</h2>
<h2> bar</h2>
<h2>baz </h2>
Parsoid: Serialize positional parameters with = in them as named parameter
!! options
parsoid=html2wt
-!! input
+!! wikitext
{{echo|1 = f=oo}}
{{echo|1 = f=oo|2 = bar}}
<!--Orig params with data-parsoid has heuristics for handling = chars-->
<!--FIXME: But maybe the heuristic needs fixing to apply to new params as well-->
{{echo|<nowiki>f=oo</nowiki>|bar}}
-!! result
+!! html
<p about="#mwt1" typeof="mw:Transclusion"
data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"f=oo"}},"i":0}}]}'>foo</p>
Parsoid: Correctly serialize block-node children when they are a combination of text and p-nodes
!! options
parsoid=html2wt
-!! input
+!! wikitext
<div>a
b
</div>
b
</div>
-!! result
+!! html
<div>a<p>b</p></div>
<div>a
<p>b</p></div>
1. I/B quote minimization: wikitext-only tags should be combined
!! options
parsoid=html2wt
-!! input
+!! wikitext
''AB''
'''AB'''
'''''AB'''''
'''''AB'''''
-!! result
+!! html
<p><i>A</i><i>B</i></p>
<p><b>A</b><b>B</b></p>
<p><i>A</i><b><i>B</i></b></p>
2. I/B quote minimization: wikitext and html tags should not be combined
!! options
parsoid=html2wt
-!! input
+!! wikitext
''A''<i>B</i>
''A'''''<i>B</i>'''
-!! result
+!! html
<p><i>A</i><i data-parsoid='{"stx":"html"}'>B</i></p>
<p><i>A</i><b><i data-parsoid='{"stx":"html"}'>B</i></b></p>
!! end
3. I/B quote minimization: templated content stops minimization
!! options
parsoid=html2wt
-!! input
+!! wikitext
''A''{{echo|''B''}}
''A''{{echo|'''''B'''''}}
-!! result
+!! html
<p><i>A</i><i about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"''B''"}},"i":0}}]}'>B</i>
<p><i>A</i><b about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"'''''B'''''"}},"i":0}}]}'><i>B</i></b>
!! end
4. I/B quote minimization: new content should be mimimized with adjacent old content
!! options
parsoid=html2wt
-!! input
+!! wikitext
''AB''
'''AB'''
''A'''B'''''
-!! result
+!! html
<p><i>A</i><i data-parsoid='{}'>B</i></p>
<p><b data-parsoid='{}'>A</b><b>B</b></p>
<p><i>A</i><b data-parsoid='{}'><i data-parsoid='{}'>B</i></b></p>
Bug 54262: New entities
!! options
parsoid=html2wt
-!! input
+!! wikitext
foo
-!! result
+!! html
<span typeof="mw:Entity">foo</span>
!! end
Magic words
!! options
parsoid=html2wt
-!! input
+!! wikitext
__TOC__
__NOTOC__
__FORCETOC__
__NOEDITSECTION__
__NOTITLECONVERT__
__NOCONTENTCONVERT__
-!! result
+!! html
<meta property='mw:PageProp/toc' />
<meta property='mw:PageProp/notoc' />
<meta property='mw:PageProp/forcetoc' />
Consecutive <pre>s should not get merged
!! options
parsoid=html2wt,html2html
-!! input
+!! wikitext
a
b
f
-!! result
+!! html
<pre>a</pre><pre>b</pre>
<pre>c
Edited ISBN links not serializable as ISBN links should serialize as wikilinks
!! options
parsoid=html2wt
-!! input
+!! wikitext
[[Special:BookSources/1234567890|ISBN 1234567895]]
-!! result
+!! html
<a rel="mw:ExtLink" href="./Special:BookSources/1234567890">ISBN 1234567895</a>
!! end
Edited RFC links not serializable as RFC links should serialize as extlinks
!! options
parsoid=html2wt
-!! input
+!! wikitext
[//tools.ietf.org/html/rfc123 New RFC]
-!! result
+!! html
<a href="//tools.ietf.org/html/rfc123" rel="mw:ExtLink">New RFC</a>
!! end
Edited PMID links not serializable as PMID links should serialize as extlinks
!! options
parsoid=html2wt
-!! input
+!! wikitext
[//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract New PMID]
-!! result
+!! html
<a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink">New PMID</a>
!! end
Edited Redirect link should emit a non-piped wikitext link
!! options
parsoid=html2wt
-!! input
+!! wikitext
#REDIRECT [[Bar]]
-!! result
+!! html
<link rel="mw:PageProp/redirect" href="Bar" data-parsoid='{"src":"#REDIRECT ","a":{"href":"./Foo"},"sa":{"href":"Foo"}}'>
!! end