# MediaWiki Parser test cases # Some taken from http://meta.wikimedia.org/wiki/Parser_testing # All (C) their respective authors and released under the GPL # # The syntax should be fairly self-explanatory. # # Currently supported test options: # One of the following three: # # (default) generate HTML output # pst apply pre-save transform # msg apply message transform # # Plus any combination of these: # # cat add category links # ill add inter-language links # subpage enable subpages (disabled by default) # 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
This is a simple paragraph.
!! end !! test Simple list !! input * Item 1 * Item 2 !! result* This is not an unordered list item.
!! end !! testLorem ipsum dolor sed abit. sed nullum. :and a colon
!! end !! test nowiki 3 !! input :There is not nowiki. :There isasdf!! end !! test Comment test 2 !! input asdf jkl !! result
asdf jkl
!! end !! test Comment test 3 !! input asdf jkl !! resultasdf jkl
!! end !! test Comment test 4 !! input asdfjkl !! resultasdfjkl
!! end !! test Comment spacing !! input a b c !! resulta
b
c
!! end ### ### Preformatted text ### !! test Preformatted text !! input This is some Preformatted text With ''italic'' And '''bold''' And a [[Main Page|link]] !! resultThis is some Preformatted text With italic And bold And a link!! end ### ### Definition list ### !! test Simple definition !! input ; name : Definition !! result
Non-bracketed: http://example.com
!! end !! test External links: numbered !! input Numbered: [http://example.com] !! resultNumbered: [1] (http://example.com)
!!end !! test External links: specified text !! input Specified text: [http://example.com link] !! resultSpecified text: link (http://example.com)
!!end !! test External links: trail !! input Trail (not sure if this is meant to work): [http://example.com link]s !! resultTrail (not sure if this is meant to work): links (http://example.com)
!! end !! test External links: dollar sign in URL !! input http://example.com/1$2345 !! result !! end !! test External links: dollar sign in URL (named) !! input [http://example.com/1$2345] !! result[1] (http://example.com/1$2345)
!!end !! test External image !! input External image: http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png !! resultExternal image:
!! end !! test External image from https !! input External image from https: https://meta.wikimedia.org/upload/f/f1/Ncwikicol.png !! resultExternal image from https:
!! end !! test Link to non-http image, no img tag !! input Link to non-http image, no img tag: ftp://example.com/test.jpg !! resultLink to non-http image, no img tag: ftp://example.com/test.jpg
!! end !! test External links: terminating separator !! input Terminating separator: http://example.com/thing, !! resultTerminating separator: http://example.com/thing,
!! end !! test External links: intervening separator !! input Intervening separator: http://example.com/1,2,3 !! resultIntervening separator: http://example.com/1,2,3
!! end !! test External links: old bug with URL in query !! input Old bug with URL in query: [http://example.com/thing?url=http://example.com link] !! resultOld bug with URL in query: link (http://example.com/thing?url=http://example.com)
!! end !! test External links: old URL-in-URL bug, mixed protocols !! input And again with mixed protocols: [ftp://example.com?url=http://example.com link] !! resultAnd again with mixed protocols: link (ftp://example.com?url=http://example.com)
!!end !! test External links: URL in text !! input URL in text: [http://example.com http://example.com] !! resultURL in text: http://example.com
!! end !! test External links: Clickable images !! input ja-style clickable images: [http://example.com http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png] !! resultja-style clickable images: (http://example.com)
!!end !! test External links: raw ampersand !! input Old & use: http://x&y !! resultOld & use: http://x&y
!! end !! test External links: www.jpeg.org (bug 554) !! input http://www.jpeg.org !!result !! end !! test External links: URL within URL (original bug 2) !! input [http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp] !! result[1] (http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp)
!! end ### ### Quotes ### !! test Quotes !! input Normal text. '''Bold text.''' Normal text. ''Italic text.'' Normal text. '''''Bold italic text.''''' Normal text. !!resultNormal text. Bold text. Normal text. Italic text.
Normal text. Bold italic text. Normal text.
!! end !! test Unclosed and unmatched quotes !! input '''''Bold italic text '''with bold deactivated''' in between.''''' '''''Bold italic text ''with italic deactivated'' in between.''''' '''Bold text.. ..spanning two paragraphs (should not work).''' '''Bold tag left open ''Italic tag left open Normal text. '''This year''''s election ''should'' beat '''last year''''s. ''Tom'''s car is bigger than ''Susan'''s. !! resultBold italic text with bold deactivated in between.
Bold italic text with italic deactivated in between.
Bold text..
..spanning two paragraphs (should not work).
Bold tag left open
Italic tag left open
Normal text.
This year's election should beat last year's.
Toms car is bigger than Susans.
!! end ### ### Tables ### ### content taken from http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide:_Using_tables ### !! test Simple table !! input {| | 1 || 2 |- | 3 || 4 |} !! result1 | 2 |
3 | 4 |
× | 1 | 2 | 3 |
---|---|---|---|
1 | 1 | 2 | 3 |
2 | 2 | 4 | 6 |
3 | 3 | 6 | 9 |
4 | 4 | 8 | 12 |
5 | 5 | 10 | 15 |
Cell 1, row 1 | Cell 2, row 1 (and 2) | Cell 3, row 1 |
Cell 1, row 2 | Cell 3, row 2 |
α |
| the original table again |
xxxmain Page, xxxMain Page, Xxxmain Page XXXmain Page, XXXMain Page
!! end !! test Link with suffix !! input [[Main Page]]xxx, [[Main Page]]XXX !! result !! end !! test Link with 3 brackets !! input [[[main page]]] !! result[[[main page]]]
!! end !! test Piped link with 3 brackets !! input [[[main page|the main page]]] !! result[[[main page|the main page]]]
!! end !! test Link to namespaces !! input [[Talk:Parser testing]], [[Meta:Disclaimers]] !! resultTalk:Parser testing, Meta:Disclaimers
!! end !! test Piped link to namespace !! input [[Meta:Disclaimers|The disclaimers]] !! result !! end !! test Link containing } !! input [[Usually caused by a typo (oops}]] !! result[[Usually caused by a typo (oops}]]
!! end !! test Plain link to URL !! input [[http://www.example.org]] !! result[[1] (http://www.example.org)]
!! end # I'm fairly sure the expected result here is wrong. # We want these to be URL links, not pseudo-pages with URLs for titles.... # However the current output is also pretty screwy. # # ---- # I'm changing it to match the current output--it arguably makes more # sense in the light of the test above. Old expected result was: #Piped link to URL: an example URL #
# But I think this test is bordering on "garbage in, garbage out" anyway. # -- wtm !! test Piped link to URL !! input Piped link to URL: [[http://www.example.org|an example URL]] !! resultPiped link to URL: [example URL (http://www.example.org|an)]
!! end !! test BUG 2: [[page|http://url/]] should link to page, not http://url/ !! input [[Main Page|http://url/]] !! result !! end ### ### Interwiki links ### !! test Inline interwiki link !! input [[MeatBall:SoftSecurity]] !! result !! end ## ## XHTML tidiness ### !! test1
2
3
MediaWiki
!! end ### ### Magic links ### !! test Magic links: internal link to RFC !! input [[RFC 123]] !! result !! end !! test Magic links: RFC !! input RFC 822 !! result !! end !! test Magic links: ISBN !! input ISBN 0-306-40615-2 !! result !! end ### ### Templates #### !! test Nonexistant template !! input {{thistemplatedoesnotexist}} !! resultTemplate:Thistemplatedoesnotexist
!! end !! article Template:test !! text This is a test template !! endarticle !! test Simple template !! input {{test}} !! resultThis is a test template
!! end !! test Template with explicit namespace !! input {{Template:test}} !! resultThis is a test template
!! end !! article Template:paramtest !! text This is a test template with parameter {{{param}}} !! endarticle !! test Template parameter !! input {{paramtest|param=foo}} !! resultThis is a test template with parameter foo
!! end !! test Magic variable as template parameter !! input {{paramtest|param={{SITENAME}}}} !! resultThis is a test template with parameter MediaWiki
!! end !! article Template:linktest !! text [[{{{param}}}|link]] !! endarticle !! test Template parameter as link source !! input {{linktest|param=Main Page}} !! result !! end !!article Template:paramtest2 !! text including another template, {{paramtest|param={{{arg}}}}} !! endarticle !! test Template passing argument to another template !! input {{paramtest2|arg='hmm'}} !! resultincluding another template, This is a test template with parameter 'hmm'
!! end !! article Template:Linktest2 !! text Main Page !! endarticle !! test Template as link source !! input [[{{linktest2}}]] !! result !! end !! article Template:loop1 !! text {{loop2}} !! endarticle !! article Template:loop2 !! text {{loop1}} !! endarticle !! test Template infinite loop !! input {{loop1}} !! result{{loop2}}
!! end !! test Template from main namespace !! input {{:Main Page}} !! resultblah blah
!! end !! article Template:table !! text {| | 1 || 2 |- | 3 || 4 |} !! endarticle !! test BUG 529: Template with table, not included at beginning of line !! input foo {{table}} !! resultfoo
1 | 2 |
3 | 4 |
foo
1 | 2 |
3 | 4 |
{{{parameter}}}
!! end !! 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''None'' of '''this''' should be * interepreted but rather passed unmodified {{test}}
!! end !! test int keyword !! input {{int:newmessages|lots of money}} !! resultYou have lots of money.
!! 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: test]] !! result !! end !! test Right-aligned image !! input [[Image:test|right]] !! result !! end !! test Image with caption !! input [[Image:test|right|Caption text]] !! result !! end !! test Image with frame and link !! input [[Image:Foobar.jpg|frame|left|This is a test image [[Main Page]]]] !! result !! end !! test Link to image page !! input [[:Image:test]] !! result !! end ### ### Subpages ### !! article Subpage test/subpage !! text foo !! endarticle !! test Subpage link !! options subpage title=[[Subpage test]] !! input [[/subpage]] !! result !! end !! test Subpage noslash link !! options subpage title=[[Subpage test]] !!input [[/subpage/]] !! result !! end !! test Disabled subpages !! input [[/subpage]] !! result !! end !! test BUG 561: {{/Subpage}} !! options subpage title=[[Page]] !! input {{/Subpage}} !! result !! end ### ### Categories ### !! article Category:MediaWiki User's Guide !! text blah !! endarticle !! test Link to category !! input [[:Category:MediaWiki User's Guide]] !! resultCategory:MediaWiki User's Guide
!! end !! test Simple category !! options cat !! input [[Category: MediaWiki User's Guide]] !! result MediaWiki User's Guide !! end ### ### Inter-language links ### !! test Inter-language links !! options ill !! input [[es:Alimento]] [[fr:Nourriture]] [[zh:食品]] !! result es:Alimento fr:Nourriture zh:食品 !! end ### ### Sections ### !! test Basic section headings !! input == Headline 1 == Some text ==Headline 2== More ===Smaller headline=== Blah blah !! resultSome text
More
Blah blah
!! end !! test Section headings with TOC !! input == Headline 1 == === Subheadline 1 === ===== Skipping a level ===== ====== Skipping a level ====== == Headline 2 == Some text ===Another headline=== !! resultTable of contents |
Some text