wiki.techinc.nl/maintenance/parserTests.txt

1776 lines
38 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MediaWiki Parser test cases
# Some taken from http://meta.wikimedia.org/wiki/Parser_testing
# All (C) their respective authors and released under the GPL
# $Id$
#
# The syntax should be fairly self-explanatory.
#
# Currently supported test options:
# One of the following three:
#
# (default) generate HTML output
# pst apply pre-save transform
# msg apply message transform
#
# Plus any combination of these:
#
# cat add category links
# ill add inter-language links
# subpage enable subpages (disabled by default)
# title=[[XXX]] run test using article title XXX
# disabled do not run test
#
# For testing purposes, temporary articles can created:
# !!article / NAMESPACE:TITLE / !!text / ARTICLE TEXT / !!endarticle
# where '/' denotes a newline.
# This is the standard article assumed to exist.
!! article
Main Page
!! text
blah blah
!! endarticle
###
### Basic tests
###
!! test
Blank input
!! input
!! result
!! end
!! test
Simple paragraph
!! input
This is a simple paragraph.
!! result
<p>This is a simple paragraph.
</p>
!! end
!! test
Simple list
!! input
* Item 1
* Item 2
!! result
<ul><li> Item 1
</li><li> Item 2
</li></ul>
!! end
!! test
Italics and bold
!! input
* plain
* plain''italic''plain
* plain''italic''plain''italic''plain
* plain'''bold'''plain
* plain'''bold'''plain'''bold'''plain
* plain''italic''plain'''bold'''plain
* plain'''bold'''plain''italic''plain
* plain''italic'''bold-italic'''italic''plain
* plain'''bold''bold-italic''bold'''plain
* plain'''''bold-italic'''italic''plain
* plain'''''bold-italic''bold'''plain
* plain''italic'''bold-italic'''''plain
* plain'''bold''bold-italic'''''plain
* plain l'''italic''plain
!! result
<ul><li> plain
</li><li> plain<i>italic</i>plain
</li><li> plain<i>italic</i>plain<i>italic</i>plain
</li><li> plain<b>bold</b>plain
</li><li> plain<b>bold</b>plain<b>bold</b>plain
</li><li> plain<i>italic</i>plain<b>bold</b>plain
</li><li> plain<b>bold</b>plain<i>italic</i>plain
</li><li> plain<i>italic<b>bold-italic</b>italic</i>plain
</li><li> plain<b>bold<i>bold-italic</i>bold</b>plain
</li><li> plain<i><b>bold-italic</b>italic</i>plain
</li><li> plain<b><i>bold-italic</i>bold</b>plain
</li><li> plain<i>italic<b>bold-italic</b></i>plain
</li><li> plain<b>bold<i>bold-italic</i></b>plain
</li><li> plain l'<i>italic</i>plain
</li></ul>
!! end
###
### <nowiki> test cases
###
!! test
<nowiki> unordered list
!! input
<nowiki>* This is not an unordered list item.</nowiki>
!! result
<p>* This is not an unordered list item.
</p>
!! end
!! test
<nowiki> spacing
!! input
<nowiki>Lorem ipsum dolor
sed abit.
sed nullum.
:and a colon
</nowiki>
!! result
<p>Lorem ipsum dolor
sed abit.
sed nullum.
:and a colon
</p>
!! end
!! test
nowiki 3
!! input
:There is not nowiki.
:There is <nowiki>nowiki</nowiki>.
#There is not nowiki.
#There is <nowiki>nowiki</nowiki>.
*There is not nowiki.
*There is <nowiki>nowiki</nowiki>.
!! result
<dl><dd>There is not nowiki.
</dd><dd>There is nowiki.
</dd></dl>
<ol><li>There is not nowiki.
</li><li>There is nowiki.
</li></ol>
<ul><li>There is not nowiki.
</li><li>There is nowiki.
</li></ul>
!! end
###
### comment test cases
###
!! test
Comment test 1
!! input
<!-- comment 1 --> asdf
<!-- comment 2 -->
!! result
<pre>asdf
</pre>
!! end
!! test
Comment test 2
!! input
asdf
<!-- comment 1 -->
jkl
!! result
<p>asdf
jkl
</p>
!! end
!! test
Comment test 3
!! input
asdf
<!-- comment 1 -->
<!-- comment 2 -->
jkl
!! result
<p>asdf
jkl
</p>
!! end
!! test
Comment test 4
!! input
asdf<!-- comment 1 -->jkl
!! result
<p>asdfjkl
</p>
!! end
!! test
Comment spacing
!! input
a
<!-- foo --> b <!-- bar -->
c
!! result
<p>a
</p>
<pre> b
</pre>
<p>c
</p>
!! end
###
### Preformatted text
###
!! test
Preformatted text
!! input
This is some
Preformatted text
With ''italic''
And '''bold'''
And a [[Main Page|link]]
!! result
<pre>This is some
Preformatted text
With <i>italic</i>
And <b>bold</b>
And a <a href="/wiki/Main_Page" title="Main Page">link</a>
</pre>
!! end
###
### Definition list
###
!! test
Simple definition
!! input
; name : Definition
!! result
<dl><dt> name&nbsp;</dt><dd> Definition
</dd></dl>
!! end
!! test
Simple definition
!! input
: Indented text
!! result
<dl><dd> Indented text
</dd></dl>
!! end
!! test
Definition list with no space
!! input
;name:Definition
!! result
<dl><dt>name</dt><dd>Definition
</dd></dl>
!!end
!! test
Definition list with URL link
!! input
; http://example.com/ : definition
!! result
<dl><dt> <a href="http://example.com/" class='external'>http://example.com/</a>&nbsp;</dt><dd> definition
</dd></dl>
!! end
!! test
Definition list with bracketed URL link
!! input
;[http://www.google.com/ Google]:Number one search engine
!! result
<dl><dt><a href="http://www.google.com/" class='external' title="http://www.google.com/">Google</a><span class='urlexpansion'> (<i>http://www.google.com/</i>)</span></dt><dd>Number one search engine
</dd></dl>
!! end
!! test
Definition list with wikilink containing colon
!! input
; [[Wikipedia:FAQ]]: The least-read page on Wikipedia
!! result
<dl><dt> <a href="http://en.wikipedia.org/wiki/FAQ" class='extiw'>Wikipedia:FAQ</a></dt><dd> The least-read page on Wikipedia
</dd></dl>
!! end
# At Brion's and JeLuF's insistence... :)
!! test
Definition list with wikilink containing colon
!! input
; news:alt.wikipedia.rox: This isn't even a real newsgroup!
!! result
<dl><dt> <a href="news:alt.wikipedia.rox" class='external'>news:alt.wikipedia.rox</a></dt><dd> This isn't even a real newsgroup!
</dd></dl>
!! end
!! test
Malformed definition list with colon
!! input
; news:alt.wikipedia.rox -- don't crash or enter an infinite loop
!! result
<dl><dt> <a href="news:alt.wikipedia.rox" class='external'>news:alt.wikipedia.rox</a> -- don't crash or enter an infinite loop
</dt></dl>
!! end
!! test
Definition lists: colon in external link text
!! input
; [http://www.wikipedia2.org/ Wikipedia : The Next Generation]: OK, I made that up
!! result
<dl><dt> <a href="http://www.wikipedia2.org/" class='external' title="http://www.wikipedia2.org/">Wikipedia&nbsp;: The Next Generation</a><span class='urlexpansion'> (<i>http://www.wikipedia2.org/</i>)</span></dt><dd> OK, I made that up
</dd></dl>
!! end
###
### External links
###
!! test
External links: non-bracketed
!! input
Non-bracketed: http://example.com
!! result
<p>Non-bracketed: <a href="http://example.com" class='external'>http://example.com</a>
</p>
!! end
!! test
External links: numbered
!! input
Numbered: [http://example.com]
!! result
<p>Numbered: <a href="http://example.com" class='external' title="http://example.com">[1]</a><span class='urlexpansion'> (<i>http://example.com</i>)</span>
</p>
!!end
!! test
External links: specified text
!! input
Specified text: [http://example.com link]
!! result
<p>Specified text: <a href="http://example.com" class='external' title="http://example.com">link</a><span class='urlexpansion'> (<i>http://example.com</i>)</span>
</p>
!!end
!! test
External links: trail
!! input
Trail (not sure if this is meant to work): [http://example.com link]s
!! result
<p>Trail (not sure if this is meant to work): <a href="http://example.com" class='external' title="http://example.com">link</a>s<span class='urlexpansion'> (<i>http://example.com</i>)</span>
</p>
!! end
!! test
External links: dollar sign in URL
!! input
http://example.com/1$2345
!! result
<p><a href="http://example.com/1$2345" class='external'>http://example.com/1$2345</a>
</p>
!! end
!! test
External links: dollar sign in URL (named)
!! input
[http://example.com/1$2345]
!! result
<p><a href="http://example.com/1$2345" class='external' title="http://example.com/1$2345">[1]</a><span class='urlexpansion'> (<i>http://example.com/1$2345</i>)</span>
</p>
!!end
!! test
External image
!! input
External image: http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png
!! result
<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
External image from https: https://meta.wikimedia.org/upload/f/f1/Ncwikicol.png
!! result
<p>External image from https: <img src="https://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" />
</p>
!! end
!! test
Link to non-http image, no img tag
!! input
Link to non-http image, no img tag: ftp://example.com/test.jpg
!! result
<p>Link to non-http image, no img tag: <a href="ftp://example.com/test.jpg" class='external'>ftp://example.com/test.jpg</a>
</p>
!! end
!! test
External links: terminating separator
!! input
Terminating separator: http://example.com/thing,
!! result
<p>Terminating separator: <a href="http://example.com/thing" class='external'>http://example.com/thing</a>,
</p>
!! end
!! test
External links: intervening separator
!! input
Intervening separator: http://example.com/1,2,3
!! result
<p>Intervening separator: <a href="http://example.com/1,2,3" class='external'>http://example.com/1,2,3</a>
</p>
!! end
!! test
External links: old bug with URL in query
!! input
Old bug with URL in query: [http://example.com/thing?url=http://example.com link]
!! result
<p>Old bug with URL in query: <a href="http://example.com/thing?url=http://example.com" class='external' title="http://example.com/thing?url=http://example.com">link</a><span class='urlexpansion'> (<i>http://example.com/thing?url=http://example.com</i>)</span>
</p>
!! end
!! test
External links: old URL-in-URL bug, mixed protocols
!! input
And again with mixed protocols: [ftp://example.com?url=http://example.com link]
!! result
<p>And again with mixed protocols: <a href="ftp://example.com?url=http://example.com" class='external' title="ftp://example.com?url=http://example.com">link</a><span class='urlexpansion'> (<i>ftp://example.com?url=http://example.com</i>)</span>
</p>
!!end
!! test
External links: URL in text
!! input
URL in text: [http://example.com http://example.com]
!! result
<p>URL in text: <a href="http://example.com" class='external'>http://example.com</a>
</p>
!! end
!! test
External links: Clickable images
!! input
ja-style clickable images: [http://example.com http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png]
!! result
<p>ja-style clickable images: <a href="http://example.com" class='external' title="http://example.com"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" /></a><span class='urlexpansion'> (<i>http://example.com</i>)</span>
</p>
!!end
!! test
External links: raw ampersand
!! input
Old &amp; use: http://x&y
!! result
<p>Old &amp; use: <a href="http://x&amp;y" class='external'>http://x&amp;y</a>
</p>
!! end
!! test
External links: www.jpeg.org (bug 554)
!! input
http://www.jpeg.org
!!result
<p><a href="http://www.jpeg.org" class='external'>http://www.jpeg.org</a>
</p>
!! end
!! test
External links: URL within URL (original bug 2)
!! input
[http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp]
!! result
<p><a href="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp" class='external' title="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp">[1]</a><span class='urlexpansion'> (<i>http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp</i>)</span>
</p>
!! end
!! test
BUG 361: URL inside bracketed URL
!! input
[http://www.example.com/foo http://www.example.com/bar]
!! result
<p><a href="http://www.example.com/foo" class='external' title="http://www.example.com/foo">http://www.example.com/bar</a><span class='urlexpansion'> (<i>http://www.example.com/foo</i>)</span>
</p>
!! end
!! test
BUG 289: ">"-token in URL-tail
!! input
http://www.example.com/<hello>
!! result
<p><a href="http://www.example.com/" class='external'>http://www.example.com/</a>&lt;hello&gt;
</p>
!!end
!! test
BUG 289: literal ">"-token in URL-tail
!! input
http://www.example.com/<b>html</b>
!! result
<p><a href="http://www.example.com/" class='external'>http://www.example.com/</a><b >html</b >
</p>
!!end
!! test
BUG 289: ">"-token in bracketed URL
!! input
[http://www.example.com/<hello> stuff]
!! result
<p><a href="http://www.example.com/" class='external' title="http://www.example.com/">&lt;hello&gt; stuff</a><span class='urlexpansion'> (<i>http://www.example.com/</i>)</span>
</p>
!!end
!! test
BUG 289: literal ">"-token in bracketed URL
!! input
[http://www.example.com/<b>html</b> stuff]
!! result
<p><a href="http://www.example.com/" class='external' title="http://www.example.com/"><b >html</b > stuff</a><span class='urlexpansion'> (<i>http://www.example.com/</i>)</span>
</p>
!!end
!! test
BUG 289: literal double quote at end of URL
!! input
http://www.example.com/"hello"
!! result
<p><a href="http://www.example.com/" class='external'>http://www.example.com/</a>"hello"
</p>
!!end
!! test
BUG 289: literal double quote in bracketed URL
!! input
[http://www.example.com/"hello" stuff]
!! result
<p><a href="http://www.example.com/" class='external' title="http://www.example.com/">"hello" stuff</a><span class='urlexpansion'> (<i>http://www.example.com/</i>)</span>
</p>
!!end
!! test
External links: invalid character
!! input
[http://www.example.com test]
!! result
<p>[<a href="http://www.example.com" class='external'>http://www.example.com</a> test]
</p>
!! end
###
### Quotes
###
!! test
Quotes
!! input
Normal text. '''Bold text.''' Normal text. ''Italic text.''
Normal text. '''''Bold italic text.''''' Normal text.
!!result
<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
!! test
Unclosed and unmatched quotes
!! input
'''''Bold italic text '''with bold deactivated''' in between.'''''
'''''Bold italic text ''with italic deactivated'' in between.'''''
'''Bold text..
..spanning two paragraphs (should not work).'''
'''Bold tag left open
''Italic tag left open
Normal text.
<!-- Unmatching number of opening, closing tags: -->
'''This year''''s election ''should'' beat '''last year''''s.
''Tom'''s car is bigger than ''Susan'''s.
!! result
<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>..spanning two paragraphs (should not work).<b></b>
</p><p><b>Bold tag left open</b>
</p><p><i>Italic tag left open</i>
</p><p>Normal text.
</p><p><b>This year'</b>s election <i>should</i> beat <b>last year'</b>s.
</p><p><i>Tom<b>s car is bigger than </b></i><b>Susan</b>s.
</p>
!! end
###
### Tables
###
### content taken from http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide:_Using_tables
###
!! test
Simple table
!! input
{|
| 1 || 2
|-
| 3 || 4
|}
!! result
<table >
<tr >
<td> 1 </td><td> 2
</td></tr>
<tr >
<td> 3 </td><td> 4
</td></tr></table>
!! end
!! test
Multiplication table
!! input
{| border="1" cellpadding="2"
|+Multiplication table
|-
! &times; !! 1 !! 2 !! 3
|-
! 1
| 1 || 2 || 3
|-
! 2
| 2 || 4 || 6
|-
! 3
| 3 || 6 || 9
|-
! 4
| 4 || 8 || 12
|-
! 5
| 5 || 10 || 15
|}
!! result
<table border="1" cellpadding="2">
<caption>Multiplication table
</caption>
<tr >
<th> &times; </th><th> 1 </th><th> 2 </th><th> 3
</th></tr>
<tr >
<th> 1
</th><td> 1 </td><td> 2 </td><td> 3
</td></tr>
<tr >
<th> 2
</th><td> 2 </td><td> 4 </td><td> 6
</td></tr>
<tr >
<th> 3
</th><td> 3 </td><td> 6 </td><td> 9
</td></tr>
<tr >
<th> 4
</th><td> 4 </td><td> 8 </td><td> 12
</td></tr>
<tr >
<th> 5
</th><td> 5 </td><td> 10 </td><td> 15
</td></tr></table>
!! end
!! test
Table rowspan
!! input
{| align=right border=1
| Cell 1, row 1
|rowspan=2| Cell 2, row 1 (and 2)
| Cell 3, row 1
|-
| Cell 1, row 2
| Cell 3, row 2
|}
!! result
<table align=right border=1>
<tr >
<td> Cell 1, row 1
</td><td rowspan=2> Cell 2, row 1 (and 2)
</td><td> Cell 3, row 1
</td></tr>
<tr >
<td> Cell 1, row 2
</td><td> Cell 3, row 2
</td></tr></table>
!! end
!! test
Nested table
!! input
{| border=1
| &alpha;
|
{| bgcolor=#ABCDEF border=2
|nested
|-
|table
|}
|the original table again
|}
!! result
<table border=1>
<tr >
<td> &alpha;
</td><td>
<table bgcolor=#ABCDEF border=2>
<tr >
<td>nested
</td></tr>
<tr >
<td>table
</td></tr></table>
</td><td>the original table again
</td></tr></table>
!! end
###
### Internal links
###
!! test
Plain link, capitalized
!! input
[[Main Page]]
!! result
<p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
</p>
!! end
!! test
Plain link, uncapitalized
!! input
[[main Page]]
!! result
<p><a href="/wiki/Main_Page" title="Main Page">main Page</a>
</p>
!! end
!! test
Piped link
!! input
[[Main Page|The Main Page]]
!! result
<p><a href="/wiki/Main_Page" title="Main Page">The Main Page</a>
</p>
!! end
!! test
Broken link
!! input
[[Zigzagzogzagzig]]
!! result
<p><a href="/index.php?title=Zigzagzogzagzig&amp;action=edit" class="new" title="Zigzagzogzagzig">Zigzagzogzagzig</a>
</p>
!! end
!! test
Link with prefix
!! input
xxx[[main Page]], xxx[[Main Page]], Xxx[[main Page]] XXX[[main Page]], XXX[[Main Page]]
!! result
<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
[[Main Page]]xxx, [[Main Page]]XXX
!! result
<p><a href="/wiki/Main_Page" title="Main Page">Main Pagexxx</a>, <a href="/wiki/Main_Page" title="Main Page">Main Page</a>XXX
</p>
!! end
!! test
Link with 3 brackets
!! input
[[[main page]]]
!! result
<p>[[[main page]]]
</p>
!! end
!! test
Piped link with 3 brackets
!! input
[[[main page|the main page]]]
!! result
<p>[[[main page|the main page]]]
</p>
!! end
!! test
Link to namespaces
!! input
[[Talk:Parser testing]], [[Meta:Disclaimers]]
!! result
<p><a href="/index.php?title=Talk:Parser_testing&amp;action=edit" class="new" title="Talk:Parser testing">Talk:Parser testing</a>, <a href="/index.php?title=Meta:Disclaimers&amp;action=edit" class="new" title="Meta:Disclaimers">Meta:Disclaimers</a>
</p>
!! end
!! test
Piped link to namespace
!! input
[[Meta:Disclaimers|The disclaimers]]
!! result
<p><a href="/index.php?title=Meta:Disclaimers&amp;action=edit" class="new" title="Meta:Disclaimers">The disclaimers</a>
</p>
!! end
!! test
Link containing }
!! input
[[Usually caused by a typo (oops}]]
!! result
<p>[[Usually caused by a typo (oops}]]
</p>
!! end
!! test
Link containing % (not as a hex sequence)
!! input
[[7% Solution]]
!! result
<p><a href="/index.php?title=7%25_Solution&amp;action=edit" class="new" title="7% Solution">7% Solution</a>
</p>
!! end
!! test
Link containing % as a single hex sequence interpreted to char
!! input
[[7%25 Solution]]
!! result
<p><a href="/index.php?title=7%25_Solution&amp;action=edit" class="new" title="7% Solution">7% Solution</a>
</p>
!!end
!! test
Link containing % as a double hex sequence interpreted to hex sequence
!! input
[[7%2525 Solution]]
!! result
<p>[[7%2525 Solution]]
</p>
!!end
!! test
Plain link to URL
!! input
[[http://www.example.org]]
!! result
<p>[<a href="http://www.example.org" class='external' title="http://www.example.org">[1]</a><span class='urlexpansion'> (<i>http://www.example.org</i>)</span>]
</p>
!! end
# I'm fairly sure the expected result here is wrong.
# We want these to be URL links, not pseudo-pages with URLs for titles....
# However the current output is also pretty screwy.
#
# ----
# I'm changing it to match the current output--it arguably makes more
# sense in the light of the test above. Old expected result was:
#<p>Piped link to URL: <a href="/index.php?title=Http://www.example.org&amp;action=edit" class="new" title="Http://www.example.org">an example URL</a>
#</p>
# But I think this test is bordering on "garbage in, garbage out" anyway.
# -- wtm
!! test
Piped link to URL
!! input
Piped link to URL: [[http://www.example.org|an example URL]]
!! result
<p>Piped link to URL: [<a href="http://www.example.org|an" class='external' title="http://www.example.org|an">example URL</a><span class='urlexpansion'> (<i>http://www.example.org|an</i>)</span>]
</p>
!! end
!! test
BUG 2: [[page|http://url/]] should link to page, not http://url/
!! input
[[Main Page|http://url/]]
!! result
<p><a href="/wiki/Main_Page" title="Main Page">http://url/</a>
</p>
!! end
!! test
BUG 337: Escaped self-links should be bold
!! options
title=[[Bug462]]
!! input
[[Bu&#103;462]] [[Bug462]]
!! result
<p><strong>Bu&#103;462</strong> <strong>Bug462</strong>
</p>
!! end
!! test
Self-link to section should not be bold
!! options
title=[[Main Page]]
!! input
[[Main Page#section]]
!! result
<p><a href="/wiki/Main_Page#section" title="Main Page">Main Page#section</a>
</p>
!! end
!! test
<nowiki> inside a link
!! input
[[Main<nowiki> Page</nowiki>]] [[Main Page|the main page <nowiki>[it's not very good]</nowiki>]]
!! result
<p><a href="/wiki/Main_Page" title="Main Page">Main Page</a> <a href="/wiki/Main_Page" title="Main Page">the main page [it's not very good]</a>
</p>
!! end
###
### Interwiki links
###
!! test
Inline interwiki link
!! input
[[MeatBall:SoftSecurity]]
!! result
<p><a href="http://www.usemod.com/cgi-bin/mb.pl?SoftSecurity" class='extiw'>MeatBall:SoftSecurity</a>
</p>
!! end
##
## XHTML tidiness
###
!! test
<br> to <br />
!! input
1<br>2<br />3
!! result
<p>1<br />2<br />3
</p>
!! end
###
### Block-level elements
###
!! test
Common list
!! input
*Common list
* item 2
*item 3
!! result
<ul><li>Common list
</li><li> item 2
</li><li>item 3
</li></ul>
!! end
!! test
Numbered list
!! input
#Numbered list
#item 2
# item 3
!! result
<ol><li>Numbered list
</li><li>item 2
</li><li> item 3
</li></ol>
!! end
!! test
Mixed list
!! input
*Mixed list
*# with numbers
** and bullets
*# and numbers
*bullets again
**bullet level 2
***bullet level 3
***#Number on level 4
**bullet level 2
**#Number on level 3
**#Number on level 3
*#number level 2
*Level 1
!! result
<ul><li>Mixed list
<ol><li> with numbers
</li></ol>
<ul><li> and bullets
</li></ul>
<ol><li> and numbers
</li></ol>
</li><li>bullets again
<ul><li>bullet level 2
<ul><li>bullet level 3
<ol><li>Number on level 4
</li></ol>
</li></ul>
</li><li>bullet level 2
<ol><li>Number on level 3
</li><li>Number on level 3
</li></ol>
</li></ul>
<ol><li>number level 2
</li></ol>
</li><li>Level 1
</li></ul>
!! end
###
### Magic variables
###
!! test
Magic variables
!! input
{{SITENAME}}
!! result
<p>MediaWiki
</p>
!! end
###
### Magic links
###
!! test
Magic links: internal link to RFC
!! input
[[RFC 123]]
!! result
<p><a href="/index.php?title=RFC_123&amp;action=edit" class="new" title="RFC 123">RFC 123</a>
</p>
!! end
!! test
Magic links: RFC
!! input
RFC 822
!! result
<p><a href='http://www.faqs.org/rfcs/rfc822.html' class='external' title="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a>
</p>
!! end
!! test
Magic links: ISBN
!! input
ISBN 0-306-40615-2
!! result
<p><a href="/index.php?title=Special:Booksources&amp;isbn=0306406152" class="internal">ISBN 0-306-40615-2</a>
</p>
!! end
###
### Templates
####
!! test
Nonexistant template
!! input
{{thistemplatedoesnotexist}}
!! result
<p><a href="/index.php?title=Template:Thistemplatedoesnotexist&amp;action=edit" class="new" title="Template:Thistemplatedoesnotexist">Template:Thistemplatedoesnotexist</a>
</p>
!! end
!! article
Template:test
!! text
This is a test template
!! endarticle
!! test
Simple template
!! input
{{test}}
!! result
<p>This is a test template
</p>
!! end
!! test
Template with explicit namespace
!! input
{{Template:test}}
!! result
<p>This is a test template
</p>
!! end
!! article
Template:paramtest
!! text
This is a test template with parameter {{{param}}}
!! endarticle
!! test
Template parameter
!! input
{{paramtest|param=foo}}
!! result
<p>This is a test template with parameter foo
</p>
!! end
!! article
Template:paramtestnum
!! text
[[{{{1}}}|{{{2}}}]]
!! endarticle
!! test
Template unnamed parameter
!! input
{{paramtestnum|Main Page|the main page}}
!! result
<p><a href="/wiki/Main_Page" title="Main Page">the main page</a>
</p>
!! end
!! test
BUG 553: link with two variables in a piped link
!! input
{|
|[[{{{1}}}|{{{2}}}]]
|}
!! result
<table >
<tr >
<td>[[{{{1}}}|{{{2}}}]]
</td></tr></table>
!! end
!! test
Magic variable as template parameter
!! input
{{paramtest|param={{SITENAME}}}}
!! result
<p>This is a test template with parameter MediaWiki
</p>
!! end
!! article
Template:linktest
!! text
[[{{{param}}}|link]]
!! endarticle
!! test
Template parameter as link source
!! input
{{linktest|param=Main Page}}
!! result
<p><a href="/wiki/Main_Page" title="Main Page">link</a>
</p>
!! end
!!article
Template:paramtest2
!! text
including another template, {{paramtest|param={{{arg}}}}}
!! endarticle
!! test
Template passing argument to another template
!! input
{{paramtest2|arg='hmm'}}
!! result
<p>including another template, This is a test template with parameter 'hmm'
</p>
!! end
!! article
Template:Linktest2
!! text
Main Page
!! endarticle
!! test
Template as link source
!! input
[[{{linktest2}}]]
!! result
<p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
</p>
!! end
!! article
Template:loop1
!! text
{{loop2}}
!! endarticle
!! article
Template:loop2
!! text
{{loop1}}
!! endarticle
!! test
Template infinite loop
!! input
{{loop1}}
!! result
<p>{{loop2}}<!-- WARNING: template loop detected -->
</p>
!! end
!! test
Template from main namespace
!! input
{{:Main Page}}
!! result
<p>blah blah
</p>
!! end
!! article
Template:table
!! text
{|
| 1 || 2
|-
| 3 || 4
|}
!! endarticle
!! test
BUG 529: Template with table, not included at beginning of line
!! input
foo {{table}}
!! result
<p>foo
</p>
<table >
<tr >
<td> 1 </td><td> 2
</td></tr>
<tr >
<td> 3 </td><td> 4
</td></tr></table>
!! end
!! test
BUG 523: Template shouldn't eat newline (or add an extra one before table)
!! input
foo
{{table}}
!! result
<p>foo
</p>
<table >
<tr >
<td> 1 </td><td> 2
</td></tr>
<tr >
<td> 3 </td><td> 4
</td></tr></table>
!! end
!! test
BUG 41: Template parameters shown as broken links
!! input
{{{parameter}}}
!! result
<p>{{{parameter}}}
</p>
!! end
!! article
Template:MSGNW test
!! text
''None'' of '''this''' should be
* interepreted
but rather passed unmodified
{{test}}
!! endarticle
# hmm, fix this or just deprecate msgnw and document its behavior?
!! test
msgnw keyword
!! options
disabled
!! input
{{msgnw:MSGNW test}}
!! result
<p>''None'' of '''this''' should be
* interepreted
but rather passed unmodified
{{test}}
</p>
!! end
!! test
int keyword
!! input
{{int:newmessages|lots of money}}
!! result
<p>You have lots of money.
</p>
!! end
###
### Pre-save transform tests
###
!! test
pre-save transform: subst:
!! options
PST
!! input
{{subst:test}}
!! result
This is a test template
!! end
!! test
pre-save transform: normal template
!! options
PST
!! input
{{test}}
!! result
{{test}}
!! end
!! test
pre-save transform: nonexistant template
!! options
PST
!! input
{{thistemplatedoesnotexist}}
!! result
{{thistemplatedoesnotexist}}
!! end
!! test
pre-save transform: subst magic variables
!! options
PST
!! input
{{subst:SITENAME}}
!! result
MediaWiki
!! end
# This is bug 89, which I fixed. -- wtm
!! test
pre-save transform: subst: templates with parameters
!! options
pst
!! input
{{subst:paramtest|param="something else"}}
!! result
This is a test template with parameter "something else"
!! end
###
### Message transform tests
###
!! test
message transform: magic variables
!! options
msg
!! input
{{SITENAME}}
!! result
MediaWiki
!! end
!! test
message transform: should not transform wiki markup
!! options
msg
!! input
''test''
!! result
''test''
!! end
###
### Images
###
!! test
Simple image
!! input
[[Image:foobar.jpg]]
!! result
<p><a href="/wiki/Image:Foobar.jpg" class="image" title="Image:foobar.jpg"><img src="/images/3/3a/Foobar.jpg" alt="Image:foobar.jpg" longdesc="/wiki/Image:Foobar.jpg" /></a>
</p>
!! end
!! test
Right-aligned image
!! input
[[Image:foobar.jpg|right]]
!! result
<div class="floatright"><span><a href="/wiki/Image:Foobar.jpg" class="image" title=""><img src="/images/3/3a/Foobar.jpg" alt="" longdesc="/wiki/Image:Foobar.jpg" /></a></span></div>
!! end
!! test
Image with caption
!! input
[[Image:foobar.jpg|right|Caption text]]
!! result
<div class="floatright"><span><a href="/wiki/Image:Foobar.jpg" class="image" title="Caption text"><img src="/images/3/3a/Foobar.jpg" alt="Caption text" longdesc="/wiki/Image:Foobar.jpg" /></a></span></div>
!! end
!! test
Image with frame and link
!! input
[[Image:Foobar.jpg|frame|left|This is a test image [[Main Page]]]]
!! result
<div class="thumb tleft"><div style="width:202px;"><a href="/wiki/Image:Foobar.jpg" class="internal" title="This is a test image "><img src="/images/3/3a/Foobar.jpg" alt="This is a test image " width="200" height="200" longdesc="/wiki/Image:Foobar.jpg" /></a> <div class="thumbcaption" >This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
!! end
!! test
Link to image page
!! input
[[:Image:test]]
!! result
<p><a href="/wiki/Image:Test" title="Image:Test">Image:test</a>
</p>
!! end
!! test
Frameless image caption with a free URL
!! input
[[Image:foobar.jpg|http://example.com]]
!! result
<p><a href="/wiki/Image:Foobar.jpg" class="image" title="http://example.com"><img src="/images/3/3a/Foobar.jpg" alt="http://example.com" longdesc="/wiki/Image:Foobar.jpg" /></a>
</p>
!! end
!! test
Thumbnail image caption with a free URL
!! input
[[Image:foobar.jpg|thumb|http://example.com]]
!! result
<div class="thumb tright"><div style="width:182px;"><a href="/wiki/Image:Foobar.jpg" class="internal" title="http://example.com"><img src="/images/3/3a/Foobar.jpg" alt="http://example.com" width="180" height="180" longdesc="/wiki/Image:Foobar.jpg" /></a> <div class="thumbcaption" ><div class="magnify" style="float:right"><a href="/wiki/Image:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="Enlarge" /></a></div><a href="http://example.com" class='external'>http://example.com</a></div></div></div>
!! end
# Pending resolution to bug 368
!! test
BUG 648: Frameless image caption with a link
!! input
[[Image:foobar.jpg|text with a [[link]] in it]]
!! result
<p><a href="/wiki/Image:Foobar.jpg" class="image" title="text with a link in it"><img src="/images/3/3a/Foobar.jpg" alt="text with a link in it" longdesc="/wiki/Image:Foobar.jpg" /></a>
</p>
!! end
!! test
Escape HTML special chars in image alt text
!! input
[[Image:foobar.jpg|& < > "]]
!! result
<p><a href="/wiki/Image:Foobar.jpg" class="image" title="&amp; &lt; &gt; &quot;"><img src="/images/3/3a/Foobar.jpg" alt="&amp; &lt; &gt; &quot;" longdesc="/wiki/Image:Foobar.jpg" /></a>
</p>
!! end
!! test
BUG 499: Alt text should have &#1234;, not &amp;1234;
!! input
[[Image:foobar.jpg|&#9792;]]
!! result
<p><a href="/wiki/Image:Foobar.jpg" class="image" title="&#9792;"><img src="/images/3/3a/Foobar.jpg" alt="&#9792;" longdesc="/wiki/Image:Foobar.jpg" /></a>
</p>
!! end
!! test
Broken image caption with link
!! input
[[Image:Foobar.jpg|thumb|This is a broken caption. But [[Main Page|this]] is just an ordinary link.
!! result
<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
[[Image:Foobar.jpg|thumb|This is a caption with another [[Image:icon.png|image]] inside it!]]
!! result
<div class="thumb tright"><div style="width:182px;"><b>Missing image</b><br /><i>Foobar.jpg</i> <div class="thumbcaption" >This is a caption with another <a href="/wiki/Image:Icon.png" class="image" title="image"><img src="/images/9/96/Icon.png" alt="image" longdesc="/wiki/Image:Icon.png" /></a> inside it!</div></div></div>
!! end
###
### Subpages
###
!! article
Subpage test/subpage
!! text
foo
!! endarticle
!! test
Subpage link
!! options
subpage title=[[Subpage test]]
!! input
[[/subpage]]
!! result
<p><a href="/wiki/Subpage_test/subpage" title="Subpage test/subpage">/subpage</a>
</p>
!! end
!! test
Subpage noslash link
!! options
subpage title=[[Subpage test]]
!!input
[[/subpage/]]
!! result
<p><a href="/wiki/Subpage_test/subpage" title="Subpage test/subpage">subpage</a>
</p>
!! end
!! test
Disabled subpages
!! input
[[/subpage]]
!! result
<p><a href="/index.php?title=/subpage&amp;action=edit" class="new" title="/subpage">/subpage</a>
</p>
!! end
!! test
BUG 561: {{/Subpage}}
!! options
subpage title=[[Page]]
!! input
{{/Subpage}}
!! result
<p><a href="/index.php?title=Page/Subpage&amp;action=edit" class="new" title="Page/Subpage">Page/Subpage</a>
</p>
!! end
###
### Categories
###
!! article
Category:MediaWiki User's Guide
!! text
blah
!! endarticle
!! test
Link to category
!! input
[[:Category:MediaWiki User's Guide]]
!! result
<p><a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User's Guide">Category:MediaWiki User's Guide</a>
</p>
!! end
!! test
Simple category
!! options
cat
!! input
[[Category: MediaWiki User's Guide]]
!! result
<a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User's Guide">MediaWiki User's Guide</a>
!! end
###
### Inter-language links
###
!! test
Inter-language links
!! options
ill
!! input
[[es:Alimento]]
[[fr:Nourriture]]
[[zh:&#39135;&#21697;]]
!! result
es:Alimento fr:Nourriture zh:食品
!! end
###
### Sections
###
!! test
Basic section headings
!! options
title=[[Parser test script]]
!! input
== Headline 1 ==
Some text
==Headline 2==
More
===Smaller headline===
Blah blah
!! result
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/index.php?title=Parser_test_script&amp;action=edit&amp;section=1" title="Parser test script">edit</a>]</div><a name="Headline_1"></a><h2> Headline 1 </h2>
<p>Some text
</p>
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/index.php?title=Parser_test_script&amp;action=edit&amp;section=2" title="Parser test script">edit</a>]</div><a name="Headline_2"></a><h2>Headline 2</h2>
<p>More
</p>
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/index.php?title=Parser_test_script&amp;action=edit&amp;section=3" title="Parser test script">edit</a>]</div><a name="Smaller_headline"></a><h3>Smaller headline</h3>
<p>Blah blah
</p>
!! end
!! test
Section headings with TOC
!! options
title=[[Parser test script]]
!! input
== Headline 1 ==
=== Subheadline 1 ===
===== Skipping a level =====
====== Skipping a level ======
== Headline 2 ==
Some text
===Another headline===
!! result
<table border="0" id="toc"><tr id="toctitle"><td align="center">
<b>Table of contents</b> <script type="text/javascript">showTocToggle("show","hide")</script></td></tr><tr id="tocinside"><td>
<div class="tocline"><a href="#Headline_1">1 Headline 1</a><br /></div>
<div class="tocindent">
<p><a href="#Subheadline_1">1.1 Subheadline 1</a><br />
</p>
<div class="tocindent">
<div class="tocindent">
<p><a href="#Skipping_a_level">1.1.1 Skipping a level</a><br />
</p>
<div class="tocindent">
<p><a href="#Skipping_a_level_2">1.1.1.1 Skipping a level</a><br />
</p>
</div>
</div>
</div>
</div>
<div class="tocline"><a href="#Headline_2">2 Headline 2</a><br /></div>
<div class="tocindent">
<p><a href="#Another_headline">2.1 Another headline</a><br />
</p>
</div>
</td></tr></table>
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/index.php?title=Parser_test_script&amp;action=edit&amp;section=1" title="Parser test script">edit</a>]</div><a name="Headline_1"></a><h2> Headline 1 </h2>
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/index.php?title=Parser_test_script&amp;action=edit&amp;section=2" title="Parser test script">edit</a>]</div><a name="Subheadline_1"></a><h3> Subheadline 1 </h3>
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/index.php?title=Parser_test_script&amp;action=edit&amp;section=3" title="Parser test script">edit</a>]</div><a name="Skipping_a_level"></a><h5> Skipping a level </h5>
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/index.php?title=Parser_test_script&amp;action=edit&amp;section=4" title="Parser test script">edit</a>]</div><a name="Skipping_a_level_2"></a><h6> Skipping a level </h6>
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/index.php?title=Parser_test_script&amp;action=edit&amp;section=5" title="Parser test script">edit</a>]</div><a name="Headline_2"></a><h2> Headline 2 </h2>
<p>Some text
</p>
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/index.php?title=Parser_test_script&amp;action=edit&amp;section=6" title="Parser test script">edit</a>]</div><a name="Another_headline"></a><h3>Another headline</h3>
!! end
!! test
Resolving duplicate section names
!! options
title=[[Parser test script]]
!! input
== Foo bar ==
==Foo bar==
!! result
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/index.php?title=Parser_test_script&amp;action=edit&amp;section=1" title="Parser test script">edit</a>]</div><a name="Foo_bar"></a><h2> Foo bar </h2>
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/index.php?title=Parser_test_script&amp;action=edit&amp;section=2" title="Parser test script">edit</a>]</div><a name="Foo_bar_2"></a><h2>Foo bar</h2>
!! end
!! article
Template:sections
!! text
===Section 1===
==Section 2==
!! endarticle
!! test
Template with sections, __NOTOC__
!! options
title=[[Parser test script]]
!! input
__NOTOC__
==Section 0==
{{sections}}
==Section 4==
!! result
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/index.php?title=Parser_test_script&amp;action=edit&amp;section=1" title="Parser test script">edit</a>]</div><a name="Section_0"></a><h2>Section 0</h2>
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/index.php?title=Template:Sections&amp;action=edit&amp;section=1" title="Template:Sections">edit</a>]</div><a name="Section_1"></a><h3>Section 1</h3>
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/index.php?title=Template:Sections&amp;action=edit&amp;section=2" title="Template:Sections">edit</a>]</div><a name="Section_2"></a><h2>Section 2</h2>
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/index.php?title=Parser_test_script&amp;action=edit&amp;section=2" title="Parser test script">edit</a>]</div><a name="Section_4"></a><h2>Section 4</h2>
!! end
!! test
__NOEDITSECTION__ keyword
!! input
__NOEDITSECTION__
==Section 1==
==Section 2==
!! result
<a name="Section_1"></a><h2>Section 1</h2>
<a name="Section_2"></a><h2>Section 2</h2>
!! end
!! test
Link inside a section heading
!! options
title=[[Parser test script]]
!! input
==Section with a [[Main Page|link]] in it==
!! result
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/index.php?title=Parser_test_script&amp;action=edit&amp;section=1" title="Parser test script">edit</a>]</div><a name="Section_with_a_link_in_it"></a><h2>Section with a <a href="/wiki/Main_Page" title="Main Page">link</a> in it</h2>
!! end
TODO:
more images
more tables
math
character entities
and much more