More complete, more straightforward JobQueueMemoryTest
[mediawiki.git] / tests / parser / parserTests.txt
blobcd2b769a53f7b698e1cefa4c212bb31b1eaf3f8b
1 # MediaWiki Parser test cases
2 # Some taken from http://meta.wikimedia.org/wiki/Parser_testing
3 # All (C) their respective authors and released under the GPL
5 # The syntax should be fairly self-explanatory.
7 # Currently supported test options:
8 # One of the following three:
10 #  (default)  generate HTML output
11 #  pst        apply pre-save transform
12 #  msg        apply message transform
14 # Plus any combination of these:
16 # cat           add category links
17 #               (ignored by Parsoid, since it emits <link>s)
18 # ill           add inter-language links
19 #               (ignored by Parsoid, since it emits <link>s)
20 # subpage       enable subpages (disabled by default)
21 # noxml         don't check for XML well-formedness
22 # title=[[XXX]] run test using article title XXX
23 # language=XXX  set content language to XXX for this test
24 # variant=XXX   set the variant of language for this test (eg zh-tw)
25 # disabled      do not run test
26 # parsoid       parsoid-specific options (not run by PHP parser unless
27 #                 the test includes an html/php section)
28 # php           php-only test (not run by the parsoid parser unless
29 #                 the test includes an html/parsoid section)
30 # showtitle     make the first line the title
31 # showindicators make the first lines the page status indicators
32 # comment       run through Linker::formatComment() instead of main parser
33 # local         format section links in edit comment text as local links
34 # notoc         disable table of contents
35 # thumbsize=NNN set the default thumb size to NNNpx for this test
37 # You can also set the following parser properties via test options:
38 #  wgEnableUploads, wgAllowExternalImages, wgMaxTocLevel,
39 #  wgLinkHolderBatchSize, wgRawHtml
41 # For testing purposes, temporary articles can created:
42 # !!article / NAMESPACE:TITLE / !!text / ARTICLE TEXT / !!endarticle
43 # where '/' denotes a newline.
45 # This is the standard article assumed to exist.
46 !! article
47 Main Page
48 !! text
49 blah blah
50 !! endarticle
52 !!article
53 Foo
54 !!text
55 FOO
56 !!endarticle
58 !!article
59 Template:Foo
60 !!text
61 FOO
62 !!endarticle
64 !! article
65 Template:Blank
66 !! text
67 !! endarticle
69 !! article
70 Template:pipe
71 !! text
73 !! endarticle
75 !! article
76 Template:=
77 !! text
78 <nowiki>=</nowiki>
79 !! endarticle
81 !!article
82 MediaWiki:bad image list
83 !!text
84 * [[File:Bad.jpg]] except [[Nasty page]]
85 !!endarticle
87 !! article
88 Template:inner list
89 !! text
90 * item 1
91 !! endarticle
93 !! article
94 Template:tbl-start
95 !! text
97 !! endarticle
99 !! article
100 Template:tbl-end
101 !! text
103 !! endarticle
105 !! article
106 Template:echo
107 !! text
108 {{{1}}}
109 !! endarticle
111 !! article
112 Template:echo_with_span
113 !! text
114 <span>{{{1}}}</span>
115 !! endarticle
117 !! article
118 Template:echo_with_div
119 !! text
120 <div>{{{1}}}</div>
121 !! endarticle
123 !! article
124 Template:blank_param
125 !! text
126 {{{1}}}
127 {{{}}}
128 !! endarticle
130 !! article
131 Template:table_attribs
132 !! text
133 <noinclude>
134 |</noinclude>style="color:red;"|Foo
135 !! endarticle
137 !! article
138 Template:table_attribs_2
139 !! text
140 <noinclude>
141 |</noinclude>style="color:red;"|Foo
142 |Bar||Baz
143 !! endarticle
145 !! article
146 Template:table_attribs_3
147 !! text
148 <noinclude>
149 |</noinclude>style{{=}}"background:&#35;f9f9f9;"|Foo
150 !! endarticle
152 !! article
153 Template:table_attribs_4
154 !! text
155 | style="background-color:#DC241f;" width="10px" |
156 !! endarticle
158 !! article
159 Template:table_attribs_5
160 !! text
161 <noinclude>
162 |</noinclude>style="color:red;"||Bar
163 !! endarticle
165 !! article
166 Template:table_attribs_6
167 !! text
168 style="background: <nowiki>
171 red;</nowiki>" |
172 !! endarticle
174 !! article
175 Template:table_attribs_7
176 !! text
177 <noinclude>
178 |</noinclude>style{{=}}"background:&#35;f9f9f9;"|Foo<ref>foo</ref>
179 !! endarticle
181 !! article
182 Template:table_header_cells
183 !! text
184 {{table_attribs}}!!style='color:red;'|''Bar''||style='color:brown;'|''Foo'' and Baz
185 !! endarticle
187 !! article
188 Template:table_cells
189 !! text
190 {{table_attribs}}||style='color:red;'|''Bar''||style='color:brown;'|''Foo'' and Baz
191 !! endarticle
193 !! article
194 Template:PartialTable
195 !! text
198 !! endarticle
200 !! article
201 Template:image_attribs
202 !! text
203 <noinclude>
204 [[File:foobar.jpg|</noinclude>right|Caption text<noinclude>]]</noinclude>
205 !! endarticle
207 ## See T48811 for details
208 !! article
209 Template:mixed_attr_content_template
210 !! text
211 style="color:red;" title="T48811"
213 |foo
214 !! endarticle
216 !! article
217 Template:definition_list
218 !! text
220 ::two
221 !! endarticle
223 !! article
225 !! text
226 Weirdo titles!
227 !! endarticle
229 !!article
230 Template:Bullet
231 !!text
232 * Bar
233 !!endarticle
235 !!article
236 Template:OpenTable
237 !!text
239 !!endarticle
241 !!article
242 Template:EmptyLITest
243 !!text
248 !!endarticle
250 !!article
251 Template:EmptyTRTest
252 !!text
256 |foo
259 |bar
261 !!endarticle
263 !!article
264 Template:EmptyTRWithHTMLAttrTest
265 !!text
266 <table>
267 <tr align="center"></tr>
268 <tr><td>foo</td></tr>
269 <tr align="center"></tr>
270 <tr><td>bar</td></tr>
271 </table>
272 !!endarticle
275 ### Basic tests
277 !! test
278 Blank input
279 !! wikitext
280 !! html
281 !! end
284 !! test
285 Simple paragraph
286 !! wikitext
287 This is a simple paragraph.
288 !! html
289 <p>This is a simple paragraph.
290 </p>
291 !! end
293 !! test
294 Paragraphs with extra newline spacing
295 !! wikitext
305 booz
306 !! html
307 <p>foo
308 </p><p>bar
309 </p><p><br />
311 </p><p><br />
312 </p><p>booz
313 </p>
314 !! end
316 !! test
317 Paragraphs with newline spacing with comment lines in between
318 !! wikitext
319 ----
321 <!--foo-->
323 ----
325 <!--foo--><!--More than 1 comment, still stripped-->
327 ----
329  <!--foo--> <!----> <!-- bar --> 
331 ----
333 <!--foo-->
336 ----
339 <!--foo-->
341 ----
343 <!--foo-->
347 ----
351 <!--foo-->
353 ----
354 !! html
355 <hr />
356 <p>a
358 </p>
359 <hr />
360 <p>a
362 </p>
363 <hr />
364 <p>a
366 </p>
367 <hr />
368 <p>a
369 </p><p>b
370 </p>
371 <hr />
372 <p>a
373 </p><p>b
374 </p>
375 <hr />
376 <p>a
377 </p><p><br />
379 </p>
380 <hr />
381 <p>a
382 </p><p><br />
384 </p>
385 <hr />
387 !! end
389 !! test
390 Paragraphs with newline spacing with non-empty white-space lines in between
391 !! wikitext
392 ----
396 ----
401 ----
402 !! html
403 <hr />
404 <p>a
405 </p><p>b
406 </p>
407 <hr />
408 <p>a
409 </p><p><br /> 
411 </p>
412 <hr />
414 !! end
416 !! test
417 Paragraphs with newline spacing with non-empty mixed comment and white-space lines in between
418 !! wikitext
419 ----
421  <!--foo-->
423 ----
425  <!--foo--><!--More than 1 comment doesn't disable stripping of this line!-->
427 ----
430 <!--foo-->
431  <!--bar-->
433 ----
436  <!--foo-->
437  <!--bar-->
440 ----
441 !! html
442 <hr />
443 <p>a
445 </p>
446 <hr />
447 <p>a
449 </p>
450 <hr />
451 <p>a
452 </p><p>b
453 </p>
454 <hr />
455 <p>a
456 </p><p><br /> 
458 </p>
459 <hr />
461 !! end
463 !! test
464 Extra newlines: More paragraphs with indented comment
465 !! wikitext
468    <!--boo-->
471 !! html
472 <p>a
473 </p><p><br />
475 </p>
476 !!end
478 !! test
479 Extra newlines followed by heading
480 !! wikitext
486 [[a]]
490 !! html
491 <p>a
492 </p><p><br />
493 </p>
494 <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&amp;action=edit&amp;section=1" title="Edit section: b">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
495 <p><a href="/index.php?title=A&amp;action=edit&amp;redlink=1" class="new" title="A (page does not exist)">a</a>
496 </p><p><br />
497 </p>
498 <h1><span class="mw-headline" id="b_2">b</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: b">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
500 !! end
502 !! test
503 Extra newlines between heading and content are swallowed
504 !! wikitext
509 [[a]]
510 !! html
511 <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&amp;action=edit&amp;section=1" title="Edit section: b">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
512 <p><a href="/index.php?title=A&amp;action=edit&amp;redlink=1" class="new" title="A (page does not exist)">a</a>
513 </p>
514 !! end
516 !! test
517 Parsing an URL
518 !! wikitext
519 http://fr.wikipedia.org/wiki/🍺
520 <!-- EasterEgg we love beer, better be able be able to link to it -->
521 !! html
522 <p><a rel="nofollow" class="external free" href="http://fr.wikipedia.org/wiki/🍺">http://fr.wikipedia.org/wiki/🍺</a>
523 </p>
524 !! end
526 # Note that the html+tidy output removes the spaces after the <li>,
527 # which is a bug (http://sourceforge.net/p/tidy/bugs/945/, etc).
528 # This is an issue for all tests with lists.  We intentionally do
529 # *not* add html+tidy clauses for these, as we don't want to
530 # document/test the broken behavior.  (Parsoid matches the non-tidy
531 # output in these cases.)
533 !! test
534 Simple list
535 !! wikitext
536 * Item 1
537 * Item 2
538 !! html
539 <ul><li> Item 1</li>
540 <li> Item 2</li></ul>
542 !! end
544 !! test
545 Italics and bold
546 !! wikitext
547 * plain
548 * plain''italic''plain
549 * plain''italic''plain''italic''plain
550 * plain'''bold'''plain
551 * plain'''bold'''plain'''bold'''plain
552 * plain''italic''plain'''bold'''plain
553 * plain'''bold'''plain''italic''plain
554 * plain''italic'''bold-italic'''italic''plain
555 * plain'''bold''bold-italic''bold'''plain
556 * plain'''''bold-italic'''italic''plain
557 * plain'''''bold-italic''bold'''plain
558 * plain''italic'''bold-italic'''''plain
559 * plain'''bold''bold-italic'''''plain
560 * plain l'''italic''plain
561 * plain l''''bold''' plain
562 !! html
563 <ul><li> plain</li>
564 <li> plain<i>italic</i>plain</li>
565 <li> plain<i>italic</i>plain<i>italic</i>plain</li>
566 <li> plain<b>bold</b>plain</li>
567 <li> plain<b>bold</b>plain<b>bold</b>plain</li>
568 <li> plain<i>italic</i>plain<b>bold</b>plain</li>
569 <li> plain<b>bold</b>plain<i>italic</i>plain</li>
570 <li> plain<i>italic<b>bold-italic</b>italic</i>plain</li>
571 <li> plain<b>bold<i>bold-italic</i>bold</b>plain</li>
572 <li> plain<i><b>bold-italic</b>italic</i>plain</li>
573 <li> plain<b><i>bold-italic</i>bold</b>plain</li>
574 <li> plain<i>italic<b>bold-italic</b></i>plain</li>
575 <li> plain<b>bold<i>bold-italic</i></b>plain</li>
576 <li> plain l'<i>italic</i>plain</li>
577 <li> plain l'<b>bold</b> plain</li></ul>
579 !! end
581 # this example taken from the [[simple:Moon]] article (bug 47326)
582 !! test
583 Italics and possessives (1)
584 !! wikitext
585 obtained by ''[[Lunar Prospector]]'''s gamma-ray spectrometer
586 !! html
587 <p>obtained by <i><a href="/index.php?title=Lunar_Prospector&amp;action=edit&amp;redlink=1" class="new" title="Lunar Prospector (page does not exist)">Lunar Prospector</a>'</i>s gamma-ray spectrometer
588 </p>
589 !! end
591 # this example taken from [[en:Flaming Pie]] (bug 49926)
592 !! test
593 Italics and possessives (2)
594 !! wikitext
595 '''''Flaming Pie''''' is ... released in 1997. In ''Flaming Pie'''s liner notes
596 !! html
597 <p><i><b>Flaming Pie</b></i> is ... released in 1997. In <i>Flaming Pie'</i>s liner notes
598 </p>
599 !! end
601 # this example taken from [[en:Dictionary]] (bug 49926)
602 !! test
603 Italics and possessives (3)
604 !! wikitext
605 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''.
606 !! html
607 <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&amp;action=edit&amp;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>.
608 </p>
609 !! end
613 ### 2-quote opening sequence tests
615 !! test
616 Italics and bold: 2-quote opening sequence: (2,2)
617 !! wikitext
618 ''foo''
619 !! html
620 <p><i>foo</i>
621 </p>
622 !!end
624 !! test
625 Italics and bold: 2-quote opening sequence: (2,3)
626 !! wikitext
627 ''foo'''
628 !! html/*
629 <p><i>foo'</i>
630 </p>
631 !!end
633 !! test
634 Italics and bold: 2-quote opening sequence: (2,4)
635 !! options
636 parsoid=wt2html
637 !! wikitext
638 ''foo''''
639 !! html/*
640 <p><i>foo''</i>
641 </p>
642 !!end
644 # same html as previous, but wikitext adjusted to match parsoid html2wt
645 !! test
646 Italics and bold: 2-quote opening sequence: (2,4) w/ nowiki
647 !! wikitext
648 ''foo<nowiki>''</nowiki>''
649 !! html
650 <p><i>foo''</i>
651 </p>
652 !! end
654 # The PHP parser strips the empty tags out for giggles; parsoid doesn't.
655 !! test
656 Italics and bold: 2-quote opening sequence: (2,5)
657 !! options
658 parsoid=wt2html
659 !! wikitext
660 ''foo'''''
661 !! html/php
662 <p><i>foo</i>
663 </p>
664 !! html/parsoid
665 <p><i>foo</i><b></b>
666 </p>
667 !!end
669 # same html as previous, but wikitext adjusted to match parsoid html2wt
670 !! test
671 Italics and bold: 2-quote opening sequence: (2,5+3) w/ nowiki
672 !! wikitext
673 ''foo'''''<nowiki/>'''
674 !! html/php
675 <p><i>foo</i>
676 </p>
677 !! html/parsoid
678 <p><i>foo</i><b></b>
679 </p>
680 !! end
684 ### 3-quote opening sequence tests
687 !! test
688 Italics and bold: 3-quote opening sequence: (3,2)
689 !! wikitext
690 '''foo''
691 !! html/*
692 <p>'<i>foo</i>
693 </p>
694 !!end
696 !! test
697 Italics and bold: 3-quote opening sequence: (3,3)
698 !! wikitext
699 '''foo'''
700 !! html
701 <p><b>foo</b>
702 </p>
703 !!end
705 !! test
706 Italics and bold: 3-quote opening sequence: (3,4)
707 !! wikitext
708 '''foo''''
709 !! html/*
710 <p><b>foo'</b>
711 </p>
712 !!end
714 # The PHP parser strips the empty tags out for giggles; parsoid doesn't.
715 !! test
716 Italics and bold: 3-quote opening sequence: (3,5)
717 !! options
718 parsoid=wt2html
719 !! wikitext
720 '''foo'''''
721 !! html/php
722 <p><b>foo</b>
723 </p>
724 !! html/parsoid
725 <p><b>foo</b><i></i>
726 </p>
727 !!end
729 # same html as previous, but wikitext adjusted to match parsoid html2wt
730 !! test
731 Italics and bold: 3-quote opening sequence: (3,5+2) w/ nowiki
732 !! wikitext
733 '''foo'''''<nowiki/>''
734 !! html/php
735 <p><b>foo</b>
736 </p>
737 !! html/parsoid
738 <p><b>foo</b><i></i>
739 </p>
740 !! end
744 ### 4-quote opening sequence tests
747 !! test
748 Italics and bold: 4-quote opening sequence: (4,2)
749 !! options
750 parsoid=wt2html
751 !! wikitext
752 ''''foo''
753 !! html/*
754 <p>''<i>foo</i>
755 </p>
756 !!end
758 # same html as previous, but wikitext adjusted to match parsoid html2wt
759 !! test
760 Italics and bold: 4-quote opening sequence: (4,2) w/ nowiki
761 !! wikitext
762 <nowiki>''</nowiki>''foo''
763 !! html
764 <p>''<i>foo</i>
765 </p>
766 !! end
768 !! test
769 Italics and bold: 4-quote opening sequence: (4,3)
770 !! wikitext
771 ''''foo'''
772 !! html/*
773 <p>'<b>foo</b>
774 </p>
775 !!end
777 !! test
778 Italics and bold: 4-quote opening sequence: (4,4)
779 !! options
780 parsoid=wt2html
781 !! wikitext
782 ''''foo''''
783 !! html/*
784 <p>'<b>foo'</b>
785 </p>
786 !!end
788 # same html as previous, but wikitext adjusted to match parsoid html2wt
789 !! test
790 Italics and bold: 4-quote opening sequence: (4,4) w/ nowiki
791 !! wikitext
792 '<nowiki/>'''foo''''
793 !! html
794 <p>'<b>foo'</b>
795 </p>
796 !! end
798 # The PHP parser strips the empty tags out for giggles; parsoid doesn't.
799 !! test
800 Italics and bold: 4-quote opening sequence: (4,5)
801 !! options
802 parsoid=wt2html
803 !! wikitext
804 ''''foo'''''
805 !! html/php
806 <p>'<b>foo</b>
807 </p>
808 !! html/parsoid
809 <p>'<b>foo</b><i></i>
810 </p>
811 !!end
813 # same html as previous, but wikitext adjusted to match parsoid html2wt
814 !! test
815 Italics and bold: 4-quote opening sequence: (4,5+2) w/ nowiki
816 !! wikitext
817 '<nowiki/>'''foo'''''<nowiki/>''
818 !! html/php
819 <p>'<b>foo</b>
820 </p>
821 !! html/parsoid
822 <p>'<b>foo</b><i></i>
823 </p>
824 !! end
828 ### 5-quote opening sequence tests
831 !! test
832 Italics and bold: 5-quote opening sequence: (5,2)
833 !! options
834 parsoid=wt2html
835 !! wikitext
836 '''''foo''
837 !! html/*
838 <p><b><i>foo</i></b>
839 </p>
840 !!end
842 # same html as previous, but wikitext adjusted to match parsoid html2wt
843 !! test
844 Italics and bold: 5-quote opening sequence: (5,2+3)
845 !! wikitext
846 '''''foo'''''
847 !! html/*
848 <p><i><b>foo</b></i>
849 </p>
850 !! end
852 !! test
853 Italics and bold: 5-quote opening sequence: (5,3)
854 !! options
855 parsoid=wt2html
856 !! wikitext
857 '''''foo'''
858 !! html/*
859 <p><i><b>foo</b></i>
860 </p>
861 !!end
863 # same html as previous, but wikitext adjusted to match parsoid html2wt
864 !! test
865 Italics and bold: 5-quote opening sequence: (5,3+2)
866 !! wikitext
867 '''''foo'''''
868 !! html
869 <p><i><b>foo</b></i>
870 </p>
871 !! end
873 !! test
874 Italics and bold: 5-quote opening sequence: (5,4)
875 !! options
876 parsoid=wt2html
877 !! wikitext
878 '''''foo''''
879 !! html/*
880 <p><i><b>foo'</b></i>
881 </p>
882 !!end
884 !! test
885 Italics and bold: 5-quote opening sequence: (5,5)
886 !! wikitext
887 '''''foo'''''
888 !! html
889 <p><i><b>foo</b></i>
890 </p>
891 !!end
893 !! test
894 Italics and bold: 5-quote opening sequence: (5,6)
895 !! wikitext
896 '''''foo''''''
897 !! html/*
898 <p><i><b>foo'</b></i>
899 </p>
900 !! end
903 ### multiple quote sequences in a line
905 !! test
906 Italics and bold: multiple quote sequences: (2,4,2)
907 !! options
908 parsoid=wt2html
909 !! wikitext
910 ''foo''''bar''
911 !! html/*
912 <p><i>foo'<b>bar</b></i>
913 </p>
914 !!end
917 # same html as previous, but wikitext adjusted to match parsoid html2wt
918 !! test
919 Italics and bold: multiple quote sequences: (2,4,2+3) w/ nowiki
920 !! wikitext
921 ''foo'<nowiki/>'''bar'''''
922 !! html
923 <p><i>foo'<b>bar</b></i>
924 </p>
925 !! end
928 !! test
929 Italics and bold: multiple quote sequences: (2,4,3)
930 !! options
931 parsoid=wt2html
932 !! wikitext
933 ''foo''''bar'''
934 !! html/*
935 <p><i>foo'<b>bar</b></i>
936 </p>
937 !!end
940 # same html as previous, but wikitext adjusted to match parsoid html2wt
941 !! test
942 Italics and bold: multiple quote sequences: (2,4,3+2) w/ nowiki
943 !! wikitext
944 ''foo'<nowiki/>'''bar'''''
945 !! html
946 <p><i>foo'<b>bar</b></i>
947 </p>
948 !! end
951 !! test
952 Italics and bold: multiple quote sequences: (2,4,4)
953 !! options
954 parsoid=wt2html
955 !! wikitext
956 ''foo''''bar''''
957 !! html/*
958 <p><i>foo'<b>bar'</b></i>
959 </p>
960 !!end
963 # same html as previous, but wikitext adjusted to match parsoid html2wt
964 !! test
965 Italics and bold: multiple quote sequences: (2,4,4+2) w/ nowiki
966 !! wikitext
967 ''foo'<nowiki/>'''bar'<nowiki/>'''''
968 !! html
969 <p><i>foo'<b>bar'</b></i>
970 </p>
971 !! end
974 # The PHP parser strips the empty tags out for giggles; parsoid doesn't.
975 !! test
976 Italics and bold: multiple quote sequences: (3,4,2)
977 !! options
978 parsoid=wt2html
979 !! wikitext
980 '''foo''''bar''
981 !! html/php
982 <p><b>foo'</b>bar
983 </p>
984 !! html/parsoid
985 <p><b>foo'</b>bar<i></i>
986 </p>
987 !!end
989 # same html as previous, but wikitext adjusted to match parsoid html2wt
990 !! test
991 Italics and bold: multiple quote sequences: (3,4,2+2) w/ nowiki
992 !! options
993 parsoid
994 !! wikitext
995 '''<nowiki>foo'</nowiki>'''bar''<nowiki/>''
996 !! html/php
997 <p><b>foo'</b>bar
998 </p>
999 !! html/parsoid
1000 <p><b><span typeof="mw:Nowiki">foo'</span></b>bar<i></i>
1001 </p>
1002 !! end
1005 # The PHP parser strips the empty tags out for giggles; parsoid doesn't.
1006 !! test
1007 Italics and bold: multiple quote sequences: (3,4,3)
1008 !! options
1009 parsoid=wt2html
1010 !! wikitext
1011 '''foo''''bar'''
1012 !! html/php
1013 <p><b>foo'</b>bar
1014 </p>
1015 !! html/parsoid
1016 <p><b>foo'</b>bar<b></b>
1017 </p>
1018 !!end
1020 # same html as previous, but wikitext adjusted to match parsoid html2wt
1021 !! test
1022 Italics and bold: multiple quote sequences: (3,4,3+3) w/ nowiki
1023 !! wikitext
1024 '''<nowiki>foo'</nowiki>'''bar'''<nowiki/>'''
1025 !! html/php
1026 <p><b>foo'</b>bar
1027 </p>
1028 !! html/parsoid
1029 <p><b><span typeof="mw:Nowiki">foo'</span></b>bar<b></b>
1030 </p>
1031 !! end
1034 ### other quote tests
1036 !! test
1037 Italics and bold: other quote tests: (2,3,5)
1038 !! wikitext
1039 ''this is about '''foo's family'''''
1040 !! html
1041 <p><i>this is about <b>foo's family</b></i>
1042 </p>
1043 !!end
1046 !! test
1047 Italics and bold: other quote tests: (2,(3,3),2)
1048 !! wikitext
1049 ''this is about '''foo's''' family''
1050 !! html
1051 <p><i>this is about <b>foo's</b> family</i>
1052 </p>
1053 !!end
1056 !! test
1057 Italics and bold: other quote tests: (3,2,3,2)
1058 !! options
1059 parsoid=wt2html
1060 !! wikitext
1061 '''this is about ''foo'''s family''
1062 !! html/*
1063 <p><b>this is about <i>foo</i></b><i>s family</i>
1064 </p>
1065 !!end
1068 # same html as previous, but wikitext adjusted to match parsoid html2wt
1069 !! test
1070 Italics and bold: other quote tests: (3,2,3+2+2,2)
1071 !! wikitext
1072 '''this is about ''foo'''''<nowiki/>''s family''
1073 !! html
1074 <p><b>this is about <i>foo</i></b><i>s family</i>
1075 </p>
1076 !! end
1079 !! test
1080 Italics and bold: other quote tests: (3,2,3,3)
1081 !! wikitext
1082 '''this is about ''foo'''s family'''
1083 !! html/*
1084 <p>'<i>this is about </i>foo<b>s family</b>
1085 </p>
1086 !!end
1089 !! test
1090 Italics and bold: other quote tests: (3,(2,2),3)
1091 !! wikitext
1092 '''this is about ''foo's'' family'''
1093 !! html
1094 <p><b>this is about <i>foo's</i> family</b>
1095 </p>
1096 !!end
1099 !! test
1100 Italicized possessive
1101 !! wikitext
1102 The ''[[Main Page]]'''s talk page.
1103 !! html/php
1104 <p>The <i><a href="/wiki/Main_Page" title="Main Page">Main Page</a>'</i>s talk page.
1105 </p>
1106 !! html/parsoid
1107 <p>The <i><a rel="mw:WikiLink"  href="Main_Page" title="Main Page">Main Page</a>'</i>s talk page.</p>
1108 !! end
1110 !! test
1111 Parsoid only: Quote balancing context should be restricted to td/th cells on the same wikitext line
1112 (Requires tidy for PHP parser output to be fixed up)
1113 !! options
1114 parsoid=wt2html,wt2wt
1115 !! wikitext
1117 !''a!!''b
1118 |''a||''b
1120 !! html/php+tidy
1121 <table>
1122 <tr>
1123 <th><i>a</i></th>
1124 <th><i>b</i></th>
1125 <td><i>a</i></td>
1126 <td><i>b</i></td>
1127 </tr>
1128 </table>
1129 !! html/parsoid
1130 <table>
1131 <tbody><tr><th><i>a</i></th><th><i>b</i></th>
1132 <td><i>a</i></td><td><i>b</i></td></tr>
1133 </tbody></table>
1134 !! end
1137 ### Non-html5 tags
1140 !! test
1141 Non-html5 tags should be accepted
1142 !! wikitext
1143 <center>''foo''</center>
1144 <big>''foo''</big>
1145 <font>''foo''</font>
1146 <strike>''foo''</strike>
1147 <tt>''foo''</tt>
1148 !! html
1149 <center><i>foo</i></center>
1150 <p><big><i>foo</i></big>
1151 <font><i>foo</i></font>
1152 <strike><i>foo</i></strike>
1153 <tt><i>foo</i></tt>
1154 </p>
1155 !! end
1157 !! test
1158 <wbr> is valid wikitext (bug 52468)
1159 !! wikitext
1160 <wbr>
1161 !! html
1162 <p><wbr />
1163 </p>
1164 !! end
1166 # <strike> is HTML4, <s> is HTML4/5.
1167 !! test
1168 <s> or <strike> for strikethrough
1169 !! wikitext
1170 <strike>strike</strike>
1172 <s>s</s>
1173 !! html
1174 <p><strike>strike</strike>
1175 </p><p><s>s</s>
1176 </p>
1177 !! end
1179 ## a not permitted
1180 ## i,b,br omitted
1181 !! test
1182 Text-level semantic html elements in wikitext
1183 !! wikitext
1184 <em>text</em>
1185 <strong>text</strong>
1186 <small>text</small>
1187 <s>text</s>
1188 <cite>text</cite>
1189 <q>text</q>
1190 <dfn>text</dfn>
1191 <abbr>text</abbr>
1192 <data>text</data>
1193 <time>text</time>
1194 <code>text</code>
1195 <var>text</var>
1196 <samp>text</samp>
1197 <kbd>text</kbd>
1198 <sub>text</sub>
1199 <u>text</u>
1200 <mark>text</mark>
1201 <ruby><rb>明日</rb><rp>(</rp><rt>Ashita</rt><rp> </rp><rtc>あした</rtc><rp>)</rp></ruby>
1202 <bdi>text</bdi>
1203 <bdo>text</bdo>
1204 <span>text</span>
1205 <wbr />
1206 !! html
1207 <p><em>text</em>
1208 <strong>text</strong>
1209 <small>text</small>
1210 <s>text</s>
1211 <cite>text</cite>
1212 <q>text</q>
1213 <dfn>text</dfn>
1214 <abbr>text</abbr>
1215 <data>text</data>
1216 <time>text</time>
1217 <code>text</code>
1218 <var>text</var>
1219 <samp>text</samp>
1220 <kbd>text</kbd>
1221 <sub>text</sub>
1222 <u>text</u>
1223 <mark>text</mark>
1224 <ruby><rb>明日</rb><rp>(</rp><rt>Ashita</rt><rp> </rp><rtc>あした</rtc><rp>)</rp></ruby>
1225 <bdi>text</bdi>
1226 <bdo>text</bdo>
1227 <span>text</span>
1228 <wbr />
1229 </p>
1230 !! end
1232 # test cases taken from
1233 # http://www.w3.org/TR/html5/text-level-semantics.html#the-ruby-element
1234 !! test
1235 Ruby markup (W3C-style)
1236 !! wikitext
1237 ; Mono-ruby for individual base characters
1238 : <ruby>日<rt>に</rt>本<rt>ほん</rt>語<rt>ご</rt></ruby>
1239 ; Group ruby
1240 : <ruby>今日<rt>きょう</rt></ruby>
1241 ; Jukugo ruby
1242 : <ruby>法<rb>華</rb><rb>経</rb><rt>ほ</rt><rt>け</rt><rt>きょう</rt></ruby>
1243 ; Inline ruby
1244 : <ruby>東<rb>京</rb><rp>(</rp><rt>とう</rt><rt>きょう</rt><rp>)</rp></ruby>
1245 ; Double-sided ruby
1246 : <ruby><rb>旧</rb><rb>金</rb><rb>山</rb><rt>jiù</rt><rt>jīn</rt><rt>shān</rt><rtc>San Francisco</rtc></ruby>
1247 <ruby>
1248 <rb>♥</rb><rtc><rt>Heart</rt></rtc><rtc lang="fr"><rt>Cœur</rt></rtc>
1249 <rb>☘</rb><rtc><rt>Shamrock</rt></rtc><rtc lang="fr"><rt>Trèfle</rt></rtc>
1250 <rb>✶</rb><rtc><rt>Star</rt></rtc><rtc lang="fr"><rt>Étoile</rt></rtc>
1251 </ruby>
1252 !! html
1253 <dl><dt> Mono-ruby for individual base characters</dt>
1254 <dd> <ruby>日<rt>に</rt>本<rt>ほん</rt>語<rt>ご</rt></ruby></dd>
1255 <dt> Group ruby</dt>
1256 <dd> <ruby>今日<rt>きょう</rt></ruby></dd>
1257 <dt> Jukugo ruby</dt>
1258 <dd> <ruby>法<rb>華</rb><rb>経</rb><rt>ほ</rt><rt>け</rt><rt>きょう</rt></ruby></dd>
1259 <dt> Inline ruby</dt>
1260 <dd> <ruby>東<rb>京</rb><rp>(</rp><rt>とう</rt><rt>きょう</rt><rp>)</rp></ruby></dd>
1261 <dt> Double-sided ruby</dt>
1262 <dd> <ruby><rb>旧</rb><rb>金</rb><rb>山</rb><rt>jiù</rt><rt>jīn</rt><rt>shān</rt><rtc>San Francisco</rtc></ruby></dd></dl>
1263 <p><ruby>
1264 <rb>♥</rb><rtc><rt>Heart</rt></rtc><rtc lang="fr"><rt>Cœur</rt></rtc>
1265 <rb>☘</rb><rtc><rt>Shamrock</rt></rtc><rtc lang="fr"><rt>Trèfle</rt></rtc>
1266 <rb>✶</rb><rtc><rt>Star</rt></rtc><rtc lang="fr"><rt>Étoile</rt></rtc>
1267 </ruby>
1268 </p>
1269 !! end
1271 # The next two test different paths in the sanitizer.
1272 !! test
1273 Non-word characters don't terminate tag names (bug 17663, 40670, 52022)
1274 !! wikitext
1275 <blockquote|>a</blockquote>
1277 <b→> doesn't terminate </b→>
1279 <bä> doesn't terminate </bä>
1281 <boo> doesn't terminate </boo>
1283 <s.foo> doesn't terminate </s.foo>
1285 <sub-ID#1>
1286 !! html
1287 <p>&lt;blockquote|&gt;a&lt;/blockquote&gt;
1288 </p><p>&lt;b→&gt; doesn't terminate &lt;/b→&gt;
1289 </p><p>&lt;bä&gt; doesn't terminate &lt;/bä&gt;
1290 </p><p>&lt;boo&gt; doesn't terminate &lt;/boo&gt;
1291 </p><p>&lt;s.foo&gt; doesn't terminate &lt;/s.foo&gt;
1292 </p><p>&lt;sub-ID#1&gt;
1293 </p>
1294 !! end
1296 # There is a tidy bug here: http://sourceforge.net/p/tidy/bugs/946/
1297 # If the non-word-character tag made it through the sanitizer, tidy
1298 # would munge it up.
1299 !! test
1300 Non-word characters don't terminate tag names + tidy
1301 !! wikitext
1302 <blockquote|>a</blockquote>
1304 <b→> doesn't terminate </b→>
1306 <bä> doesn't terminate </bä>
1308 <boo> doesn't terminate </boo>
1310 <s.foo> doesn't terminate </s.foo>
1312 <sub-ID#1>
1313 !! html+tidy
1314 <p>&lt;blockquote|&gt;a</p>
1315 <p>&lt;b→&gt; doesn't terminate &lt;/b→&gt;</p>
1316 <p>&lt;bä&gt; doesn't terminate &lt;/bä&gt;</p>
1317 <p>&lt;boo&gt; doesn't terminate &lt;/boo&gt;</p>
1318 <p>&lt;s.foo&gt; doesn't terminate &lt;/s.foo&gt;</p>
1319 <p>&lt;sub-ID#1&gt;</p>
1320 !! end
1323 ### See tests/parser/parserTestsParserHook.php for the <tåg> extension)
1324 ### This checks that HTML5 tags (with non-word characters in the tag
1325 ### name) make it safely through the parser -- the Sanitizer will
1326 ### munge them later, as it should.
1328 !! test
1329 Non-word characters are valid in extension tags (T19663)
1330 !! wikitext
1331 <tåg>tåg</tåg>
1332 !! html/php
1333 <pre>
1334 'tåg'
1335 array (
1337 </pre>
1339 !! html/parsoid
1340 <pre typeof="mw:Extension/tåg" data-mw='{"name":"tåg","attrs":{},"body":{"extsrc":"tåg"}}' data-parsoid='{}' about="#mwt2"></pre>
1341 !! end
1343 !! test
1344 Isolated close tags should be treated as literal text (bug 52760)
1345 !! options
1346 parsoid=wt2html
1347 !! wikitext
1348 </b>
1350 <s.foo>s</s>
1351 !! html/php+tidy
1352 <p>&lt;s.foo&gt;s</p>
1353 !! html/parsoid
1354 <p>&lt;s.foo&gt;s</p>
1355 !! end
1358 ### Special characters
1361 !! test
1362 Bare pipe character (bug 52363)
1363 !! wikitext
1365 !! html
1366 <p>|
1367 </p>
1368 !! end
1370 !! test
1371 Bare pipe character from a template (bug 52363)
1372 !! wikitext
1373 {{pipe}}
1374 !! html
1375 <p>|
1376 </p>
1377 !! end
1380 ### <nowiki> test cases
1383 !! test
1384 <nowiki> unordered list
1385 !! wikitext
1386 <nowiki>* This is not an unordered list item.</nowiki>
1387 !! html/php
1388 <p>* This is not an unordered list item.
1389 </p>
1390 !! html/parsoid
1391 <p><span typeof="mw:Nowiki">* This is not an unordered list item.</span></p>
1392 !! end
1394 !! test
1395 <nowiki> spacing
1396 !! wikitext
1397 <nowiki>Lorem ipsum dolor
1399 sed abit.
1400   sed nullum.
1402 :and a colon
1403 </nowiki>
1404 !! html/php
1405 <p>Lorem ipsum dolor
1407 sed abit.
1408   sed nullum.
1410 :and a colon
1412 </p>
1413 !! html/parsoid
1414 <p><span typeof="mw:Nowiki">Lorem ipsum dolor
1416 sed abit.
1417   sed nullum.
1419 :and a colon
1420 </span></p>
1421 !! end
1423 !! test
1424 nowiki 3
1425 !! wikitext
1426 :There is not nowiki.
1427 :There is <nowiki>nowiki</nowiki>.
1429 #There is not nowiki.
1430 #There is <nowiki>nowiki</nowiki>.
1432 *There is not nowiki.
1433 *There is <nowiki>nowiki</nowiki>.
1434 !! html/php
1435 <dl><dd>There is not nowiki.</dd>
1436 <dd>There is nowiki.</dd></dl>
1437 <ol><li>There is not nowiki.</li>
1438 <li>There is nowiki.</li></ol>
1439 <ul><li>There is not nowiki.</li>
1440 <li>There is nowiki.</li></ul>
1442 !! html/parsoid
1443 <dl><dd data-parsoid='{}'>There is not nowiki.</dd>
1444 <dd data-parsoid='{}'>There is <span typeof="mw:Nowiki">nowiki</span>.</dd></dl>
1446 <ol><li data-parsoid='{}'>There is not nowiki.</li>
1447 <li data-parsoid='{}'>There is <span typeof="mw:Nowiki">nowiki</span>.</li></ol>
1449 <ul><li data-parsoid='{}'>There is not nowiki.</li>
1450 <li data-parsoid='{}'>There is <span typeof="mw:Nowiki">nowiki</span>.</li></ul>
1451 !! end
1453 !! test
1454 Entities inside <nowiki>
1455 !! wikitext
1456 <nowiki>&lt;</nowiki>
1457 !! html
1458 <p>&lt;
1459 </p>
1460 !! end
1462 !! test
1463 Entities inside template parameters
1464 !! wikitext
1465 {{echo|&ndash;}}
1466 !! html/php+tidy
1467 <p>–</p>
1468 !! html/parsoid
1469 <p><span typeof="mw:Transclusion mw:Entity" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&amp;ndash;"}},"i":0}}]}'>&ndash;</span></p>
1470 !! end
1472 !! test
1473 Properly escape nowiki when combined with other wiki markup
1474 !! options
1475 parsoid=html2wt
1476 !! html/parsoid
1477 <p>* &lt;/nowiki&gt; tag</p>
1478 !! wikitext
1479 <nowiki>*</nowiki> <nowiki>&lt;/nowiki&gt;</nowiki> tag
1480 !! end
1482 !! test
1483 T93824: Put escaped HTML tags inside nowiki
1484 !! options
1485 parsoid=html2wt
1486 !! html/parsoid
1487 <p>&lt;h2&gt;foo&lt;/h2&gt;</p>
1488 !! wikitext
1489 <nowiki><h2>foo</h2></nowiki>
1490 !! end
1492 !! test
1493 T71950: 1. Put nowiki as close to cause as possible, even with non-quote escapable chars
1494 !! options
1495 parsoid=html2wt
1496 !! html/parsoid
1497 <p>This text: L'<a rel="mw:WikiLink" href="./Foo">Foo</a>
1498 This text: L''<a rel="mw:WikiLink" href="./Foo">Foo</a>
1499 This text: L'''<a rel="mw:WikiLink" href="./Foo">Foo</a>''</p>
1500 !! wikitext
1501 This text: L'[[Foo]]
1502 This text: L<nowiki>''</nowiki>[[Foo]]
1503 This text: L<nowiki>'''</nowiki>[[Foo]]<nowiki>''</nowiki>
1504 !! end
1506 # This test fails because wikitext whitespace is not normalized before comparing.
1507 !! test
1508 T71950: 2. Put nowiki as close to cause as possible, after ' :'
1509 !! options
1510 parsoid=html2wt
1511 !! html/parsoid
1512 <p>This text : L''<a rel="mw:WikiLink" href="./Foo">Foo</a>
1513 </p>
1514 !! wikitext
1515 This text : L<nowiki>''</nowiki>[[Foo]]
1516 !! end
1518 # This test and the next one are html2wt only as they test that incorrect wikitext
1519 # passed in template arguments gets escaped or wrapped in nowikis where required.
1520 !! test
1521 T71482: Use {{!}} instead of nowiki for single pipe in template argument
1522 !! options
1523 parsoid=html2wt
1524 !! html/parsoid
1525 <p><span 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;foo|bar&quot;}},&quot;i&quot;:0}}]}" about="#mwt1"></span>
1526 <span 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;foo|bar |[[&quot;}},&quot;i&quot;:0}}]}" about="#mwt2"></p>
1527 !! wikitext
1528 {{echo|foo{{!}}bar}}
1529 {{echo|<nowiki>foo|bar |[[</nowiki>}}
1530 !! end
1532 !! test
1533 T53961: Output correct nowikis in template arguments
1534 !! options
1535 parsoid=html2wt
1536 !! html/parsoid
1537 <p><span 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;a [ b&quot;}},&quot;i&quot;:0}}]}" about="#mwt1"></span>
1538 <span 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;a }} b&quot;}},&quot;i&quot;:0}}]}" about="#mwt2"></span>
1539 <span 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;a [[ b&quot;}},&quot;i&quot;:0}}]}" about="#mwt3"></span>
1540 <span 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;a | {{ ]]&quot;}},&quot;i&quot;:0}}]}" about="#mwt4"></span>
1541 <span 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;a }&quot;}},&quot;i&quot;:0}}]}" about="#mwt5"></span></p>
1542 !! wikitext
1543 {{echo|a [ b}}
1544 {{echo|a <nowiki>}}</nowiki> b}}
1545 {{echo|<nowiki>a [[ b</nowiki>}}
1546 {{echo|a {{!}} <nowiki>{{ ]]</nowiki>}}
1547 {{echo|a <nowiki>}</nowiki>}}
1548 !! end
1550 !! test
1551 Cases where "!!" needs nowiki protection
1552 !! options
1553 parsoid=html2wt
1554 !! html/parsoid
1555 <table>
1556 <tr><th>this needs protection !! here</th></tr>
1557 </table>
1559 <table>
1560 <tr><th>this does not need
1561 protection !! here</th></tr>
1562 </table>
1563 !! wikitext
1565 !<nowiki>this needs protection !! here</nowiki>
1569 !this does not need
1570 protection !! here
1572 !! end
1575 ### Comments
1577 !! test
1578 Comments and Indent-Pre
1579 !! wikitext
1580 <!-- comment 1 --> asdf
1582 <!-- comment 1 --> asdf
1583 <!-- comment 2 -->
1585 <!-- comment 1 --> asdf
1586 <!-- comment 2 -->xyz
1588 <!-- comment 1 --> asdf
1589 <!-- comment 2 --> xyz
1590 !! html
1591 <pre>asdf
1592 </pre>
1593 <pre>asdf
1594 </pre>
1595 <pre>asdf
1596 </pre>
1597 <p>xyz
1598 </p>
1599 <pre>asdf
1601 </pre>
1602 !! end
1604 !! test
1605 Comment test 2a
1606 !! wikitext
1607 asdf
1608 <!-- comment 1 -->
1610 !! html
1611 <p>asdf
1613 </p>
1614 !! end
1616 !! test
1617 Comment test 2b
1618 !! wikitext
1619 asdf
1620 <!-- comment 1 -->
1623 !! html
1624 <p>asdf
1625 </p><p>jkl
1626 </p>
1627 !! end
1629 !! test
1630 Comment test 3
1631 !! wikitext
1632 asdf
1633 <!-- comment 1 -->
1634 <!-- comment 2 -->
1636 !! html
1637 <p>asdf
1639 </p>
1640 !! end
1642 !! test
1643 Comment test 4
1644 !! wikitext
1645 asdf<!-- comment 1 -->jkl
1646 !! html
1647 <p>asdfjkl
1648 </p>
1649 !! end
1651 !! test
1652 Comment spacing
1653 !! wikitext
1655  <!-- foo --> b <!-- bar -->
1657 !! html
1658 <p>a
1659 </p>
1660 <pre> b 
1661 </pre>
1662 <p>c
1663 </p>
1664 !! end
1666 !! test
1667 Comment whitespace
1668 !! wikitext
1669 <!-- returns a single newline, not nothing, since the newline after > is not stripped -->
1670 !! html
1672 !! end
1674 !! test
1675 Comment semantics and delimiters
1676 !! wikitext
1677 <!-- --><!----><!-----><!------>
1678 !! html/php
1680 !! html/parsoid
1681 <!-- --><!----><!--&#x2D;--><!--&#x2D;&#x2D;-->
1682 !! end
1684 !! test
1685 Comment semantics and delimiters, redux
1686 !! wikitext
1687 <!-- In SGML every "foo" here would actually show up in the text -- foo -- bar
1688 -- foo -- funky huh? ... -->
1689 !! html/php
1691 !! html/parsoid
1692 <!-- In SGML every "foo" here would actually show up in the text &#x2D;&#x2D; foo &#x2D;&#x2D; bar
1693 &#x2D;&#x2D; foo &#x2D;&#x2D; funky huh? ... -->
1694 !! end
1696 !! test
1697 Comment semantics and delimiters: directors cut
1698 !! wikitext
1699 <!-- ... However we like to keep things simple and somewhat XML-ish so we eat
1700 everything starting with < followed by !-- until the first -- and > we see,
1701 that wouldn't be valid XML however, since in XML -- has to terminate a comment
1702 -->-->
1703 !! html/php
1704 <p>--&gt;
1705 </p>
1706 !! html/parsoid
1707 <!-- ... However we like to keep things simple and somewhat XML&#x2D;ish so we eat
1708 everything starting with < followed by !&#x2D;&#x2D; until the first &#x2D;&#x2D; and &#x3E; we see,
1709 that wouldn't be valid XML however, since in XML &#x2D;&#x2D; has to terminate a comment
1710 --><p>--></p>
1711 !! end
1713 !! test
1714 Comment semantics: nesting
1715 !! wikitext
1716 <!--<!-- no, we're not going to do anything fancy here -->-->
1717 !! html/php
1718 <p>--&gt;
1719 </p>
1720 !! html/parsoid
1721 <!--<!&#x2D;&#x2D; no, we're not going to do anything fancy here --><p>--></p>
1722 !! end
1724 # Parsoid closes the unclosed comment, even if it means a slight
1725 # round-trip diff.
1726 !! test
1727 Comment semantics: unclosed comment at end
1728 !! options
1729 parsoid=wt2html,html2html
1730 !! wikitext
1731 <!--This comment will run out to the end of the document
1732 !! html/php
1734 !! html/parsoid
1735 <!--This comment will run out to the end of the document-->
1736 !! end
1738 !! test
1739 Comment semantics: normalize comments to play nice with XML and browsers
1740 !! wikitext
1741 <!-- Browsers --!> think this is closed -->
1742 <!--> This would normally be text -->
1743 <!---> As would this -->
1744 <!-- XML doesn't like trailing dashes -------->
1745 <!-- Nor doubled hyphens -- anywhere in the data -->
1746 But this is not a comment.
1747 !! html/php
1748 <p>But this is not a comment.
1749 </p>
1750 !! html/parsoid
1751 <!-- Browsers &#x2D;&#x2D;!&#x3E; think this is closed -->
1752 <!--&#x3E; This would normally be text -->
1753 <!--&#x2D;&#x3E; As would this -->
1754 <!-- XML doesn't like trailing dashes &#x2D;&#x2D;&#x2D;&#x2D;&#x2D;&#x2D;-->
1755 <!-- Nor doubled hyphens &#x2D;&#x2D; anywhere in the data -->
1756 <p>But this is not a comment.</p>
1757 !! end
1759 !! test
1760 Comment semantics: round-trip even text which contains encoded -->
1761 !! wikitext
1762 <!-- hello & goodbye - > --&gt; --&amp;gt; --&xx -->
1763 !! html/parsoid
1764 <!-- hello &#x26; goodbye &#x2D; &#x3E; &#x2D;&#x2D;&#x3E; &#x2D;&#x2D;&#x26;gt; &#x2D;&#x2D;&#x26;xx -->
1765 !! end
1767 !! test
1768 Comment in template title
1769 !! wikitext
1770 {{f<!---->oo}}
1771 !! html
1772 <p>FOO
1773 </p>
1774 !! end
1776 !! test
1777 Comment on its own line post-expand
1778 !! wikitext
1780 {{blank}}<!---->
1782 !! html
1783 <p>a
1784 </p><p>b
1785 </p>
1786 !! end
1788 !! test
1789 Comment on its own line post-expand with non-significant whitespace
1790 !! wikitext
1792  {{blank}} <!----> 
1794 !! html
1795 <p>a
1796 </p><p>b
1797 </p>
1798 !! end
1800 !! test
1801 Multiple comments should still parse as SOL-transparent
1802 !! options
1803 parsoid=wt2html,wt2wt
1804 !! wikitext
1805 <!--c1-->*a
1806 <!--c2--><!--c3--><!--c4-->*b
1807 !! html/php
1808 <ul><li>a</li>
1809 <li>b</li></ul>
1811 !! html/parsoid
1812 <!--c1--><ul>
1813 <li>a
1814 </li>
1815 <!--c2--><!--c3--><!--c4-->
1816 <li>b
1817 </li>
1818 </ul>
1819 !! end
1822 ### paragraph wrapping tests
1824 !! test
1825 No block tags
1826 !! wikitext
1830 !! html
1831 <p>a
1832 </p><p>b
1833 </p>
1834 !! end
1836 !! test
1837 Block tag on one line (<div>)
1838 !! wikitext
1839 a <div>foo</div>
1842 !! html
1843 a <div>foo</div>
1844 <p>b
1845 </p>
1846 !! html+tidy
1847 <p>a</p>
1848 <div>foo</div>
1849 <p>b</p>
1850 !! end
1852 !! test
1853 Block tag on one line (<blockquote>)
1854 !! wikitext
1855 a <blockquote>foo</blockquote>
1858 !! html
1859 a <blockquote>foo</blockquote>
1860 <p>b
1861 </p>
1862 !! html+tidy
1863 <p>a</p>
1864 <blockquote>
1865 <p>foo</p>
1866 </blockquote>
1867 <p>b</p>
1868 !! end
1870 !! test
1871 Block tag on both lines (<div>)
1872 !! wikitext
1873 a <div>foo</div>
1875 b <div>foo</div>
1876 !! html
1877 a <div>foo</div>
1878 b <div>foo</div>
1880 !! html+tidy
1881 <p>a</p>
1882 <div>foo</div>
1883 <p>b</p>
1884 <div>foo</div>
1885 !! end
1887 !! test
1888 Block tag on both lines (<blockquote>)
1889 !! wikitext
1890 a <blockquote>foo</blockquote>
1892 b <blockquote>foo</blockquote>
1893 !! html
1894 a <blockquote>foo</blockquote>
1895 b <blockquote>foo</blockquote>
1897 !! html+tidy
1898 <p>a</p>
1899 <blockquote>
1900 <p>foo</p>
1901 </blockquote>
1902 <p>b</p>
1903 <blockquote>
1904 <p>foo</p>
1905 </blockquote>
1906 !! end
1908 !! test
1909 Multiple lines without block tags
1910 !! wikitext
1911 <div>foo</div> a
1914 d<!--foo--> e
1915 x <div>foo</div> z
1916 !! html
1917 <div>foo</div> a
1918 <p>b
1920 d e
1921 </p>
1922 x <div>foo</div> z
1924 !! html+tidy
1925 <div>foo</div>
1926 <p>a</p>
1927 <p>b c d e</p>
1928 <p>x</p>
1929 <div>foo</div>
1930 <p>z</p>
1931 !! end
1933 # Tidy strips out the empty <div> tags. Parsoid doesn't.
1934 # So, we have a separate section for Parsoid. We don't want
1935 # to mimic this stripping behavior in Parsoid. It affects
1936 # editing experience and also requires us to maintain additional
1937 # info for RT-ing.
1938 !! test
1939 Empty lines between lines with block tags
1940 !! wikitext
1941 <div></div>
1944 <div></div>a
1947 <div>a</div>b
1949 <div>b</div>d
1952 <div>e</div>
1953 !! html
1954 <div></div>
1955 <p><br />
1956 </p>
1957 <div></div>a
1958 <p>b
1959 </p>
1960 <div>a</div>b
1961 <div>b</div>d
1962 <p><br />
1963 </p>
1964 <div>e</div>
1966 !! html+tidy
1967 <p><br /></p>
1968 <p>a</p>
1969 <p>b</p>
1970 <div>a</div>
1971 <p>b</p>
1972 <div>b</div>
1973 <p>d</p>
1974 <p><br /></p>
1975 <div>e</div>
1976 !! html/parsoid
1977 <div data-parsoid='{"stx":"html"}'></div>
1979 <p><br /></p>
1980 <div data-parsoid='{"stx":"html"}'></div><p>a</p>
1982 <p>b</p>
1983 <div data-parsoid='{"stx":"html"}'>a</div><p>b</p>
1985 <div data-parsoid='{"stx":"html"}'>b</div><p>d</p>
1987 <p><br /></p>
1988 <div data-parsoid='{"stx":"html"}'>e</div>
1989 !! end
1991 ## PHP parser emits output which is broken
1992 !! test
1993 Unclosed HTML p-tags should be handled properly
1994 !! wikitext
1995 <div><p>foo</div>
1999 !! html/php+tidy
2000 <div>
2001 <p>foo</p>
2002 </div>
2003 <p>a</p>
2004 <p>b</p>
2005 !! html/parsoid
2006 <div data-parsoid='{"stx":"html"}'><p data-parsoid='{"stx":"html", "autoInsertedEnd":true}'>foo</p></div>
2007 <p>a</p>
2008 <p>b</p>
2009 !! end
2011 ## SSS FIXME: I can come up with other scenarios where this doesn't work because
2012 ## of eager output of buffered tokens in the p-wrapper. But, I'm going to ignore
2013 ## them for now.
2014 !! test
2015 1. P-wrapping should leave sol-transparent tags outside p-tags where possible
2016 !! options
2017 parsoid=wt2html
2018 !! wikitext
2019 a [[Category:A1]] [[Category:A2]]
2020 [[Category:A3]]
2021 [[Category:A4]]
2022 !! html/parsoid
2023 <p>a</p>
2024 <link rel="mw:PageProp/Category" href="./Category:A1"/> <link rel="mw:PageProp/Category" href="./Category:A2"/> <link rel="mw:PageProp/Category" href="./Category:A3"/> <link rel="mw:PageProp/Category" href="./Category:A4"/>
2025 !! end
2027 !! test
2028 2. P-wrapping should leave sol-transparent tags outside p-tags where possible
2029 !! options
2030 parsoid=wt2html
2031 !! wikitext
2032 [[Category:A1]]a
2033 !! html/parsoid
2034 <link rel="mw:PageProp/Category" href="./Category:A1"/><p>a</p>
2035 !! end
2038 ### Preformatted text
2040 !! test
2041 Preformatted text
2042 !! wikitext
2043  This is some
2044  Preformatted text
2045  With ''italic''
2046  And '''bold'''
2047  And a [[Main Page|link]]
2048 !! html
2049 <pre>This is some
2050 Preformatted text
2051 With <i>italic</i>
2052 And <b>bold</b>
2053 And a <a href="/wiki/Main_Page" title="Main Page">link</a>
2054 </pre>
2055 !! end
2057 !! test
2058 Tabs don't trigger preformatted text
2059 !! wikitext
2060         This is not
2061          preformatted text.
2062  This is preformatted text.
2063         So is this.
2064 !! html/php
2065 <p>     This is not
2066          preformatted text.
2067 </p>
2068 <pre>This is preformatted text.
2069         So is this.
2070 </pre>
2071 !! html/parsoid
2072 <p>     This is not
2073          preformatted text.</p>
2074 <pre>This is preformatted text.
2075         So is this.</pre>
2076 !! end
2078 !! test
2079 Space before tab needs nowiki pre protection
2080 !! options
2081 parsoid=html2wt
2082 !! html/parsoid
2083 <p>     a</p>
2084 !! wikitext
2085 <nowiki> </nowiki>      a
2086 !! end
2088 !! test
2089 Ident preformatting with inline content
2090 !! wikitext
2092  ''b''
2093 !! html
2094 <pre>a
2095 <i>b</i>
2096 </pre>
2097 !! end
2099 !! test
2100 <pre> with <nowiki> inside (compatibility with 1.6 and earlier)
2101 !! wikitext
2102 <pre><nowiki>
2104 <cite>
2105 <em>
2106 </nowiki></pre>
2107 !! html
2108 <pre>
2109 &lt;b&gt;
2110 &lt;cite&gt;
2111 &lt;em&gt;
2112 </pre>
2114 !! end
2116 !! test
2117 Regression with preformatted in <center>
2118 !! wikitext
2119 <center>
2120  Blah
2121 </center>
2122 !! html
2123 <center>
2124 <pre>Blah
2125 </pre>
2126 </center>
2128 !! end
2130 !! test
2131 Bug 52763: Preformatted in <blockquote>
2132 !! wikitext
2133 <blockquote>
2134  Blah
2137  indented cell (no pre-wrapping!)
2139 </blockquote>
2140 !! html
2141 <blockquote>
2142 <p> Blah
2143 </p>
2144 <table>
2145 <tr>
2146 <td>
2147 <p> indented cell (no pre-wrapping!)
2148 </p>
2149 </td></tr></table>
2150 </blockquote>
2152 !! end
2154 !! test
2155 Bug 51086: Double newlines in blockquotes should be turned into paragraphs
2156 !! wikitext
2157 <blockquote>
2161 </blockquote>
2162 !! html
2163 <blockquote>
2164 <p>Foo
2165 </p><p>Bar
2166 </p>
2167 </blockquote>
2169 !! end
2171 !! test
2172 Bug 15491: <ins>/<del> in blockquote
2173 !! wikitext
2174 <blockquote>
2175 Foo <del>bar</del> <ins>baz</ins> quux
2176 </blockquote>
2177 !! html
2178 <blockquote>
2179 <p>Foo <del>bar</del> <ins>baz</ins> quux
2180 </p>
2181 </blockquote>
2183 !! end
2185 # Note that the p-wrapping is newline sensitive, which could be
2186 # considered a bug: tidy will wrap only the 'Foo' in the example
2187 # below in a <p> tag. (see comment 23-25 of bug #6200)
2188 !! test
2189 Bug 15491: <ins>/<del> in blockquote (2)
2190 !! wikitext
2191 <blockquote>Foo <del>bar</del> <ins>baz</ins> quux
2192 </blockquote>
2193 !! html
2194 <blockquote>Foo <del>bar</del> <ins>baz</ins> quux
2195 </blockquote>
2197 !! html+tidy
2198 <blockquote>
2199 <p>Foo</p>
2200 <del>bar</del> <ins>baz</ins> quux</blockquote>
2201 !! end
2203 !! test
2204 <pre> with attributes (bug 3202)
2205 !! wikitext
2206 <pre style="background: blue; color:white">Bluescreen of WikiDeath</pre>
2207 !! html
2208 <pre style="background: blue; color:white">Bluescreen of WikiDeath</pre>
2210 !! end
2212 !! test
2213 <pre> with width attribute (bug 3202)
2214 !! wikitext
2215 <pre width="8">Narrow screen goodies</pre>
2216 !! html
2217 <pre width="8">Narrow screen goodies</pre>
2219 !! end
2221 !! test
2222 <pre> with forbidden attribute (bug 3202)
2223 !! wikitext
2224 <pre width="8" onmouseover="alert(document.cookie)">Narrow screen goodies</pre>
2225 !! html
2226 <pre width="8">Narrow screen goodies</pre>
2228 !! end
2230 !! test
2231 Entities inside <pre>
2232 !! wikitext
2233 <pre>&lt;</pre>
2234 !! html
2235 <pre>&lt;</pre>
2237 !! end
2239 !! test
2240 <pre> with forbidden attribute values (bug 3202)
2241 !! wikitext
2242 <pre width="8" style="border-width: expression(alert(document.cookie))">Narrow screen goodies</pre>
2243 !! html
2244 <pre width="8" style="/* insecure input */">Narrow screen goodies</pre>
2246 !! end
2248 !! test
2249 <nowiki> inside <pre> (bug 13238)
2250 !! wikitext
2251 <pre>
2252 <nowiki>
2253 </pre>
2254 <pre>
2255 <nowiki></nowiki>
2256 </pre>
2257 <pre><nowiki><nowiki></nowiki>Foo<nowiki></nowiki></nowiki></pre>
2258 !! html
2259 <pre>
2260 &lt;nowiki&gt;
2261 </pre>
2262 <pre>
2264 </pre>
2265 <pre>&lt;nowiki&gt;Foo&lt;/nowiki&gt;</pre>
2267 !! end
2269 !! test
2270 <nowiki> and <pre> preference (first one wins)
2271 !! wikitext
2272 <pre>
2273 <nowiki>
2274 </pre>
2275 </nowiki>
2276 </pre>
2278 <nowiki>
2279 <pre>
2280 <nowiki>
2281 </pre>
2282 </nowiki>
2283 </pre>
2285 !! html/php
2286 <pre>
2287 &lt;nowiki&gt;
2288 </pre>
2289 <p>&lt;/nowiki&gt;
2290 &lt;/pre&gt;
2291 </p><p>
2292 &lt;pre&gt;
2293 &lt;nowiki&gt;
2294 &lt;/pre&gt;
2296 &lt;/pre&gt;
2297 </p>
2298 !! html/parsoid
2299 <pre data-parsoid='{"stx":"html","strippedNL":true}'>&lt;nowiki>
2300 </pre>
2301 <p><span typeof="mw:Placeholder" data-parsoid='{"src":"&lt;/nowiki>"}'>&lt;/nowiki></span>
2302 &lt;/pre></p>
2304 <p><span typeof="mw:Nowiki">
2305 &lt;pre>
2306 &lt;nowiki>
2307 &lt;/pre>
2308 </span>
2309 &lt;/pre></p>
2310 !! end
2312 !! test
2313 </pre> inside nowiki
2314 !! wikitext
2315 <nowiki></pre></nowiki>
2316 !! html
2317 <p>&lt;/pre&gt;
2318 </p>
2319 !! end
2321 # Parsoid doesn't strip empty tags, like Tidy does.
2322 !! test
2323 Empty pre; pre inside other HTML tags (bug 54946)
2324 !! options
2325 parsoid=wt2html,wt2wt
2326 !! wikitext
2329 <div><pre>
2331 </pre></div>
2332 <pre></pre>
2333 !! html/php
2334 <p>a
2335 </p>
2336 <div><pre>
2338 </pre></div>
2339 <pre></pre>
2341 !! html/php+tidy
2342 <p>a</p>
2343 <div>
2344 <pre>
2346 </pre></div>
2347 !! html/parsoid
2348 <p>a</p>
2350 <div><pre>foo
2351 </pre></div>
2352 <pre></pre>
2353 !! end
2355 !! test
2356 HTML pre followed by indent-pre
2357 !! wikitext
2358 <pre>foo</pre>
2359  bar
2360 !! html
2361 <pre>foo</pre>
2362 <pre>bar
2363 </pre>
2364 !! end
2366 # Note that tidy removes the empty <p> tags from the start and end.
2367 # Parsoid does not, by design.
2368 !!test
2369 Block tag pre
2370 !! wikitext
2371 <p><pre>foo</pre></p>
2372 !! html/php+tidy
2373 <pre>
2375 </pre>
2376 !! html/parsoid
2377 <p data-parsoid='{"stx":"html","autoInsertedEnd":true}'></p><pre data-parsoid='{"stx":"html"}'>foo</pre><p data-parsoid='{"autoInsertedStart":true,"stx":"html"}'></p>
2378 !!end
2380 !!test
2381 Templates: Indent-Pre: 1a. Templates that break a line should suppress <pre>
2382 !! wikitext
2383  {{echo|}}
2384 !! html
2386 !!end
2388 !!test
2389 Templates: Indent-Pre: 1b. Templates that break a line should suppress <pre>
2390 !! wikitext
2391  {{echo|
2392 foo}}
2393 !! html
2394 <p>foo
2395 </p>
2396 !!end
2398 !! test
2399 Templates: Indent-Pre: 1c: Wrapping should be based on expanded content
2400 !! wikitext
2401  {{echo|a
2403 !! html
2404 <pre>a
2405 </pre>
2406 <p>b
2407 </p>
2408 !!end
2410 !! test
2411 Templates: Indent-Pre: 1d: Wrapping should be based on expanded content
2412 !! wikitext
2413  {{echo|a
2419 !! html
2420 <pre>a
2421 </pre>
2422 <p>b
2424 </p>
2425 <pre>d
2426 </pre>
2427 <p>e
2428 </p>
2429 !!end
2431 !!test
2432 Templates: Indent-Pre: 1e. Wrapping should be based on expanded content
2433 !! wikitext
2434 {{echo| foo}}
2436 {{echo| foo}}{{echo| bar}}
2438 {{echo| foo}}
2439 {{echo| bar}}
2441 {{echo|<!--cmt--> foo}}
2443 <!--cmt-->{{echo| foo}}
2445 {{echo|{{echo| }}bar}}
2446 !! html
2447 <pre>foo
2448 </pre>
2449 <pre>foo bar
2450 </pre>
2451 <pre>foo
2453 </pre>
2454 <pre>foo
2455 </pre>
2456 <pre>foo
2457 </pre>
2458 <pre>bar
2459 </pre>
2460 !!end
2462 !! test
2463 Templates: Indent-Pre: 1f: Wrapping should be based on expanded content
2464 !! wikitext
2465 {{echo| }}a
2467 {{echo|
2468  }}a
2470 {{echo|
2471  b}}
2473 {{echo|a
2474  }}b
2476 {{echo|a
2477 }} b
2478 !! html
2479 <pre>a
2480 </pre>
2481 <p><br />
2482 </p>
2483 <pre>a
2484 </pre>
2485 <p><br />
2486 </p>
2487 <pre>b
2488 </pre>
2489 <p>a
2490 </p>
2491 <pre>b
2492 </pre>
2493 <p>a
2494 </p>
2495 <pre>b
2496 </pre>
2497 !!end
2499 !! test
2500 Pres with newline attributes
2501 !! wikitext
2502 <pre class="one
2503 two">hi</pre>
2504 !! html/php
2505 <pre class="one two">hi</pre>
2507 !! html/parsoid
2508 <pre class="one
2509 two" data-parsoid='{"stx":"html"}'>hi</pre>
2510 !! end
2512 !! test
2513 Things that look like <pre> tags aren't treated as such
2514 !! wikitext
2515 Barack Obama <President> of the United States
2516 <President></President>
2517 !! html
2518 <p>Barack Obama &lt;President&gt; of the United States
2519 &lt;President&gt;&lt;/President&gt;
2520 </p>
2521 !! end
2523 ## PHP parser discards the "<pre " string
2524 !! test
2525 Handle broken pre-like tags (bug 64025)
2526 !! options
2527 parsoid=wt2html
2528 !! wikitext
2529 {{echo|<pre <pre>x</pre>}}
2531 <table><pre </table>
2532 !! html/php
2533 <pre>x</pre>
2534 <table><pre></pre></table>
2536 !! html/parsoid
2537 <pre about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"a":{"&lt;pre":null},"sa":{"&lt;pre":""},"stx":"html","pi":[[{"k":"1","spc":["","","",""]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;pre &lt;pre>x&lt;/pre>"}},"i":0}}]}'>x</pre>
2540 <p>&lt;pre </p>
2542 <table></table>
2543 !! end
2545 !! test
2546 Parsoid: handle pre with space after attribute
2547 !! options
2548 parsoid=wt2html
2549 !! wikitext
2550 <pre style="width:50%;" >{{echo|foo}}</pre>
2551 !! html/php
2552 <pre style="width:50%;">{{echo|foo}}</pre>
2554 !! html/parsoid
2555 <pre style="width:50%;">{{echo|foo}}</pre>
2556 !! end
2558 # TODO / maybe: fix wt2wt for this
2559 !! test
2560 Parsoid: Don't paragraph-wrap fosterable content
2561 !! options
2562 parsoid=wt2html
2563 !! wikitext
2565 <td></td>
2566 <td></td>
2571 !! html
2572 <table>
2574 <tbody>
2575 <tr>
2576 <td></td>
2578 <td></td></tr>
2582 </tbody></table>
2583 !! end
2585 !! test
2586 Parsoid: Don't paragraph-wrap fosterable content even if table syntax is unbalanced
2587 !! options
2588 parsoid=wt2html
2589 !! wikitext
2591 <td>
2592 <td>
2593 </td>
2598 !! html
2599 <table>
2601 <tbody>
2602 <tr>
2603 <td></td>
2605 <td>
2606 </td></tr>
2610 </tbody></table>
2611 !! end
2614 #--------------------------------------------------------------------
2615 # Transclusion parameter whitespace stripping tests
2616 # Behavior is different for positional and named parameters
2617 #--------------------------------------------------------------------
2618 !! test
2619 Templates: Strip leading and trailing whitespace from named-param values
2620 !! wikitext
2621 {{echo|1= a }}
2623 {{echo|1= {{echo|b}} }}
2625 {{echo| 1 =
2626  c }}
2628 {{echo| 1 =
2629 * d
2631 !! html
2632 <p>a
2633 </p><p>b
2634 </p><p>c
2635 </p>
2636 <ul><li> d</li></ul>
2638 !! end
2640 !! test
2641 Templates: Don't strip whitespace from positional-param values
2642 !! wikitext
2643 {{echo|a }}
2645 {{echo|{{echo|b}} }}
2647 {{echo| c 
2650 {{echo| {{echo|d}}
2653 {{echo|
2654  e}}
2656 {{echo|
2657 * f}}
2659 {{echo|
2660  }}g
2661 !! html
2662 <p>a 
2663 </p><p>b 
2664 </p>
2665 <pre>c 
2666 </pre>
2667 <p><br />
2668 </p>
2669 <pre>d
2670 </pre>
2671 <p><br />
2672 </p>
2673 <pre>e
2674 </pre>
2675 <p><br />
2676 </p>
2677 <ul><li> f</li></ul>
2678 <p><br />
2679 </p>
2680 <pre>g
2681 </pre>
2682 !! end
2684 !! test
2685 Templates: Handle empty comment-and-ws-only lines correctly
2686 !! wikitext
2687 {{echo|foo
2688 <!--should be ignored-->
2689  <!--should be ignored as well-->
2690 bar}}
2691 !! html
2692 <p>foo
2694 </p>
2695 !! end
2697 !! test
2698 Templates: Handle comments in the target
2699 !! wikitext
2700 {{echo
2701 <!-- should be ignored -->
2702 |foo}}
2704 {{echo<!-- should be ignored -->
2705 |foo}}
2707 {{echo<!-- should be ignored -->|foo}}
2709 {{<!-- should be ignored -->echo|foo}}
2710 !!html/parsoid
2711 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo\n&lt;!-- should be ignored -->\n","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</p>
2713 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo&lt;!-- should be ignored -->\n","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</p>
2715 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo&lt;!-- should be ignored -->","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</p>
2717 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</p>
2718 !!end
2720 !! test
2721 Templates: Handle comments in parameter names (bug 67657)
2722 !! wikitext
2723 {{echo|1
2724 <!-- should be ignored -->
2725 =foo}}
2727 {{echo|
2728 <!-- should be ignored -->
2729 1 = foo}}
2731 {{echo|1<!-- should be ignored --> = foo}}
2733 {{echo|<!-- should be ignored -->1 = foo}}
2734 !!html/parsoid
2735 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo","key":{"wt":"1\n&lt;!-- should be ignored -->"}}},"i":0}}]}'>foo</p>
2737 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo","key":{"wt":"&lt;!-- should be ignored -->\n1"}}},"i":0}}]}'>foo</p>
2739 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo","key":{"wt":"1&lt;!-- should be ignored -->"}}},"i":0}}]}'>foo</p>
2741 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo","key":{"wt":"&lt;!-- should be ignored -->1"}}},"i":0}}]}'>foo</p>
2742 !!end
2744 !! test
2745 Templates: Other wikitext in parameter names (bug 67657)
2746 !! wikitext
2747 {{echo|''1''=foo}}
2748 !!html/parsoid
2749 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"&#39;&#39;1&#39;&#39;":{"wt":"foo"}},"i":0}}]}'>{{{1}}}</p>
2750 !!html/php
2751 <p>{{{1}}}
2752 </p>
2753 !!end
2755 #--------------------------------------------------------------------
2756 # Transclusion parameter escaping tests
2757 #--------------------------------------------------------------------
2758 !! test
2759 Templates: Parsoid parameter escaping test 1
2760 !! wikitext
2761 {{echo|[foo]|{{echo|[bar]}}}}
2762 !! html/php+tidy
2763 <p>[foo]</p>
2764 !! html/parsoid
2765 <p about="#mwt1" typeof="mw:Transclusion"
2766 data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[foo]"},"2":{"wt":"{{echo|[bar]}}"}},"i":0}}]}'>[foo]</p>
2767 !! end
2769 !! test
2770 Parsoid: Pipes in external links in template parameter
2771 !! wikitext
2772 {{echo|[{{echo|http://example.com}} link]}}
2773 !! html/php+tidy
2774 <p><a rel="nofollow" class="external text" href="http://example.com">link</a></p>
2775 !! html/parsoid
2776 <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>
2777 !! end
2779 !! test
2780 Parsoid: pipe in transclusion parameter
2781 !! wikitext
2782 {{echo|http://foo.com/a&#124;b}}
2783 !! html/php+tidy
2784 <p><a rel="nofollow" class="external free" href="http://foo.com/a%7Cb">http://foo.com/a%7Cb</a></p>
2785 !! html/parsoid
2786 <p><a rel="mw:ExtLink" href="http://foo.com/a|b" about="#mwt1"
2787 typeof="mw:Transclusion"
2788 data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"http://foo.com/a&amp;#124;b"}},"i":0}}]}'>http://foo.com/a|b</a></p>
2789 !! end
2791 !! test
2792 Parsoid: Pipe in external link target and content in template parameter
2793 !! options
2794 parsoid=html2wt,wt2wt
2795 !! wikitext
2796 {{echo|[http://foo.com/a&#124;b a&#124;b]}}
2797 !! html/php+tidy
2798 <p><a rel="nofollow" class="external text" href="http://foo.com/a%7Cb">a|b</a></p>
2799 !! html/parsoid
2800 <p><a rel="mw:ExtLink" href="http://foo.com/a|b" about="#mwt1"
2801 typeof="mw:Transclusion"
2802 data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},
2803 "params":{"1":{"wt":"[http://foo.com/a|b a|b]"}},"i":0}}]}'>a|b</a></p>
2804 !! end
2806 !! test
2807 Parsoid: Pipe in template with nested template in external link target in template parameter (seriously)
2808 !! options
2809 parsoid
2810 !! wikitext
2811 {{echo|[{{fullurl:{{FULLPAGENAME}}|action=edit}} bar]}}
2812 !! html
2813 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[{{fullurl:{{FULLPAGENAME}}|action=edit}} bar]"}},"i":0}}]}'>[Main Page bar]</p>
2814 !! end
2816 !! test
2817 Templates: Don't escape already nowiki-escaped text in template parameters
2818 !! options
2819 parsoid=html2wt,wt2wt
2820 !! wikitext
2821 {{echo|foo<nowiki>|</nowiki>bar}}
2822 {{echo|<nowiki>&lt;div&gt;</nowiki>}}
2823 {{echo|<nowiki></nowiki>}}
2824 !! html/php+tidy
2825 <p>foo|bar &lt;div&gt;</p>
2826 !! html/parsoid
2827 <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>
2828 <span typeof="mw:Transclusion mw:Nowiki" about="#mwt2" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<nowiki>&amp;lt;div&amp;gt;</nowiki>"}},"i":0}}]}'><span typeof="mw:Entity">&lt;</span>div<span typeof="mw:Entity">&gt;</span></span>
2829 <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>
2830 </p>
2831 !! end
2833 ## Bug 52824
2834 !! test
2835 Templates: '=' char in nested transclusions should not trigger nowiki escapes or conversion to named param
2836 !! options
2837 parsoid=html2wt,wt2wt
2838 !! wikitext
2839 {{echo|{{echo|1=bar}}}}
2840 !! html/php+tidy
2841 <p>bar</p>
2842 !! html/parsoid
2843 <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>
2844 !! end
2846 ## Bug 56733
2847 !! test
2848 Templates parameters with special tokenizing behavior dont get modified because of arg escaping
2849 !! wikitext
2850 {{echo|a : b}}
2851 !! html/php+tidy
2852 <p>a&#160;: b</p>
2853 !! html/parsoid
2854 <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:DisplaySpace mw:Placeholder" data-parsoid='{"isDisplayHack":true}'> </span>: b</p>
2855 !! end
2857 ## Bug T73412
2858 !! test
2859 Templates: Preserve blank parameter names
2860 !! wikitext
2861 {{echo|=foo}}
2862 !! html/php+tidy
2863 <p>{{{1}}}</p>
2864 !! html/parsoid
2865 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"":{"wt":"foo"}},"i":0}}]}'>{{{1}}}</p>
2866 !! end
2868 !! test
2869 Templates: Preserve blank parameter names in other positions
2870 !! wikitext
2871 {{blank_param|bar|=foo}}
2872 !! html/php+tidy
2873 <p>bar foo</p>
2874 !! html/parsoid
2875 <p about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]},{"k":"","named":true,"spc":["","","",""]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"blank_param","href":"./Template:Blank_param"},"params":{"1":{"wt":"bar"},"":{"wt":"foo"}},"i":0}}]}'>bar
2876 foo</p>
2877 !! end
2880 ### Parsoid-centric tests for testing RT edge cases for pre
2883 !!test
2884 1a. Indent-Pre and Comments
2885 !! wikitext
2887 <!--a-->
2889 !! html
2890 <pre>a
2891 </pre>
2892 <p>c
2893 </p>
2894 !!end
2896 !!test
2897 1b. Indent-Pre and Comments
2898 !! wikitext
2900  <!--a-->
2902 !! html
2903 <pre>a
2904 </pre>
2905 <p>c
2906 </p>
2907 !!end
2909 !!test
2910 1c. Indent-Pre and Comments
2911 !! wikitext
2912 <!--a-->  a
2914  <!--a--> a
2915 !! html
2916 <pre> a
2917 </pre>
2918 <pre> a
2919 </pre>
2920 !!end
2922 !!test
2923 1d. Indent-Pre and Comments
2924 (Pre-handler currently cannot distinguish between comment/ws order and normalizes them to [comment,ws] order)
2925 !! wikitext
2926 <!--a--> a
2928  <!--b-->b
2929 !! html
2930 <pre>a
2931 </pre>
2932 <pre>b
2933 </pre>
2934 !!end
2936 !!test
2937 2a. Indent-Pre and tables
2938 !! wikitext
2939  {|
2940  |-
2941  !h1!!h2
2942  |foo||bar
2943  |}
2944 !! html
2945 <table>
2947 <tr>
2948 <th>h1</th>
2949 <th>h2
2950 </th>
2951 <td>foo</td>
2952 <td>bar
2953 </td></tr></table>
2955 !!end
2957 !!test
2958 2b. Indent-Pre and tables
2959 !! wikitext
2960   {|
2961  |-
2962 |foo
2964 !! html
2965 <table>
2967 <tr>
2968 <td>foo
2969 </td></tr></table>
2971 !!end
2973 !!test
2974 2c. Indent-Pre and tables (bug 42252)
2975 !! wikitext
2977  |+ foo
2978  !  | bar
2980 !! html
2981 <table>
2982 <caption> foo
2983 </caption>
2984 <tr>
2985 <th> bar
2986 </th></tr></table>
2988 !!end
2990 !!test
2991 2d. Indent-Pre and tables
2992 !! wikitext
2994  {|
2995  | b
2996  |}
2997 !! html/php
2998 <pre>a
2999 </pre>
3000 <table>
3001 <tr>
3002 <td> b
3003 </td></tr></table>
3005 !! html/parsoid
3006 <pre>a</pre>
3007  <table>
3008  <tbody><tr><td> b</td></tr>
3009  </tbody></table>
3010 !!end
3012 !!test
3013 2e. Indent-Pre and table-line syntax
3014 !! wikitext
3016  | b
3017  | c
3018 !! html/php
3019 <pre>a
3020 | b
3021 | c
3022 </pre>
3023 !!end
3025 !!test
3026 2f. Indent-pre started by table-line syntax
3027 !! wikitext
3029  | b
3030  | c
3031 !! html/php
3032 <p>a
3033 </p>
3034 <pre>| b
3035 | c
3036 </pre>
3037 !! html/parsoid
3038 <p>a</p>
3039 <pre>
3040 | b
3041 | c</pre>
3042 !!end
3044 !!test
3045 3a. Indent-Pre and block tags (single-line html)
3046 !! wikitext
3047  a <p> foo </p>
3048  b <div> foo </div>
3049  c <blockquote> foo </blockquote>
3050  <span> foo </span>
3051 !! html
3052  a <p> foo </p>
3053  b <div> foo </div>
3054  c <blockquote> foo </blockquote>
3055 <pre><span> foo </span>
3056 </pre>
3057 !! html/parsoid
3058  <p>a </p><p data-parsoid='{"stx":"html"}'> foo </p>
3059  <p>b </p><div data-parsoid='{"stx":"html"}'> foo </div>
3060  <p>c </p><blockquote data-parsoid='{"stx":"html"}'> foo </blockquote>
3061 <pre><span> foo </span>
3062 </pre>
3063 !! html+tidy
3064 <p>a</p>
3065 <p>foo</p>
3066 <p>b</p>
3067 <div>foo</div>
3068 <p>c</p>
3069 <blockquote>
3070 <p>foo</p>
3071 </blockquote>
3072 <pre>
3073 <span> foo </span>
3074 </pre>
3075 !! end
3077 !!test
3078 3b. Indent-Pre and block tags (multi-line html)
3079 !! wikitext
3080  a <span>foo</span>
3081  b <div> foo </div>
3082 !! html
3083 <pre>a <span>foo</span>
3084 </pre>
3085  b <div> foo </div>
3087 !! html/parsoid
3088 <pre>a <span data-parsoid='{"stx":"html"}'>foo</span></pre>
3089  b <div data-parsoid='{"stx":"html"}'> foo </div>
3090 !! html+tidy
3091 <pre>
3092 a <span>foo</span>
3093 </pre>
3094 <p>b</p>
3095 <div>foo</div>
3096 !!end
3098 !!test
3099 3c. Indent-Pre and block tags (pre-content on separate line)
3100 !! wikitext
3102  foo
3103 </p>
3105 <div>
3106  foo
3107 </div>
3109 <center>
3110  foo
3111 </center>
3113 <blockquote>
3114  foo
3115 </blockquote>
3117 <blockquote>
3118 <pre>
3120 </pre>
3121 </blockquote>
3123 <table><tr><td>
3124  foo
3125 </td></tr></table>
3127 <ul><li>
3128   foo
3129 </li></ul>
3131 !! html
3133  foo
3134 </p>
3135 <div>
3136 <pre>foo
3137 </pre>
3138 </div>
3139 <center>
3140 <pre>foo
3141 </pre>
3142 </center>
3143 <blockquote>
3144 <p> foo
3145 </p>
3146 </blockquote>
3147 <blockquote>
3148 <pre>
3150 </pre>
3151 </blockquote>
3152 <table><tr><td>
3153 <pre>foo
3154 </pre>
3155 </td></tr></table>
3156 <ul><li>
3157   foo
3158 </li></ul>
3160 !!end
3162 !!test
3163 4. Indent-Pre and extension tags
3164 !! wikitext
3165  a <gallery>
3166 File:foobar.jpg
3167 </gallery>
3168 !! html
3169  a <ul class="gallery mw-gallery-traditional">
3170                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
3171                         <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" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
3172                         <div class="gallerytext">
3173                         </div>
3174                 </div></li>
3175 </ul>
3177 !! html+tidy
3178 <p>a</p>
3179 <ul class="gallery mw-gallery-traditional">
3180 <li class="gallerybox" style="width: 155px">
3181 <div style="width: 155px">
3182 <div class="thumb" style="width: 150px;">
3183 <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" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div>
3184 </div>
3185 <div class="gallerytext"></div>
3186 </div>
3187 </li>
3188 </ul>
3189 !!end
3191 !! test
3192 Table wikitext syntax outside wiki-tables
3193 !! wikitext
3195 ! not a table heading
3196 |- not a table row
3197 | not a table cell
3198 | class="foo bar" | baz
3203 !! html
3204 <p>a
3205 ! not a table heading
3206 |- not a table row
3207 | not a table cell
3208 | class="foo bar" | baz
3213 </p>
3214 !! end
3216 !!test
3217 Render paragraphs when indent-pre is suppressed in blocklevels
3218 !! wikitext
3219 <blockquote>
3220  foo
3222  bar
3223 </blockquote>
3224 !! html
3225 <blockquote>
3226 <p> foo
3227 </p><p> bar
3228 </p>
3229 </blockquote>
3231 !!end
3233 !!test
3234 4. Multiple spaces at start-of-line
3235 !! wikitext
3236     <p> foo </p>
3237     foo
3238         {|
3239 |foo
3241 !! html
3242     <p> foo </p>
3243 <pre>   foo
3244 </pre>
3245 <table>
3246 <tr>
3247 <td>foo
3248 </td></tr></table>
3250 !!end
3252 ## NOTE: the leading white-space chars on empty line are significant
3253 !! test
3254 5a. White-space in indent-pre
3255 !! wikitext
3256  a<br />
3259 !! html
3260 <pre>a<br />
3263 </pre>
3264 !! end
3266 ## NOTE: the leading white-space chars on empty line are significant
3267 !! test
3268 5b. White-space in indent-pre
3269 !! wikitext
3276 !! html
3277 <pre>a
3283 </pre>
3284 !! end
3286 !! test
3287 5c. White-space in indent-pre
3288 !! wikitext
3289  ''a''
3290   ''b''
3291    ''c''
3292 !! html
3293 <pre><i>a</i>
3294  <i>b</i>
3295   <i>c</i>
3296 </pre>
3297 !! end
3299 !! test
3300 6. Pre-blocks should extend across lines with leading WS even when there is no wrappable content
3301 !! wikitext
3304  <!-- continue -->
3310 !! html
3311 <pre>a
3314 </pre>
3315 <pre>c
3317 </pre>
3318 <p>d
3319 </p>
3320 !! end
3322 !! test
3323 7a. Indent-pre and category links
3324 !! options
3325 parsoid=wt2html,wt2wt
3326 !! wikitext
3327  [[Category:foo]] <!-- No pre-wrapping -->
3328 {{echo| [[Category:foo]]}} <!-- No pre-wrapping -->
3329 !! html/php+tidy
3330 !! html/parsoid
3331  <link rel="mw:PageProp/Category" href="./Category:Foo"> <!-- No pre&#x2D;wrapping -->
3332 <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&#x2D;wrapping -->
3333 !! end
3335 ## We used to, but no longer wt2wt this test since the default serializer
3336 ## will normalize all categories to serialize on their own line.
3337 ## This wikitext usage is going to be fairly uncommon in production and
3338 ## selser will take care of preserving formatting in those scenarios.
3339 !! test
3340 7b. Indent-pre and category links
3341 !! options
3342 parsoid=wt2html
3343 !! wikitext
3344  [[Category:foo]] a
3345  [[Category:foo]] {{echo|b}}
3346 !! html/parsoid
3347 <pre><link rel="mw:PageProp/Category" href="./Category:Foo"> a
3348  <link rel="mw:PageProp/Category" href="./Category:Foo"> <span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"b"}},"i":0}}]}'>b</span></pre>
3349 !! end
3351 !! test
3352 Indent-Pre: Newlines in comments shouldn't affect sol state
3353 !! wikitext
3354 a <!--
3356 --> b
3357 !! html/php+tidy
3358 <p>a b</p>
3359 !! html/parsoid
3360 <p>a <!--
3362 --> b</p>
3363 !! end
3366 ### HTML-pre (some to spec PHP parser behavior and some Parsoid-RT-centric)
3369 !!test
3370 HTML-pre: 1. embedded newlines
3371 !! wikitext
3372 <pre>foo</pre>
3374 <pre>
3376 </pre>
3378 <pre>
3381 </pre>
3383 <pre>
3387 </pre>
3388 !! html/php+tidy
3389 <pre>
3391 </pre>
3392 <pre>
3394 </pre>
3395 <pre>
3398 </pre>
3399 <pre>
3403 </pre>
3404 !! html/parsoid
3405 <pre data-parsoid='{"stx":"html"}'>foo</pre>
3407 <pre data-parsoid='{"stx":"html","strippedNL":"\n"}'>
3409 </pre>
3411 <pre data-parsoid='{"stx":"html"}'>
3414 </pre>
3416 <pre data-parsoid='{"stx":"html"}'>
3420 </pre>
3421 !!end
3423 !! test
3424 HTML-pre: big spaces
3425 !! wikitext
3426 <pre>
3431 haha
3436 haha
3441 </pre>
3442 !! html/php+tidy
3443 <pre>
3448 haha
3453 haha
3458 </pre>
3459 !! html/parsoid
3460 <pre data-parsoid='{"stx":"html"}'>
3465 haha
3470 haha
3475 </pre>
3476 !! end
3478 !!test
3479 HTML-pre: 2: indented text
3480 !! wikitext
3481 <pre>
3482  foo
3483 </pre>
3484 !! html
3485 <pre>
3486  foo
3487 </pre>
3489 !!end
3491 !!test
3492 HTML-pre: 3: other wikitext
3493 !! wikitext
3494 <pre>
3495 * foo
3496 # bar
3497 = no-h =
3498 '' no-italic ''
3499 [[ NoLink ]]
3500 </pre>
3501 !! html/php
3502 <pre>
3503 * foo
3504 # bar
3505 = no-h =
3506 '' no-italic ''
3507 [[ NoLink ]]
3508 </pre>
3510 !! html/parsoid
3511 <pre data-parsoid='{"stx":"html","strippedNL":true}'>* foo
3512 # bar
3513 = no-h =
3514 '' no-italic ''
3515 [[ NoLink ]]
3516 </pre>
3517 !!end
3520 ### Definition lists
3522 !! test
3523 Simple definition
3524 !! wikitext
3525 ; name : Definition
3526 !! html
3527 <dl><dt> name&#160;</dt>
3528 <dd> Definition</dd></dl>
3530 !! end
3532 !! test
3533 Definition list for indentation only
3534 !! wikitext
3535 : Indented text
3536 !! html
3537 <dl><dd> Indented text</dd></dl>
3539 !! end
3541 !! test
3542 Definition list with no space
3543 !! wikitext
3544 ;name:Definition
3545 !! html
3546 <dl><dt>name</dt>
3547 <dd>Definition</dd></dl>
3549 !!end
3551 !! test
3552 Definition list with URL link
3553 !! wikitext
3554 ; http://example.com/ : definition
3555 !! html
3556 <dl><dt> <a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a>&#160;</dt>
3557 <dd> definition</dd></dl>
3559 !! end
3561 !! test
3562 Definition list with bracketed URL link
3563 !! wikitext
3564 ;[http://www.example.com/ Example]:Something about it
3565 !! html
3566 <dl><dt><a rel="nofollow" class="external text" href="http://www.example.com/">Example</a></dt>
3567 <dd>Something about it</dd></dl>
3569 !! end
3571 !! test
3572 Definition list with wikilink containing colon
3573 !! wikitext
3574 ; [[Help:FAQ]]: The least-read page on Wikipedia
3575 !! html
3576 <dl><dt> <a href="/index.php?title=Help:FAQ&amp;action=edit&amp;redlink=1" class="new" title="Help:FAQ (page does not exist)">Help:FAQ</a></dt>
3577 <dd> The least-read page on Wikipedia</dd></dl>
3579 !! end
3581 # At Brion's and JeLuF's insistence... :)
3582 !! test
3583 Definition list with news link containing colon
3584 !! wikitext
3585 ;  news:alt.wikipedia.rox: This isn't even a real newsgroup!
3586 !! html/php
3587 <dl><dt>  <a rel="nofollow" class="external free" href="news:alt.wikipedia.rox">news:alt.wikipedia.rox</a></dt>
3588 <dd> This isn't even a real newsgroup!</dd></dl>
3590 !! html/parsoid
3591 <dl><dt>  <a rel="mw:ExtLink" href="news:alt.wikipedia.rox" data-parsoid='{"stx":"url"}'>news:alt.wikipedia.rox</a></dt><dd data-parsoid='{"stx":"row"}'> This isn't even a real newsgroup!</dd></dl>
3592 !! end
3594 !! test
3595 Malformed definition list with colon
3596 !! wikitext
3597 ;  news:alt.wikipedia.rox -- don't crash or enter an infinite loop
3598 !! html
3599 <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></dl>
3601 !! end
3603 !! test
3604 Definition lists: colon in external link text
3605 !! wikitext
3606 ; [http://www.wikipedia2.org/ Wikipedia : The Next Generation]: OK, I made that up
3607 !! html
3608 <dl><dt> <a rel="nofollow" class="external text" href="http://www.wikipedia2.org/">Wikipedia&#160;: The Next Generation</a></dt>
3609 <dd> OK, I made that up</dd></dl>
3611 !! end
3613 !! test
3614 Definition lists: colon in HTML attribute
3615 !! wikitext
3616 ;<b style="display: inline">bold</b>
3617 !! html
3618 <dl><dt><b style="display: inline">bold</b></dt></dl>
3620 !! end
3622 !! test
3623 Definition lists: self-closed tag
3624 !! wikitext
3625 ;one<br/>two : two-line fun
3626 !! html
3627 <dl><dt>one<br />two&#160;</dt>
3628 <dd> two-line fun</dd></dl>
3630 !! end
3632 !! test
3633 Bug 11748: Literal closing tags
3634 !! wikitext
3635 <dl>
3636 <dt>test 1</dt>
3637 <dd>test test test test test</dd>
3638 <dt>test 2</dt>
3639 <dd>test test test test test</dd>
3640 </dl>
3641 !! html
3642 <dl>
3643 <dt>test 1</dt>
3644 <dd>test test test test test</dd>
3645 <dt>test 2</dt>
3646 <dd>test test test test test</dd>
3647 </dl>
3649 !! end
3651 !! test
3652 Definition and unordered list using wiki syntax nested in unordered list using html tags.
3653 !! wikitext
3654 <ul><li>
3655 ; term : description
3656 * unordered
3657 </li></ul>
3658 !! html
3659 <ul><li>
3660 <dl><dt> term&#160;</dt>
3661 <dd> description</dd></dl>
3662 <ul><li> unordered</li></ul>
3663 </li></ul>
3665 !! end
3667 !! test
3669 Definition list with empty definition and following paragraph
3670 !! wikitext
3671 ; term:
3672 Paragraph text
3673 !! html
3674 <dl><dt> term</dt>
3675 <dd></dd></dl>
3676 <p>Paragraph text
3677 </p>
3678 !! end
3680 !! test
3681 Nested definition lists using html syntax
3682 !! wikitext
3683 <dl><dt>x</dt>
3684 <dd>a</dd>
3685 <dd>b</dd></dl>
3687 !! end
3689 !! test
3690 Definition Lists: No nesting: Multiple dd's
3691 !! wikitext
3695 !! html
3696 <dl><dt>x</dt>
3697 <dd>a</dd>
3698 <dd>b</dd></dl>
3700 !! end
3702 !! test
3703 Definition Lists: Indentation: Regular
3704 !! wikitext
3706 ::i2
3707 :::i3
3708 !! html
3709 <dl><dd>i1
3710 <dl><dd>i2
3711 <dl><dd>i3</dd></dl></dd></dl></dd></dl>
3713 !! end
3715 !! test
3716 Definition Lists: Indentation: Missing 1st level
3717 !! wikitext
3718 ::i2
3719 :::i3
3720 !! html
3721 <dl><dd><dl><dd>i2
3722 <dl><dd>i3</dd></dl></dd></dl></dd></dl>
3724 !! end
3726 !! test
3727 Definition Lists: Indentation: Multi-level indent
3728 !! wikitext
3729 :::i3
3730 !! html
3731 <dl><dd><dl><dd><dl><dd>i3</dd></dl></dd></dl></dd></dl>
3733 !! end
3735 !! test
3736 Definition Lists: Hacky use to indent tables
3737 !! wikitext
3738 ::{|
3739 |foo
3740 |bar
3742 this text
3743 should be left alone
3744 !! html
3745 <dl><dd><dl><dd><table>
3746 <tr>
3747 <td>foo
3748 </td>
3749 <td>bar
3750 </td></tr></table></dd></dl></dd></dl>
3751 <p>this text
3752 should be left alone
3753 </p>
3754 !! end
3756 !! test
3757 Definition Lists: Hacky use to indent tables, with comments (bug 63979)
3758 !! wikitext
3759 <!-- foo -->
3760 ::{|
3761 |foo
3762 |bar
3763 |}<!-- bar -->
3764 this text
3765 should be left alone
3766 !! html/parsoid
3767 <!-- foo -->
3768 <dl><dd><dl><dd><table><tr>
3769 <td>foo</td>
3770 <td>bar</td>
3771 </tr></table><!-- bar --></dd></dl></dd></dl>
3772 <p>this text
3773 should be left alone</p>
3774 !! end
3776 !! test
3777 Definition Lists: Hacky use to indent tables, with comment before table
3778 !! wikitext
3779 ::<!-- foo -->{|
3780 |foo
3782 !! html/parsoid
3783 <dl><dd><dl><dd><!-- foo --><table><tr>
3784 <td>foo</td>
3785 </tr></table></dd></dl></dd></dl>
3786 !! end
3788 # The trailing whitespace in this test is to catch a regression in
3789 # Parsoid after T54473.
3790 !! test
3791 Definition Lists: Hacky use to indent tables (WS-insensitive)
3792 !! wikitext
3793 : {|
3795 |} 
3796 !! html/php
3797 <dl><dd><table>
3798 <tr>
3799 <td>a
3800 </td></tr></table></dd></dl>
3802 !! html/parsoid
3803 <dl><dd> <table>
3804 <tbody><tr><td>a</td></tr>
3805 </tbody></table> </dd></dl>
3806 !! end
3808 ## The PHP parser treats : items (dd) without a corresponding ; item (dt)
3809 ## as an empty dt item.  It also ignores all but the last ";" when followed
3810 ## by ":" later on.  So, ";" are not ignored in ";;;t3" but are ignored  in
3811 ## ";;;t3 :d1".  So, PHP parser behavior is a little inconsistent wrt multiple
3812 ## ";"s.
3814 ## Ex: ";;t2 ::d2" is transformed into:
3816 ## <dl>
3817 ##   <dt>t2 </dt>
3818 ##   <dd>
3819 ##     <dl>
3820 ##       <dt></dt>
3821 ##       <dd>d2</dd>
3822 ##     </dl>
3823 ##   </dd>
3824 ## </dl>
3826 ## But, Parsoid treats "; :" as a tight atomic unit and excess ":" as plain text
3827 ## So, the same wikitext above (;;t2 ::d2) is transformed into:
3829 ## <dl>
3830 ##   <dt>
3831 ##     <dl>
3832 ##       <dt>t2 </dt>
3833 ##       <dd>:d2</dd>
3834 ##     </dl>
3835 ##    </dt>
3836 ## </dl>
3838 ## All Parsoid only definition list tests have this difference.
3840 ## See also: https://phabricator.wikimedia.org/T8569
3841 ## and http://lists.wikimedia.org/pipermail/wikitext-l/2011-November/000483.html
3843 !! test
3844 Table / list interaction: indented table with lists in table contents
3845 !! wikitext
3848 | a
3849 * b
3851 | c
3852 * d
3854 !! html
3855 <dl><dd><table>
3857 <tr>
3858 <td> a
3859 <ul><li> b</li></ul>
3860 </td></tr>
3861 <tr>
3862 <td> c
3863 <ul><li> d</li></ul>
3864 </td></tr></table></dd></dl>
3866 !! end
3868 !!test
3869 Table / list interaction: lists nested in tables nested in indented lists
3870 !! wikitext
3882 !! html
3883 <dl><dd><table>
3884 <tr>
3885 <td>
3886 <dl><dd>a</dd>
3887 <dd>b</dd></dl>
3888 </td>
3889 <td>
3890 <ul><li>c</li>
3891 <li>d</li></ul>
3892 </td></tr></table></dd></dl>
3893 <ul><li>e</li>
3894 <li>f</li></ul>
3896 !!end
3898 !! test
3899 Definition Lists: Nesting: Multi-level (Parsoid only)
3900 !! options
3901 parsoid
3902 !! wikitext
3903 ;t1 :d1
3904 ;;t2 ::d2
3905 ;;;t3 :::d3
3906 !! html
3907 <dl>
3908   <dt>t1 </dt>
3909   <dd>d1</dd>
3910   <dt>
3911     <dl>
3912       <dt>t2 </dt>
3913       <dd>:d2</dd>
3914       <dt>
3915         <dl>
3916           <dt>t3 </dt>
3917           <dd>::d3</dd>
3918         </dl>
3919       </dt>
3920     </dl>
3921   </dt>
3922 </dl>
3925 !! end
3928 !! test
3929 Definition Lists: Nesting: Test 2 (Parsoid only)
3930 !! wikitext
3932 ::d2
3933 !! html/php+tidy
3934 <dl>
3935 <dt>t1</dt>
3936 <dd>
3937 <dl>
3938 <dd>d2</dd>
3939 </dl>
3940 </dd>
3941 </dl>
3942 !! html/parsoid
3943 <dl>
3944   <dt>t1</dt>
3945   <dd>
3946     <dl>
3947       <dd>d2</dd>
3948     </dl>
3949   </dd>
3950 </dl>
3952 !! end
3955 !! test
3956 Definition Lists: Nesting: Test 3 (Parsoid only)
3957 !! wikitext
3958 :;t1
3959 ::::d2
3960 !! html/php+tidy
3961 <dl>
3962 <dd>
3963 <dl>
3964 <dt>t1</dt>
3965 <dd>
3966 <dl>
3967 <dd>
3968 <dl>
3969 <dd>d2</dd>
3970 </dl>
3971 </dd>
3972 </dl>
3973 </dd>
3974 </dl>
3975 </dd>
3976 </dl>
3977 !! html/parsoid
3978 <dl>
3979   <dd>
3980     <dl>
3981       <dt>t1</dt>
3982       <dd>
3983         <dl>
3984           <dd>
3985             <dl>
3986               <dd>d2</dd>
3987             </dl>
3988           </dd>
3989         </dl>
3990       </dd>
3991     </dl>
3992   </dd>
3993 </dl>
3995 !! end
3998 !! test
3999 Definition Lists: Nesting: Test 4
4000 !! wikitext
4001 ::;t3
4002 :::d3
4003 !! html
4004 <dl><dd><dl><dd><dl><dt>t3</dt>
4005 <dd>d3</dd></dl></dd></dl></dd></dl>
4007 !! end
4010 ## The Parsoid team believes the following three test exposes a
4011 ## bug in the PHP parser.  (Parsoid team thinks the PHP parser is
4012 ## wrong to close the <dl> after the <dt> containing the <ul>.)
4013 ## It also exposes a "misfeature" in tidy, which doesn't like
4014 ## <dl> tags with a single <dt> child; it converts the <dt> into
4015 ## a <dd> in that case.  (Parsoid leaves the <dt> alone!)
4016 !! test
4017 Definition Lists: Mixed Lists: Test 1
4018 !! wikitext
4019 :;* foo
4020 ::* bar
4021 :; baz
4022 !! html/php
4023 <dl><dd><dl><dt><ul><li> foo</li>
4024 <li> bar</li></ul></dt></dl>
4025 <dl><dt> baz</dt></dl></dd></dl>
4027 !! html/php+tidy
4028 <dl>
4029 <dd>
4030 <dl>
4031 <dd>
4032 <ul>
4033 <li>foo</li>
4034 <li>bar</li>
4035 </ul>
4036 </dd>
4037 </dl>
4038 <dl>
4039 <dt>baz</dt>
4040 </dl>
4041 </dd>
4042 </dl>
4043 !! html/parsoid
4044 <dl>
4045 <dd><dl>
4046 <dt><ul>
4047 <li> foo
4048 </li>
4049 </ul></dt>
4050 <dd><ul>
4051 <li> bar
4052 </li>
4053 </ul></dd>
4054 <dt> baz</dt>
4055 </dl></dd>
4056 </dl>
4057 !! end
4059 !! test
4060 Definition Lists: Mixed Lists: Test 2
4061 !! wikitext
4062 *: d1
4063 *: d2
4064 !! html
4065 <ul><li><dl><dd> d1</dd>
4066 <dd> d2</dd></dl></li></ul>
4068 !! end
4071 !! test
4072 Definition Lists: Mixed Lists: Test 3
4073 !! wikitext
4074 *::: d1
4075 *::: d2
4076 !! html
4077 <ul><li><dl><dd><dl><dd><dl><dd> d1</dd>
4078 <dd> d2</dd></dl></dd></dl></dd></dl></li></ul>
4080 !! end
4083 !! test
4084 Definition Lists: Mixed Lists: Test 4
4085 !! wikitext
4086 *;d1 :d2
4087 *;d3 :d4
4088 !! html
4089 <ul><li><dl><dt>d1&#160;</dt>
4090 <dd>d2</dd>
4091 <dt>d3&#160;</dt>
4092 <dd>d4</dd></dl></li></ul>
4094 !! end
4097 !! test
4098 Definition Lists: Mixed Lists: Test 5
4099 !! wikitext
4100 *:d1
4101 *:: d2
4102 !! html
4103 <ul><li><dl><dd>d1
4104 <dl><dd> d2</dd></dl></dd></dl></li></ul>
4106 !! end
4109 !! test
4110 Definition Lists: Mixed Lists: Test 6
4111 !! wikitext
4112 #*:d1
4113 #*::: d3
4114 !! html
4115 <ol><li><ul><li><dl><dd>d1
4116 <dl><dd><dl><dd> d3</dd></dl></dd></dl></dd></dl></li></ul></li></ol>
4118 !! end
4121 !! test
4122 Definition Lists: Mixed Lists: Test 7
4123 !! wikitext
4124 :* d1
4125 :* d2
4126 !! html
4127 <dl><dd><ul><li> d1</li>
4128 <li> d2</li></ul></dd></dl>
4130 !! end
4133 !! test
4134 Definition Lists: Mixed Lists: Test 8
4135 !! wikitext
4136 :* d1
4137 ::* d2
4138 !! html
4139 <dl><dd><ul><li> d1</li></ul>
4140 <dl><dd><ul><li> d2</li></ul></dd></dl></dd></dl>
4142 !! end
4145 !! test
4146 Definition Lists: Mixed Lists: Test 9
4147 !! wikitext
4148 *;foo :bar
4149 !! html
4150 <ul><li><dl><dt>foo&#160;</dt>
4151 <dd>bar</dd></dl></li></ul>
4153 !! end
4156 !! test
4157 Definition Lists: Mixed Lists: Test 10
4158 !! wikitext
4159 *#;foo :bar
4160 !! html
4161 <ul><li><ol><li><dl><dt>foo&#160;</dt>
4162 <dd>bar</dd></dl></li></ol></li></ul>
4164 !! end
4166 # The Parsoid team disagrees with the PHP parser's seemingly-random
4167 # rules regarding dd/dt on the next two tests.  Parsoid is more
4168 # consistent, and recognizes the shared nesting and keeps the
4169 # still-open tags around until the nesting is complete.
4170 # (And tidy again converts <dt> to <dd> before 'bar'.)
4172 !! test
4173 Definition Lists: Mixed Lists: Test 11
4174 !! wikitext
4175 *#*#;*;;foo :bar
4176 *#*#;boo :baz
4177 !! html/php
4178 <ul><li><ol><li><ul><li><ol><li><dl><dt>foo&#160;</dt>
4179 <dd><ul><li><dl><dt><dl><dt>bar</dt></dl></dd></dl></li></ul></dd></dl>
4180 <dl><dt>boo&#160;</dt>
4181 <dd>baz</dd></dl></li></ol></li></ul></li></ol></li></ul>
4183 !! html/php+tidy
4184 <ul>
4185 <li>
4186 <ol>
4187 <li>
4188 <ul>
4189 <li>
4190 <ol>
4191 <li>
4192 <dl>
4193 <dt>foo&#160;</dt>
4194 <dd>
4195 <ul>
4196 <li>
4197 <dl>
4198 <dd>
4199 <dl>
4200 <dt>bar</dt>
4201 </dl>
4202 </dd>
4203 </dl>
4204 </li>
4205 </ul>
4206 </dd>
4207 </dl>
4208 <dl>
4209 <dt>boo&#160;</dt>
4210 <dd>baz</dd>
4211 </dl>
4212 </li>
4213 </ol>
4214 </li>
4215 </ul>
4216 </li>
4217 </ol>
4218 </li>
4219 </ul>
4220 !! html/parsoid
4221 <ul>
4222 <li>
4223 <ol>
4224 <li>
4225 <ul>
4226 <li>
4227 <ol>
4228 <li>
4229 <dl>
4230 <dt>
4231 <ul>
4232 <li>
4233 <dl>
4234 <dt>
4235 <dl>
4236 <dt>foo<span typeof="mw:Placeholder" data-parsoid='{"src":" "}'>&nbsp;</span></dt>
4237 <dd data-parsoid='{"stx":"row"}'>bar</dd>
4238 </dl></dt>
4239 </dl></li>
4240 </ul></dt>
4241 <dt>boo<span typeof="mw:Placeholder" data-parsoid='{"src":" "}'>&nbsp;</span></dt>
4242 <dd data-parsoid='{"stx":"row"}'>baz</dd>
4243 </dl></li>
4244 </ol></li>
4245 </ul></li>
4246 </ol></li>
4247 </ul>
4248 !! end
4251 # Another case where tidy converts a <dt> to a <dd> (but Parsoid doesn't).
4252 # From whitelist:
4253 # * The test is wrong, there are two colons where there should be :;
4254 # * The PHP parser is wrong to close the <dl> after the <dt> containing the <ul>.
4255 !! test
4256 Definition Lists: Weird Ones: Test 1
4257 !! wikitext
4258 *#;*::;; foo : bar (who uses this?)
4259 !! html/php
4260 <ul><li><ol><li><dl><dt> foo&#160;</dt>
4261 <dd><ul><li><dl><dd><dl><dd><dl><dt><dl><dt> bar (who uses this?)</dt></dl></dd></dl></dd></dl></dd></dl></li></ul></dd></dl></li></ol></li></ul>
4263 !! html/php+tidy
4264 <ul>
4265 <li>
4266 <ol>
4267 <li>
4268 <dl>
4269 <dt>foo&#160;</dt>
4270 <dd>
4271 <ul>
4272 <li>
4273 <dl>
4274 <dd>
4275 <dl>
4276 <dd>
4277 <dl>
4278 <dd>
4279 <dl>
4280 <dt>bar (who uses this?)</dt>
4281 </dl>
4282 </dd>
4283 </dl>
4284 </dd>
4285 </dl>
4286 </dd>
4287 </dl>
4288 </li>
4289 </ul>
4290 </dd>
4291 </dl>
4292 </li>
4293 </ol>
4294 </li>
4295 </ul>
4296 !! html/parsoid
4297 <ul>
4298 <li>
4299 <ol>
4300 <li>
4301 <dl>
4302 <dt>
4303 <ul>
4304 <li>
4305 <dl>
4306 <dd>
4307 <dl>
4308 <dd>
4309 <dl>
4310 <dt>
4311 <dl>
4312 <dt> foo<span typeof="mw:DisplaySpace mw:Placeholder" data-parsoid='{"src":" ","isDisplayHack":true}'> </span></dt>
4313 <dd data-parsoid='{"stx":"row"}'> bar (who uses this?)</dd>
4314 </dl></dt>
4315 </dl></dd>
4316 </dl></dd>
4317 </dl></li>
4318 </ul></dt>
4319 </dl></li>
4320 </ol></li>
4321 </ul>
4322 !! end
4324 !! test
4325 Definition Lists: colons occurring in tags
4326 !! wikitext
4327 ;a:b
4328 ;'''a:b'''
4329 ;<i>a:b</i>
4330 ;<span>a:b</span>
4331 ;<div>a:b</div>
4332 ;<div>a
4333 :b</div>
4334 ;{{echo|a:b}}
4335 ;{{echo|''a:b''}}
4336 ;;;''a:b''
4337 !! html+tidy
4338 <dl>
4339 <dt>a</dt>
4340 <dd>b</dd>
4341 <dt><b>a:b</b></dt>
4342 <dt><i>a:b</i></dt>
4343 <dt><span>a:b</span></dt>
4344 <dd>
4345 <div>a:b</div>
4346 </dd>
4347 <dd>
4348 <div>a
4349 <dl>
4350 <dd>b</dd>
4351 </dl>
4352 </div>
4353 </dd>
4354 <dt>a</dt>
4355 <dd>b</dd>
4356 <dt><i>a:b</i></dt>
4357 </dl>
4358 <dl>
4359 <dd>
4360 <dl>
4361 <dd>
4362 <dl>
4363 <dt><i>a:b</i></dt>
4364 </dl>
4365 </dd>
4366 </dl>
4367 </dd>
4368 </dl>
4369 !! html/parsoid
4370 <dl><dt>a</dt><dd data-parsoid='{"stx":"row"}'>b</dd>
4371 <dt><b>a:b</b></dt>
4372 <dt><i data-parsoid='{"stx":"html"}'>a:b</i></dt>
4373 <dt><span data-parsoid='{"stx":"html"}'>a:b</span></dt>
4374 <dt><div data-parsoid='{"stx":"html"}'>a:b</div></dt>
4375 <dt><div data-parsoid='{"stx":"html","autoInsertedEnd":true}'>a</div></dt>
4376 <dd>b</dd>
4377 <dt><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a:b"}},"i":0}}]}'>a:b</span></dt>
4378 <dt><i about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&#39;&#39;a:b&#39;&#39;"}},"i":0}}]}'>a:b</i>
4379 <dl><dt><dl><dt><i>a:b</i></dt></dl></dt></dl></dt></dl>
4380 !! end
4382 !! test
4383 Definition Lists: colons and tables 1
4384 !! wikitext
4386 | x
4389 | y
4391 !! html
4392 <dl><dd><table>
4393 <tr>
4394 <td> x
4395 </td></tr></table></dd></dl>
4396 <dl><dd><table>
4397 <tr>
4398 <td> y
4399 </td></tr></table></dd></dl>
4401 !! end
4403 # Parsoid's output (as documented below) differs from php's in this case.
4404 # This is probably a bug. If we fixup parsoid to match php's output, the
4405 # above test should pass and the below test case can be removed. It is
4406 # unclear which output is more desirable.
4408 !! test
4409 Definition Lists: colons and tables 2
4410 !! wikitext
4412 | x
4415 | y
4417 !! html/parsoid
4418 <dl><dd><table>
4419 <tr>
4420 <td> x
4421 </td></tr></table></dd>
4422 <dd><table>
4423 <tr>
4424 <td> y
4425 </td></tr></table></dd></dl>
4426 !! end
4428 !! test
4429 Definition Lists: template interaction
4430 !! wikitext
4431 ::{{definition_list}}
4433 :one
4434 ::{{definition_list}}
4435 :::two
4436 :::three
4437 ::four
4438 !! html/parsoid
4439 <dl><dd><dl data-parsoid='{}'><dd about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[":",{"template":{"target":{"wt":"definition_list","href":"./Template:Definition_list"},"params":{},"i":0}}]}'>one</dd><span about="#mwt1">
4440 </span><dd about="#mwt1">two</dd></dl></dd></dl>
4442 <dl><dd data-parsoid='{}'>one
4443 <dl><dd about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":["::",{"template":{"target":{"wt":"definition_list","href":"./Template:Definition_list"},"params":{},"i":0}},"\n:::two\n:::three"]}'>one</dd><span about="#mwt2">
4444 </span><dd about="#mwt2">two
4445 <dl><dd>two</dd>
4446 <dd>three</dd></dl></dd>
4447 <dd data-parsoid='{}'>four</dd></dl></dd></dl>
4448 !! end
4452 ### External links
4454 !! test
4455 External links: non-bracketed
4456 !! wikitext
4457 Non-bracketed: http://example.com
4458 !! html
4459 <p>Non-bracketed: <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
4460 </p>
4461 !! end
4463 # parsoid doesn't explicitly mark autonumbered links, see bug 53505
4464 !! test
4465 External links: numbered
4466 !! wikitext
4467 Numbered: [http://example.com]
4468 Numbered: [http://example.net]
4469 Numbered: [http://example.com]
4470 !! html/php
4471 <p>Numbered: <a rel="nofollow" class="external autonumber" href="http://example.com">[1]</a>
4472 Numbered: <a rel="nofollow" class="external autonumber" href="http://example.net">[2]</a>
4473 Numbered: <a rel="nofollow" class="external autonumber" href="http://example.com">[3]</a>
4474 </p>
4475 !! html/parsoid
4476 <p>Numbered: <a rel="mw:ExtLink" href="http://example.com"></a>
4477 Numbered: <a rel="mw:ExtLink" href="http://example.net"></a>
4478 Numbered: <a rel="mw:ExtLink" href="http://example.com"></a></p>
4479 !!end
4481 !! test
4482 External links: specified text
4483 !! wikitext
4484 Specified text: [http://example.com link]
4485 !! html
4486 <p>Specified text: <a rel="nofollow" class="external text" href="http://example.com">link</a>
4487 </p>
4488 !!end
4490 !! test
4491 External links: trail
4492 !! wikitext
4493 Linktrails should not work for external links: [http://example.com link]s
4494 !! html
4495 <p>Linktrails should not work for external links: <a rel="nofollow" class="external text" href="http://example.com">link</a>s
4496 </p>
4497 !! end
4499 !! test
4500 External links: dollar sign in URL
4501 !! wikitext
4502 http://example.com/1$2345
4503 !! html
4504 <p><a rel="nofollow" class="external free" href="http://example.com/1$2345">http://example.com/1$2345</a>
4505 </p>
4506 !! end
4508 # parsoid doesn't explicitly mark autonumbered links, see bug 53505
4509 !! test
4510 External links: dollar sign in URL (autonumber)
4511 !! wikitext
4512 [http://example.com/1$2345]
4513 !! html/php
4514 <p><a rel="nofollow" class="external autonumber" href="http://example.com/1$2345">[1]</a>
4515 </p>
4516 !! html/parsoid
4517 <p><a rel="mw:ExtLink" href="http://example.com/1$2345"></a></p>
4518 !!end
4520 !! test
4521 External links: open square bracket forbidden in URL (bug 4377)
4522 !! options
4523 parsoid=wt2html,wt2wt,html2html
4524 !! wikitext
4525 http://example.com/1[2345
4526 !! html/php
4527 <p><a rel="nofollow" class="external free" href="http://example.com/1">http://example.com/1</a>[2345
4528 </p>
4529 !! html/parsoid
4530 <p><a rel="mw:ExtLink" href="http://example.com/1">http://example.com/1</a>[2345</p>
4531 !! end
4533 !! test
4534 External links: open square bracket forbidden in URL (named) (bug 4377)
4535 !! options
4536 parsoid=wt2html,html2html
4537 !! wikitext
4538 [http://example.com/1[2345]
4539 !! html/php
4540 <p><a rel="nofollow" class="external text" href="http://example.com/1">[2345</a>
4541 </p>
4542 !! html/parsoid
4543 <p><a rel="mw:ExtLink" href="http://example.com/1">[2345</a></p>
4544 !!end
4546 # parsoid adds a space before the link name
4547 !! test
4548 External links: open square bracket forbidden in URL (named) (bug 4377)
4549 Parsoid variant.
4550 !! wikitext
4551 [http://example.com/1 [2345]
4552 !! html
4553 <p><a rel="nofollow" class="external text" href="http://example.com/1">[2345</a>
4554 </p>
4555 !!end
4557 !! test
4558 External links: nowiki in URL link text (bug 6230)
4559 !! wikitext
4560 [http://example.com/ <nowiki>''example site''</nowiki>]
4561 !! html
4562 <p><a rel="nofollow" class="external text" href="http://example.com/">''example site''</a>
4563 </p>
4564 !! end
4566 !! test
4567 External links: newline forbidden in text (bug 6230 regression check)
4568 !! wikitext
4569 [http://example.com/ first
4570 second]
4571 !! html
4572 <p>[<a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a> first
4573 second]
4574 </p>
4575 !!end
4577 !! test
4578 External links: Pipe char between url and text
4579 !! wikitext
4580 [http://example.com | link]
4581 !! html
4582 <p><a rel="nofollow" class="external text" href="http://example.com">| link</a>
4583 </p>
4584 !!end
4586 !! test
4587 External links: protocol-relative URL in brackets
4588 !! wikitext
4589 [//example.com/ Test]
4590 !! html
4591 <p><a rel="nofollow" class="external text" href="//example.com/">Test</a>
4592 </p>
4593 !! end
4595 # parsoid doesn't explicitly mark autonumbered links, see bug 53505
4596 !! test
4597 External links: protocol-relative URL in brackets without text
4598 !! wikitext
4599 [//example.com]
4600 !! html/php
4601 <p><a rel="nofollow" class="external autonumber" href="//example.com">[1]</a>
4602 </p>
4603 !! html/parsoid
4604 <p><a rel="mw:ExtLink" href="//example.com"></a></p>
4605 !! end
4607 !! test
4608 External links: protocol-relative URL in free text is left alone
4609 !! wikitext
4610 //example.com/Foo
4611 !! html
4612 <p>//example.com/Foo
4613 </p>
4614 !!end
4616 !! test
4617 External links: protocol-relative URL in the middle of a word is left alone (bug 30269)
4618 !! wikitext
4619 foo//example.com/Foo
4620 !! html
4621 <p>foo//example.com/Foo
4622 </p>
4623 !! end
4625 !! test
4626 External links: with no contents
4627 !! wikitext
4628 [http://en.wikipedia.org/wiki/Foo]
4630 [[wikipedia:Foo|Bar]]
4632 [[wikipedia:Foo|<span>Bar</span>]]
4633 !! html/php
4634 <p><a rel="nofollow" class="external autonumber" href="http://en.wikipedia.org/wiki/Foo">[1]</a>
4635 </p><p><a href="http://en.wikipedia.org/wiki/Foo" class="extiw" title="wikipedia:Foo">Bar</a>
4636 </p><p><a href="http://en.wikipedia.org/wiki/Foo" class="extiw" title="wikipedia:Foo"><span>Bar</span></a>
4637 </p>
4638 !! html/parsoid
4639 <p><a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/Foo"></a></p>
4640 <p><a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/Foo" title="wikipedia:Foo">Bar</a></p>
4641 <p><a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/Foo" title="wikipedia:Foo"><span>Bar</span></a></p>
4642 !! end
4644 !! test
4645 External links: Free with trailing punctuation
4646 !! wikitext
4647 http://example.com,
4648 http://example.com;
4649 http://example.com\
4650 http://example.com.
4651 http://example.com:
4652 http://example.com!
4653 http://example.com?
4654 http://example.com)
4655 http://example.com/url_with_(brackets)
4656 (http://example.com/url_without_brackets)
4657 http://example.com/url_with_entity&amp;
4658 http://example.com/url_with_entity&#x26;
4659 http://example.com/url_with_entity&#038;
4660 http://example.com/url_with_entity&nbsp;
4661 http://example.com/url_with_entity&#xA0;
4662 http://example.com/url_with_entity&#160;
4663 http://example.com/url_with_entity&lt;
4664 http://example.com/url_with_entity&#x3C;
4665 http://example.com/url_with_entity&#60;
4666 !! html/php
4667 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>,
4668 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>;
4669 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>\
4670 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>.
4671 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>:
4672 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>!
4673 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>?
4674 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>)
4675 <a rel="nofollow" class="external free" href="http://example.com/url_with_(brackets)">http://example.com/url_with_(brackets)</a>
4676 (<a rel="nofollow" class="external free" href="http://example.com/url_without_brackets">http://example.com/url_without_brackets</a>)
4677 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity&amp;">http://example.com/url_with_entity&amp;</a>
4678 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity&amp;">http://example.com/url_with_entity&amp;</a>
4679 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity&amp;">http://example.com/url_with_entity&amp;</a>
4680 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a>&#160;
4681 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a>&#xa0;
4682 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a>&#160;
4683 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a>&lt;
4684 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a>&#x3c;
4685 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a>&#60;
4686 </p>
4687 !! html/parsoid
4688 <p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a>,
4689 <a rel="mw:ExtLink" href="http://example.com">http://example.com</a>;
4690 <a rel="mw:ExtLink" href="http://example.com">http://example.com</a>\
4691 <a rel="mw:ExtLink" href="http://example.com">http://example.com</a>.
4692 <a rel="mw:ExtLink" href="http://example.com">http://example.com</a>:
4693 <a rel="mw:ExtLink" href="http://example.com">http://example.com</a>!
4694 <a rel="mw:ExtLink" href="http://example.com">http://example.com</a>?
4695 <a rel="mw:ExtLink" href="http://example.com">http://example.com</a>)
4696 <a rel="mw:ExtLink" href="http://example.com/url_with_(brackets)">http://example.com/url_with_(brackets)</a>
4697 (<a rel="mw:ExtLink" href="http://example.com/url_without_brackets">http://example.com/url_without_brackets</a>)
4698 <a rel="mw:ExtLink" href="http://example.com/url_with_entity&amp;">http://example.com/url_with_entity&amp;</a>
4699 <a rel="mw:ExtLink" href="http://example.com/url_with_entity&amp;">http://example.com/url_with_entity&amp;</a>
4700 <a rel="mw:ExtLink" href="http://example.com/url_with_entity&amp;">http://example.com/url_with_entity&amp;</a>
4701 <a rel="mw:ExtLink" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;nbsp;","srcContent":" "}'> </span>
4702 <a rel="mw:ExtLink" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#xA0;","srcContent":" "}'> </span>
4703 <a rel="mw:ExtLink" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#160;","srcContent":" "}'> </span>
4704 <a rel="mw:ExtLink" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;lt;","srcContent":"&lt;"}'>&lt;</span>
4705 <a rel="mw:ExtLink" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#x3C;","srcContent":"&lt;"}'>&lt;</span>
4706 <a rel="mw:ExtLink" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#60;","srcContent":"&lt;"}'>&lt;</span></p>
4707 !! end
4709 !! test
4710 External links: tricky Parsoid html2html case
4711 !! options
4712 parsoid=wt2html,wt2wt,html2html
4713 !! wikitext
4714 http://example.com/url_with_entity&amp;amp;
4715 !! html/php
4716 <p><a rel="nofollow" class="external free" href="http://example.com/url_with_entity&amp;amp">http://example.com/url_with_entity&amp;amp</a>;
4717 </p>
4718 !! html/parsoid
4719 <p><a rel="mw:ExtLink" href="http://example.com/url_with_entity&amp;amp">http://example.com/url_with_entity&amp;amp</a>;</p>
4720 !! end
4722 !! test
4723 External links: Free with trailing quotes (T113666)
4724 !! wikitext
4725 '''News:''' Stuff here
4727 news:'a'b''c''d e
4728 !! html/php
4729 <p><b>News:</b> Stuff here
4730 </p><p><a rel="nofollow" class="external free" href="news:'a'b">news:'a'b</a><i>c</i>d e
4731 </p>
4732 !! html/parsoid
4733 <p><b>News:</b> Stuff here</p>
4734 <p><a rel="mw:ExtLink" href="news:'a'b">news:'a'b</a><i>c</i>d e</p>
4735 !! end
4737 !! test
4738 External links: Lone protocols are never linked (T105697)
4739 !! wikitext
4740 http://
4741 http://;
4742 (http://)
4743 bitcoin:
4744 bitcoin:;
4745 (bitcoin:)
4746 !! html
4747 <p>http://
4748 http://;
4749 (http://)
4750 bitcoin:
4751 bitcoin:;
4752 (bitcoin:)
4753 </p>
4754 !! end
4756 !! test
4757 External links: No preceding word characters allowed (bug 65278)
4758 !! wikitext
4759 NOPEhttp://example.com
4760 N0http://example.com
4761 ok:http://example.com
4762 ok-http://example.com
4763 !! html
4764 <p>NOPEhttp://example.com
4765 N0http://example.com
4766 ok:<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
4767 ok-<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
4768 </p>
4769 !! end
4771 !! test
4772 External image
4773 !! wikitext
4774 External image: http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png
4775 !! html
4776 <p>External image: <img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" />
4777 </p>
4778 !! end
4780 !! test
4781 External image from https
4782 !! wikitext
4783 External image from https: https://meta.wikimedia.org/upload/f/f1/Ncwikicol.png
4784 !! html
4785 <p>External image from https: <img src="https://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" />
4786 </p>
4787 !! end
4789 !! test
4790 External image (when not allowed)
4791 !! options
4792 wgAllowExternalImages=0
4793 !! wikitext
4794 External image: http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png
4795 !! html
4796 <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>
4797 </p>
4798 !! end
4800 !! test
4801 Link to non-http image, no img tag
4802 !! wikitext
4803 Link to non-http image, no img tag: ftp://example.com/test.jpg
4804 !! html
4805 <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>
4806 </p>
4807 !! end
4809 !! test
4810 External links: terminating separator
4811 !! wikitext
4812 Terminating separator: http://example.com/thing,
4813 !! html
4814 <p>Terminating separator: <a rel="nofollow" class="external free" href="http://example.com/thing">http://example.com/thing</a>,
4815 </p>
4816 !! end
4818 !! test
4819 External links: intervening separator
4820 !! wikitext
4821 Intervening separator: http://example.com/1,2,3
4822 !! html
4823 <p>Intervening separator: <a rel="nofollow" class="external free" href="http://example.com/1,2,3">http://example.com/1,2,3</a>
4824 </p>
4825 !! end
4827 !! test
4828 External links: old bug with URL in query
4829 !! wikitext
4830 Old bug with URL in query: [http://example.com/thing?url=http://example.com link]
4831 !! html
4832 <p>Old bug with URL in query: <a rel="nofollow" class="external text" href="http://example.com/thing?url=http://example.com">link</a>
4833 </p>
4834 !! end
4836 !! test
4837 External links: old URL-in-URL bug, mixed protocols
4838 !! wikitext
4839 And again with mixed protocols: [ftp://example.com?url=http://example.com link]
4840 !! html
4841 <p>And again with mixed protocols: <a rel="nofollow" class="external text" href="ftp://example.com?url=http://example.com">link</a>
4842 </p>
4843 !!end
4845 !! test
4846 External links: URL in text
4847 !! wikitext
4848 URL in text: [http://example.com http://example.com]
4849 !! html
4850 <p>URL in text: <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
4851 </p>
4852 !! end
4854 !! test
4855 External links: Clickable images
4856 !! wikitext
4857 ja-style clickable images: [http://example.com http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png]
4858 !! html/php
4859 <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>
4860 </p>
4861 !! html/parsoid
4862 <p>ja-style clickable images: <a rel="mw:ExtLink" href="http://example.com"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" data-parsoid='{"type":"extlink"}'/></a></p>
4863 !! end
4865 !! test
4866 External links: raw ampersand
4867 !! wikitext
4868 Old &amp; use: http://x&y
4869 !! html
4870 <p>Old &amp; use: <a rel="nofollow" class="external free" href="http://x&amp;y">http://x&amp;y</a>
4871 </p>
4872 !! end
4874 !! test
4875 External links: encoded ampersand
4876 !! wikitext
4877 Old &amp; use: http://x&amp;y
4878 !! html/php
4879 <p>Old &amp; use: <a rel="nofollow" class="external free" href="http://x&amp;y">http://x&amp;y</a>
4880 </p>
4881 !! html/parsoid
4882 <p>Old <span typeof="mw:Entity">&amp;</span> use: <a rel="mw:ExtLink" href="http://x&amp;y">http://x&amp;y</a></p>
4883 !! end
4885 !! test
4886 External links: encoded equals (bug 6102)
4887 !! wikitext
4888 http://example.com/?foo&#61;bar
4889 !! html/php
4890 <p><a rel="nofollow" class="external free" href="http://example.com/?foo=bar">http://example.com/?foo=bar</a>
4891 </p>
4892 !! html/parsoid
4893 <p><a rel="mw:ExtLink" href="http://example.com/?foo=bar">http://example.com/?foo=bar</a></p>
4894 !! end
4897 ## Note that parsoid doesn't explicit mark autonumbered links, nor
4898 ## does it number them.  As discussed in bug 53505, we can identify
4899 ## autonumbered links via CSS.
4902 !! test
4903 External links: [raw ampersand]
4904 !! wikitext
4905 Old &amp; use: [http://x&y]
4906 !! html/php
4907 <p>Old &amp; use: <a rel="nofollow" class="external autonumber" href="http://x&amp;y">[1]</a>
4908 </p>
4909 !! html/parsoid
4910 <p>Old <span typeof="mw:Entity">&amp;</span> use: <a rel="mw:ExtLink" href="http://x&amp;y"></a></p>
4911 !! end
4913 # note that parsoid html is identical to [raw ampersand] case; so html2wt
4914 # mode will return the [raw ampersand] wikitext
4915 !! test
4916 External links: [encoded ampersand]
4917 !! options
4918 parsoid=wt2html,wt2wt,html2html
4919 !! wikitext
4920 Old &amp; use: [http://x&amp;y]
4921 !! html/php
4922 <p>Old &amp; use: <a rel="nofollow" class="external autonumber" href="http://x&amp;y">[1]</a>
4923 </p>
4924 !! html/parsoid
4925 <p>Old <span typeof="mw:Entity">&amp;</span> use: <a rel="mw:ExtLink" href="http://x&amp;y"></a></p>
4926 !! end
4928 !! test
4929 External links: [raw equals]
4930 !! wikitext
4931 [http://example.com/?foo=bar]
4932 !! html/php
4933 <p><a rel="nofollow" class="external autonumber" href="http://example.com/?foo=bar">[1]</a>
4934 </p>
4935 !! html/parsoid
4936 <p><a rel="mw:ExtLink" href="http://example.com/?foo=bar"></a></p>
4937 !! end
4939 # note that parsoid html is identical to [raw equals] case; so html2wt
4940 # mode will return the [raw equals] wikitext
4941 !! test
4942 External links: [encoded equals] (bug 6102)
4943 !! options
4944 parsoid=wt2html,wt2wt,html2html
4945 !! wikitext
4946 [http://example.com/?foo&#61;bar]
4947 !! html/php
4948 <p><a rel="nofollow" class="external autonumber" href="http://example.com/?foo=bar">[1]</a>
4949 </p>
4950 !! html/parsoid
4951 <p><a rel="mw:ExtLink" href="http://example.com/?foo=bar"></a></p>
4952 !! end
4954 # xxx parsoid strips the IDN character, so the round-trip tests will
4955 #     obviously fail and are disabled. --cscott
4956 !! test
4957 External links: [IDN ignored character reference in hostname; strip it right off]
4958 !! options
4959 parsoid=wt2html,wt2wt,html2html
4960 !! wikitext
4961 [http://e&zwnj;xample.com/]
4962 !! html/php
4963 <p><a rel="nofollow" class="external autonumber" href="http://example.com/">[1]</a>
4964 </p>
4965 !! html/parsoid
4966 <p><a rel="mw:ExtLink" href="http://example.com/"></a></p>
4967 !! end
4969 # FIXME: This test (the IDN characters in the text of a link) is an inconsistency.
4970 # Where an external link could easily circumvent the sanitization of the text of
4971 # a link like this (where an IDN-ignore character is in the URL somewhere), this
4972 # test demands a higher standard. That's a bit strange.
4974 # Example:
4976 # http://e‌xample.com -> [http://example.com|http://example.com]
4977 # [http://example.com|http://e‌xample.com] -> [http://example.com|http://e‌xample.com]
4979 # The first example is sanitized, but the second is not. Any security benefits
4980 # from this production are trivial to circumvent. Either remove this test and
4981 # let the parser(s) do their thing unaccosted, or fix the inconsistency and change
4982 # the test accordingly.
4984 # All our love,
4985 # The Parsoid team.
4986 # xxx parsoid strips the IDN character, so the round-trip tests will
4987 #     obviously fail and are disabled. --cscott
4988 !! test
4989 External links: IDN ignored character reference in hostname; strip it right off
4990 !! options
4991 parsoid=wt2html,html2html
4992 !! wikitext
4993 http://e&zwnj;xample.com/
4994 !! html/php
4995 <p><a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a>
4996 </p>
4997 !! html/parsoid
4998 <p><a rel="mw:ExtLink" href="http://example.com/">http://example.com/</a></p>
4999 !! end
5001 !! test
5002 External links: www.jpeg.org (bug 554)
5003 !! wikitext
5004 http://www.jpeg.org
5005 !! html
5006 <p><a rel="nofollow" class="external free" href="http://www.jpeg.org">http://www.jpeg.org</a>
5007 </p>
5008 !! end
5010 # parsoid doesn't explicitly mark autonumbered links, see bug 53505
5011 !! test
5012 External links: URL within URL (original bug 2)
5013 !! wikitext
5014 [http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp]
5015 !! html/php
5016 <p><a rel="nofollow" class="external autonumber" href="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp">[1]</a>
5017 </p>
5018 !! html/parsoid
5019 <p><a rel="mw:ExtLink" href="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp"></a></p>
5020 !! end
5022 !! test
5023 BUG 361: URL inside bracketed URL
5024 !! wikitext
5025 [http://www.example.com/foo http://www.example.com/bar]
5026 !! html
5027 <p><a rel="nofollow" class="external text" href="http://www.example.com/foo">http://www.example.com/bar</a>
5028 </p>
5029 !! end
5031 !! test
5032 BUG 361: URL within URL, not bracketed
5033 !! wikitext
5034 http://www.example.com/foo?=http://www.example.com/bar
5035 !! html
5036 <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>
5037 </p>
5038 !! end
5040 !! test
5041 BUG 289: ">"-token in URL-tail
5042 !! wikitext
5043 http://www.example.com/<hello>
5044 !! html
5045 <p><a rel="nofollow" class="external free" href="http://www.example.com/">http://www.example.com/</a>&lt;hello&gt;
5046 </p>
5047 !!end
5049 !! test
5050 BUG 289: literal ">"-token in URL-tail
5051 !! wikitext
5052 http://www.example.com/<b>html</b>
5053 !! html/php
5054 <p><a rel="nofollow" class="external free" href="http://www.example.com/">http://www.example.com/</a><b>html</b>
5055 </p>
5056 !! html/parsoid
5057 <p><a rel="mw:ExtLink" href="http://www.example.com/" data-parsoid='{"stx":"url"}'>http://www.example.com/</a><b data-parsoid='{"stx":"html"}'>html</b></p>
5058 !! end
5060 !! test
5061 BUG 289: ">"-token in bracketed URL
5062 !! wikitext
5063 [http://www.example.com/<hello> stuff]
5064 !! html
5065 <p><a rel="nofollow" class="external text" href="http://www.example.com/">&lt;hello&gt; stuff</a>
5066 </p>
5067 !!end
5069 !! test
5070 BUG 289: literal ">"-token in bracketed URL
5071 !! wikitext
5072 [http://www.example.com/<b>html</b> stuff]
5073 !! html
5074 <p><a rel="nofollow" class="external text" href="http://www.example.com/"><b>html</b> stuff</a>
5075 </p>
5076 !!end
5078 !! test
5079 BUG 289: literal double quote at end of URL
5080 !! wikitext
5081 http://www.example.com/"hello"
5082 !! html
5083 <p><a rel="nofollow" class="external free" href="http://www.example.com/">http://www.example.com/</a>"hello"
5084 </p>
5085 !!end
5087 !! test
5088 BUG 289: literal double quote in bracketed URL
5089 !! wikitext
5090 [http://www.example.com/"hello" stuff]
5091 !! html
5092 <p><a rel="nofollow" class="external text" href="http://www.example.com/">"hello" stuff</a>
5093 </p>
5094 !!end
5096 !! test
5097 External links: multiple legal whitespace is fine, Magnus. Don't break it please. (bug 5081)
5098 !! wikitext
5099 [http://www.example.com  test]
5100 !! html
5101 <p><a rel="nofollow" class="external text" href="http://www.example.com">test</a>
5102 </p>
5103 !! end
5105 !! test
5106 External links: link text with spaces
5107 !! wikitext
5108 [http://www.example.com a b c]
5109 [http://www.example.com ''a'' ''b'']
5110 !! html
5111 <p><a rel="nofollow" class="external text" href="http://www.example.com">a b c</a>
5112 <a rel="nofollow" class="external text" href="http://www.example.com"><i>a</i> <i>b</i></a>
5113 </p>
5114 !! end
5116 !! test
5117 External links: wiki links within external link (Bug 3695)
5118 !! options
5119 parsoid=wt2html,html2html
5120 !! wikitext
5121 [http://example.com [[wikilink]] embedded in ext link]
5122 !! html/php
5123 <p><a rel="nofollow" class="external text" href="http://example.com"></a><a href="/index.php?title=Wikilink&amp;action=edit&amp;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>
5124 </p>
5125 !! html/parsoid
5126 <p><a rel="mw:ExtLink" href="http://example.com"></a><a rel="mw:WikiLink" href="./Wikilink" title="Wikilink">wikilink</a><span> embedded in ext link</span></p>
5127 !! end
5129 !! test
5130 BUG 787: Links with one slash after the url protocol are invalid
5131 !! wikitext
5132 http:/example.com
5134 [http:/example.com title]
5135 !! html
5136 <p>http:/example.com
5137 </p><p>[http:/example.com title]
5138 </p>
5139 !! end
5141 !! test
5142 Bracketed external links with template-generated invalid target
5143 !! wikitext
5144 [{{echo|http:/example.com}} title]
5145 !! html
5146 <p>[http:/example.com title]
5147 </p>
5148 !! end
5150 !! test
5151 Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
5152 !! wikitext
5153 ''[http://example.com text'']
5154 [http://example.com '''text]'''
5155 ''Something [http://example.com in italic'']
5156 ''Something [http://example.com mixed''''', even bold]'''
5157 '''''Now [http://example.com both''''']
5158 !! html
5159 <p><a rel="nofollow" class="external text" href="http://example.com"><i>text</i></a>
5160 <a rel="nofollow" class="external text" href="http://example.com"><b>text</b></a>
5161 <i>Something </i><a rel="nofollow" class="external text" href="http://example.com"><i>in italic</i></a>
5162 <i>Something </i><a rel="nofollow" class="external text" href="http://example.com"><i>mixed</i><b>, even bold</b></a>
5163 <i><b>Now </b></i><a rel="nofollow" class="external text" href="http://example.com"><i><b>both</b></i></a>
5164 </p>
5165 !! end
5168 !! test
5169 Bug 4781: %26 in URL
5170 !! wikitext
5171 http://www.example.com/?title=AT%26T
5172 !! html/php
5173 <p><a rel="nofollow" class="external free" href="http://www.example.com/?title=AT%26T">http://www.example.com/?title=AT%26T</a>
5174 </p>
5175 !! html/parsoid
5176 <p><a rel="mw:ExtLink" href="http://www.example.com/?title=AT%26T">http://www.example.com/?title=AT%26T</a></p>
5177 !! end
5179 # According to http://www.w3.org/TR/2011/WD-html5-20110525/Overview.html#parsing-urls a plain
5180 # % is actually legal in HTML5. Any change in output would need testing though.
5181 !! test
5182 Bug 4781, 5267: %25 in URL
5183 !! wikitext
5184 http://www.example.com/?title=100%25_Bran
5185 !! html/php
5186 <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>
5187 </p>
5188 !! html/parsoid
5189 <p><a rel="mw:ExtLink" href="http://www.example.com/?title=100%25_Bran">http://www.example.com/?title=100%25_Bran</a></p>
5190 !! end
5192 !! test
5193 Bug 4781, 5267: %28, %29 in URL
5194 !! wikitext
5195 http://www.example.com/?title=Ben-Hur_%281959_film%29
5196 !! html/php
5197 <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>
5198 </p>
5199 !! html/parsoid
5200 <p><a rel="mw:ExtLink" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">http://www.example.com/?title=Ben-Hur_%281959_film%29</a></p>
5201 !! end
5204 !! test
5205 Bug 4781: %26 in autonumber URL
5206 !! wikitext
5207 [http://www.example.com/?title=AT%26T]
5208 !! html/php
5209 <p><a rel="nofollow" class="external autonumber" href="http://www.example.com/?title=AT%26T">[1]</a>
5210 </p>
5211 !! html/parsoid
5212 <p><a rel="mw:ExtLink" href="http://www.example.com/?title=AT%26T"></a></p>
5213 !! end
5215 !! test
5216 Bug 4781, 5267: %26 in autonumber URL
5217 !! wikitext
5218 [http://www.example.com/?title=100%25_Bran]
5219 !! html/php
5220 <p><a rel="nofollow" class="external autonumber" href="http://www.example.com/?title=100%25_Bran">[1]</a>
5221 </p>
5222 !! html/parsoid
5223 <p><a rel="mw:ExtLink" href="http://www.example.com/?title=100%25_Bran"></a></p>
5224 !! end
5226 !! test
5227 Bug 4781, 5267: %28, %29 in autonumber URL
5228 !! wikitext
5229 [http://www.example.com/?title=Ben-Hur_%281959_film%29]
5230 !! html/php
5231 <p><a rel="nofollow" class="external autonumber" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">[1]</a>
5232 </p>
5233 !! html/parsoid
5234 <p><a rel="mw:ExtLink" href="http://www.example.com/?title=Ben-Hur_%281959_film%29"></a></p>
5235 !! end
5238 !! test
5239 Bug 4781: %26 in bracketed URL
5240 !! wikitext
5241 [http://www.example.com/?title=AT%26T link]
5242 !! html/php
5243 <p><a rel="nofollow" class="external text" href="http://www.example.com/?title=AT%26T">link</a>
5244 </p>
5245 !! html/parsoid
5246 <p><a rel="mw:ExtLink" href="http://www.example.com/?title=AT%26T">link</a></p>
5247 !! end
5249 !! test
5250 Bug 4781, 5267: %25 in bracketed URL
5251 !! wikitext
5252 [http://www.example.com/?title=100%25_Bran link]
5253 !! html
5254 <p><a rel="nofollow" class="external text" href="http://www.example.com/?title=100%25_Bran">link</a>
5255 </p>
5256 !! end
5258 !! test
5259 Bug 4781, 5267: %28, %29 in bracketed URL
5260 !! wikitext
5261 [http://www.example.com/?title=Ben-Hur_%281959_film%29 link]
5262 !! html/php
5263 <p><a rel="nofollow" class="external text" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">link</a>
5264 </p>
5265 !! html/parsoid
5266 <p><a rel="mw:ExtLink" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">link</a></p>
5267 !! end
5269 !! test
5270 External link containing a period in the anchor. (bug 63947)
5271 !! wikitext
5272 [//foo.org/bar#baz. bang]
5274 [//foo.org/bar. bang]
5275 !! html/php
5276 <p><a rel="nofollow" class="external text" href="//foo.org/bar#baz.">bang</a>
5277 </p><p><a rel="nofollow" class="external text" href="//foo.org/bar.">bang</a>
5278 </p>
5279 !! html/parsoid
5280 <p><a rel="mw:ExtLink" href="//foo.org/bar#baz.">bang</a></p>
5281 <p><a rel="mw:ExtLink" href="//foo.org/bar.">bang</a></p>
5282 !! end
5284 !! test
5285 External link containing a single quote. (bug 63947)
5286 !! wikitext
5287 [//foo.org/bar'baz]
5289 [//foo.org/bar'baz bang]
5290 !! html/php
5291 <p><a rel="nofollow" class="external autonumber" href="//foo.org/bar'baz">[1]</a>
5292 </p><p><a rel="nofollow" class="external text" href="//foo.org/bar'baz">bang</a>
5293 </p>
5294 !! html/parsoid
5295 <p><a rel="mw:ExtLink" href="//foo.org/bar'baz"></a></p>
5296 <p><a rel="mw:ExtLink" href="//foo.org/bar'baz">bang</a></p>
5297 !! end
5299 !! test
5300 External link containing double-single-quotes in text '' (bug 4598 sanity check)
5301 !! wikitext
5302 Some [http://example.com/ pretty ''italics'' and stuff]!
5303 !! html
5304 <p>Some <a rel="nofollow" class="external text" href="http://example.com/">pretty <i>italics</i> and stuff</a>!
5305 </p>
5306 !! end
5308 !! test
5309 External link containing double-single-quotes in text embedded in italics (bug 4598 sanity check)
5310 !! wikitext
5311 ''Some [http://example.com/ pretty ''italics'' and stuff]!''
5312 !! html
5313 <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>
5314 </p>
5315 !! end
5317 !! test
5318 External link containing double-single-quotes with no space separating the url from text in italics
5319 !! wikitext
5320 [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]].]
5321 !! html/php
5322 <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)&amp;action=edit&amp;redlink=1" class="new" title="Museo Picasso (París) (page does not exist)">Museo Picasso</a>.</a>
5323 </p>
5324 !! html/php+tidy
5325 <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> <a href="/index.php?title=Museo_Picasso_(Par%C3%ADs)&amp;action=edit&amp;redlink=1" class="new" title="Museo Picasso (París) (page does not exist)">Museo Picasso</a>.</p>
5326 !! html/parsoid
5327 <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)" title="Museo Picasso (París)">Museo Picasso</a><span>.</span></p>
5328 !! end
5330 !! test
5331 External link with comments in link text
5332 !! wikitext
5333 [http://www.google.com Google <!-- comment -->]
5334 !! html/php
5335 <p><a rel="nofollow" class="external text" href="http://www.google.com">Google </a>
5336 </p>
5337 !! html/parsoid
5338 <p><a rel="mw:ExtLink" href="http://www.google.com">Google <!-- comment --></a></p>
5339 !! end
5341 !! test
5342 External link to bare IPv4 address
5343 !! wikitext
5344 [http://192.168.0.1 Link]
5345 !! html/php
5346 <p><a rel="nofollow" class="external text" href="http://192.168.0.1">Link</a>
5347 </p>
5348 !! html/parsoid
5349 <p><a rel="mw:ExtLink" href="http://192.168.0.1">Link</a></p>
5350 !! end
5352 !! test
5353 URL-encoding in URL functions (single parameter)
5354 !! wikitext
5355 {{localurl:Some page|amp=&}}
5356 !! html
5357 <p>/index.php?title=Some_page&amp;amp=&amp;
5358 </p>
5359 !! end
5361 !! test
5362 URL-encoding in URL functions (multiple parameters)
5363 !! wikitext
5364 {{localurl:Some page|q=?&amp=&}}
5365 !! html
5366 <p>/index.php?title=Some_page&amp;q=?&amp;amp=&amp;
5367 </p>
5368 !! end
5370 !! test
5371 Brackets in urls
5372 !! wikitext
5373 http://example.com/index.php?foozoid%5B%5D=bar
5375 http://example.com/index.php?foozoid&#x5B;&#x5D;=bar
5376 !! html/php
5377 <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>
5378 </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>
5379 </p>
5380 !! html/parsoid
5381 <p><a rel="mw:ExtLink" href="http://example.com/index.php?foozoid%5B%5D=bar">http://example.com/index.php?foozoid%5B%5D=bar</a></p>
5383 <p><a rel="mw:ExtLink" href="http://example.com/index.php?foozoid[]=bar">http://example.com/index.php?foozoid[]=bar</a></p>
5384 !! end
5386 !! test
5387 IPv6 urls, autolink format (T23261)
5388 !! wikitext
5389 http://[2404:130:0:1000::187:2]/index.php
5391 Examples from RFC 2373, section 2.2:
5392 * http://[1080::8:800:200C:417A]/unicast
5393 * http://[FF01::101]/multicast
5394 * http://[::1]/loopback
5395 * http://[::]/unspecified
5396 * http://[::13.1.68.3]/ipv4compat
5397 * http://[::FFFF:129.144.52.38]/ipv4compat
5399 Examples from RFC 2732, section 2:
5400 * http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html
5401 * http://[1080:0:0:0:8:800:200C:417A]/index.html
5402 * http://[3ffe:2a00:100:7031::1]
5403 * http://[1080::8:800:200C:417A]/foo
5404 * http://[::192.9.5.5]/ipng
5405 * http://[::FFFF:129.144.52.38]:80/index.html
5406 * http://[2010:836B:4179::836B:4179]
5408 !! html/php
5409 <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>
5410 </p><p>Examples from <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc2373">RFC 2373</a>, section 2.2:
5411 </p>
5412 <ul><li> <a rel="nofollow" class="external free" href="http://[1080::8:800:200C:417A]/unicast">http://[1080::8:800:200C:417A]/unicast</a></li>
5413 <li> <a rel="nofollow" class="external free" href="http://[FF01::101]/multicast">http://[FF01::101]/multicast</a></li>
5414 <li> <a rel="nofollow" class="external free" href="http://[::1]/loopback">http://[::1]/loopback</a></li>
5415 <li> <a rel="nofollow" class="external free" href="http://[::]/unspecified">http://[::]/unspecified</a></li>
5416 <li> <a rel="nofollow" class="external free" href="http://[::13.1.68.3]/ipv4compat">http://[::13.1.68.3]/ipv4compat</a></li>
5417 <li> <a rel="nofollow" class="external free" href="http://[::FFFF:129.144.52.38]/ipv4compat">http://[::FFFF:129.144.52.38]/ipv4compat</a></li></ul>
5418 <p>Examples from <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc2732">RFC 2732</a>, section 2:
5419 </p>
5420 <ul><li> <a rel="nofollow" class="external free" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html</a></li>
5421 <li> <a rel="nofollow" class="external free" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">http://[1080:0:0:0:8:800:200C:417A]/index.html</a></li>
5422 <li> <a rel="nofollow" class="external free" href="http://[3ffe:2a00:100:7031::1]">http://[3ffe:2a00:100:7031::1]</a></li>
5423 <li> <a rel="nofollow" class="external free" href="http://[1080::8:800:200C:417A]/foo">http://[1080::8:800:200C:417A]/foo</a></li>
5424 <li> <a rel="nofollow" class="external free" href="http://[::192.9.5.5]/ipng">http://[::192.9.5.5]/ipng</a></li>
5425 <li> <a rel="nofollow" class="external free" href="http://[::FFFF:129.144.52.38]:80/index.html">http://[::FFFF:129.144.52.38]:80/index.html</a></li>
5426 <li> <a rel="nofollow" class="external free" href="http://[2010:836B:4179::836B:4179]">http://[2010:836B:4179::836B:4179]</a></li></ul>
5428 !! html/parsoid
5429 <p><a rel="mw:ExtLink" href="http://[2404:130:0:1000::187:2]/index.php">http://[2404:130:0:1000::187:2]/index.php</a></p>
5431 <p>Examples from <a href="//tools.ietf.org/html/rfc2373" rel="mw:ExtLink">RFC 2373</a>, section 2.2:</p>
5432 <ul><li> <a rel="mw:ExtLink" href="http://[1080::8:800:200C:417A]/unicast">http://[1080::8:800:200C:417A]/unicast</a></li>
5433 <li> <a rel="mw:ExtLink" href="http://[FF01::101]/multicast">http://[FF01::101]/multicast</a></li>
5434 <li> <a rel="mw:ExtLink" href="http://[::1]/loopback">http://[::1]/loopback</a></li>
5435 <li> <a rel="mw:ExtLink" href="http://[::]/unspecified">http://[::]/unspecified</a></li>
5436 <li> <a rel="mw:ExtLink" href="http://[::13.1.68.3]/ipv4compat">http://[::13.1.68.3]/ipv4compat</a></li>
5437 <li> <a rel="mw:ExtLink" href="http://[::FFFF:129.144.52.38]/ipv4compat">http://[::FFFF:129.144.52.38]/ipv4compat</a></li></ul>
5439 <p>Examples from <a href="//tools.ietf.org/html/rfc2732" rel="mw:ExtLink">RFC 2732</a>, section 2:</p>
5440 <ul><li> <a rel="mw:ExtLink" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html</a></li>
5441 <li> <a rel="mw:ExtLink" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">http://[1080:0:0:0:8:800:200C:417A]/index.html</a></li>
5442 <li> <a rel="mw:ExtLink" href="http://[3ffe:2a00:100:7031::1]">http://[3ffe:2a00:100:7031::1]</a></li>
5443 <li> <a rel="mw:ExtLink" href="http://[1080::8:800:200C:417A]/foo">http://[1080::8:800:200C:417A]/foo</a></li>
5444 <li> <a rel="mw:ExtLink" href="http://[::192.9.5.5]/ipng">http://[::192.9.5.5]/ipng</a></li>
5445 <li> <a rel="mw:ExtLink" href="http://[::FFFF:129.144.52.38]:80/index.html">http://[::FFFF:129.144.52.38]:80/index.html</a></li>
5446 <li> <a rel="mw:ExtLink" href="http://[2010:836B:4179::836B:4179]">http://[2010:836B:4179::836B:4179]</a></li></ul>
5447 !! end
5449 !! test
5450 IPv6 urls, bracketed format (T23261)
5451 !! wikitext
5452 [http://[2404:130:0:1000::187:2]/index.php test]
5454 Examples from RFC 2373, section 2.2:
5455 * [http://[1080::8:800:200C:417A] unicast]
5456 * [http://[FF01::101] multicast]
5457 * [http://[::1]/ loopback]
5458 * [http://[::] unspecified]
5459 * [http://[::13.1.68.3] ipv4compat]
5460 * [http://[::FFFF:129.144.52.38] ipv4compat]
5462 Examples from RFC 2732, section 2:
5463 * [http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html 1]
5464 * [http://[1080:0:0:0:8:800:200C:417A]/index.html 2]
5465 * [http://[3ffe:2a00:100:7031::1] 3]
5466 * [http://[1080::8:800:200C:417A]/foo 4]
5467 * [http://[::192.9.5.5]/ipng 5]
5468 * [http://[::FFFF:129.144.52.38]:80/index.html 6]
5469 * [http://[2010:836B:4179::836B:4179] 7]
5471 !! html/php
5472 <p><a rel="nofollow" class="external text" href="http://[2404:130:0:1000::187:2]/index.php">test</a>
5473 </p><p>Examples from <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc2373">RFC 2373</a>, section 2.2:
5474 </p>
5475 <ul><li> <a rel="nofollow" class="external text" href="http://[1080::8:800:200C:417A]">unicast</a></li>
5476 <li> <a rel="nofollow" class="external text" href="http://[FF01::101]">multicast</a></li>
5477 <li> <a rel="nofollow" class="external text" href="http://[::1]/">loopback</a></li>
5478 <li> <a rel="nofollow" class="external text" href="http://[::]">unspecified</a></li>
5479 <li> <a rel="nofollow" class="external text" href="http://[::13.1.68.3]">ipv4compat</a></li>
5480 <li> <a rel="nofollow" class="external text" href="http://[::FFFF:129.144.52.38]">ipv4compat</a></li></ul>
5481 <p>Examples from <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc2732">RFC 2732</a>, section 2:
5482 </p>
5483 <ul><li> <a rel="nofollow" class="external text" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">1</a></li>
5484 <li> <a rel="nofollow" class="external text" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">2</a></li>
5485 <li> <a rel="nofollow" class="external text" href="http://[3ffe:2a00:100:7031::1]">3</a></li>
5486 <li> <a rel="nofollow" class="external text" href="http://[1080::8:800:200C:417A]/foo">4</a></li>
5487 <li> <a rel="nofollow" class="external text" href="http://[::192.9.5.5]/ipng">5</a></li>
5488 <li> <a rel="nofollow" class="external text" href="http://[::FFFF:129.144.52.38]:80/index.html">6</a></li>
5489 <li> <a rel="nofollow" class="external text" href="http://[2010:836B:4179::836B:4179]">7</a></li></ul>
5491 !! html/parsoid
5492 <p><a rel="mw:ExtLink" href="http://[2404:130:0:1000::187:2]/index.php">test</a></p>
5494 <p>Examples from <a href="//tools.ietf.org/html/rfc2373" rel="mw:ExtLink">RFC 2373</a>, section 2.2:</p>
5495 <ul><li> <a rel="mw:ExtLink" href="http://[1080::8:800:200C:417A]">unicast</a></li>
5496 <li> <a rel="mw:ExtLink" href="http://[FF01::101]">multicast</a></li>
5497 <li> <a rel="mw:ExtLink" href="http://[::1]/">loopback</a></li>
5498 <li> <a rel="mw:ExtLink" href="http://[::]">unspecified</a></li>
5499 <li> <a rel="mw:ExtLink" href="http://[::13.1.68.3]">ipv4compat</a></li>
5500 <li> <a rel="mw:ExtLink" href="http://[::FFFF:129.144.52.38]">ipv4compat</a></li></ul>
5502 <p>Examples from <a href="//tools.ietf.org/html/rfc2732" rel="mw:ExtLink">RFC 2732</a>, section 2:</p>
5503 <ul><li> <a rel="mw:ExtLink" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">1</a></li>
5504 <li> <a rel="mw:ExtLink" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">2</a></li>
5505 <li> <a rel="mw:ExtLink" href="http://[3ffe:2a00:100:7031::1]">3</a></li>
5506 <li> <a rel="mw:ExtLink" href="http://[1080::8:800:200C:417A]/foo">4</a></li>
5507 <li> <a rel="mw:ExtLink" href="http://[::192.9.5.5]/ipng">5</a></li>
5508 <li> <a rel="mw:ExtLink" href="http://[::FFFF:129.144.52.38]:80/index.html">6</a></li>
5509 <li> <a rel="mw:ExtLink" href="http://[2010:836B:4179::836B:4179]">7</a></li></ul>
5510 !! end
5512 !! test
5513 Non-extlinks in brackets
5514 !! wikitext
5515 [foo]
5516 [foo bar]
5517 [foo ''bar'']
5518 [fool's] errand
5519 [fool's errand]
5520 [{{echo|foo}}]
5521 [{{echo|foo}} bar]
5522 [{{echo|foo}} ''bar'']
5523 [{{echo|foo}}l's] errand
5524 [{{echo|foo}}l's errand]
5525 [url={{echo|foo}}]
5526 [url=http://example.com]
5527 [http:// bare protocols don't count]
5528 !! html/php
5529 <p>[foo]
5530 [foo bar]
5531 [foo <i>bar</i>]
5532 [fool's] errand
5533 [fool's errand]
5534 [foo]
5535 [foo bar]
5536 [foo <i>bar</i>]
5537 [fool's] errand
5538 [fool's errand]
5539 [url=foo]
5540 [url=<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>]
5541 [http:// bare protocols don't count]
5542 </p>
5543 !! html/parsoid
5544 <p>[foo]
5545 [foo bar]
5546 [foo <i>bar</i>]
5547 [fool's] errand
5548 [fool's errand]
5549 [<span typeof="mw:Placeholder" data-parsoid='{"src":"{{echo|foo}}"}'>foo</span>]
5550 [<span typeof="mw:Placeholder" data-parsoid='{"src":"{{echo|foo}}"}'>foo</span> bar]
5551 [<span typeof="mw:Placeholder" data-parsoid='{"src":"{{echo|foo}}"}'>foo</span> <i>bar</i>]
5552 [<span typeof="mw:Placeholder" data-parsoid='{"src":"{{echo|foo}}l&#39;s"}'>fool's</span>] errand
5553 [<span typeof="mw:Placeholder" data-parsoid='{"src":"{{echo|foo}}l&#39;s"}'>fool's</span> errand]
5554 [<span typeof="mw:Placeholder" data-parsoid='{"src":"url={{echo|foo}}"}'>url=foo</span>]
5555 [url=<a rel="mw:ExtLink" href="http://example.com">http://example.com</a>]
5556 [http:// bare protocols don't count]</p>
5557 !! end
5559 !! test
5560 Percent encoding in external links
5561 !! wikitext
5562 [https://github.com/search?l=&q=ResourceLoader+%40wikimedia Search]
5563 !! html/php
5564 <p><a rel="nofollow" class="external text" href="https://github.com/search?l=&amp;q=ResourceLoader+%40wikimedia">Search</a>
5565 </p>
5566 !! html/parsoid
5567 <p><a rel="mw:ExtLink"
5568 href="https://github.com/search?l=&amp;q=ResourceLoader+%40wikimedia">Search</a></p>
5569 !! end
5571 !! test
5572 Use url link syntax for links where the content is equal the link target
5573 !! wikitext
5574 http://example.com
5575 !! html/php
5576 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
5577 </p>
5578 !! html/parsoid
5579 <p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a></p>
5580 !! end
5582 !! test
5583 Parenthesis in external links, especially URL links
5584 !! wikitext
5585 http://example.com)
5587 http://example.com/test)
5589 http://example.com/(test)
5591 http://example.com/((test)
5593 (http://example.com/(test))
5595 (http://example.com/(test)))))
5597 http://example.com/a)b
5599 [http://example.com) foo]
5600 !! html/php
5601 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>)
5602 </p><p><a rel="nofollow" class="external free" href="http://example.com/test">http://example.com/test</a>)
5603 </p><p><a rel="nofollow" class="external free" href="http://example.com/(test)">http://example.com/(test)</a>
5604 </p><p><a rel="nofollow" class="external free" href="http://example.com/((test)">http://example.com/((test)</a>
5605 </p><p>(<a rel="nofollow" class="external free" href="http://example.com/(test))">http://example.com/(test))</a>
5606 </p><p>(<a rel="nofollow" class="external free" href="http://example.com/(test)))))">http://example.com/(test)))))</a>
5607 </p><p><a rel="nofollow" class="external free" href="http://example.com/a)b">http://example.com/a)b</a>
5608 </p><p><a rel="nofollow" class="external text" href="http://example.com)">foo</a>
5609 </p>
5610 !! html/parsoid
5611 <p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a>)</p>
5612 <p><a rel="mw:ExtLink" href="http://example.com/test">http://example.com/test</a>)</p>
5613 <p><a rel="mw:ExtLink" href="http://example.com/(test)">http://example.com/(test)</a></p>
5614 <p><a rel="mw:ExtLink" href="http://example.com/((test)">http://example.com/((test)</a></p>
5615 <p>(<a rel="mw:ExtLink" href="http://example.com/(test))">http://example.com/(test))</a></p>
5616 <p>(<a rel="mw:ExtLink" href="http://example.com/(test)))))">http://example.com/(test)))))</a></p>
5617 <p><a rel="mw:ExtLink" href="http://example.com/a)b">http://example.com/a)b</a></p>
5618 <p><a rel="mw:ExtLink" href="http://example.com)">foo</a></p>
5619 !! end
5621 !! test
5622 Parenthesis in external links, w/ transclusion or comment
5623 !! wikitext
5624 (http://example.com/{{echo|hi}})
5626 (http://example.com<!-- hi -->)
5627 !! html/php
5628 <p>(<a rel="nofollow" class="external free" href="http://example.com/hi">http://example.com/hi</a>)
5629 </p><p>(<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>)
5630 </p>
5631 !! html/parsoid
5632 <p>(<a 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}}"}}' data-mw='{"attribs":[[{"txt":"href"},{"html":"http://example.com/&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=\"{&amp;quot;pi&amp;quot;:[[{&amp;quot;k&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;spc&amp;quot;:[&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;]}]],&amp;quot;dsr&amp;quot;:[20,31,null,null]}\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;echo&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Echo&amp;quot;},&amp;quot;params&amp;quot;:{&amp;quot;1&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;hi&amp;quot;}},&amp;quot;i&amp;quot;:0}}]}\">hi&lt;/span>"}]]}'>http://example.com/hi</a>)</p>
5634 <p>(<a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url","a":{"href":"http://example.com"},"sa":{"href":"http://example.com&lt;!-- hi -->"}}'>http://example.com</a>)</p>
5635 !! end
5637 !! test
5638 Serialize <a> tags with invalid link targets as plain text
5639 !! options
5640 parsoid={ "modes": ["html2wt"], "suppressErrors": true }
5641 !! html/parsoid
5642 <a rel="mw:WikiLink" href="[[foo]]">text</a>
5643 <a rel="mw:WikiLink" href="[[foo]]">*text</a>
5644 <a rel="mw:WikiLink" href="[[foo]]">[[foo]]</a>
5645 <a rel="mw:WikiLink" href="[[foo]]">*a [[foo]]</a>
5646 !! wikitext
5647 text
5648 <nowiki>*</nowiki>text
5649 <nowiki>[[foo]]</nowiki>
5650 <nowiki>*a [[foo]]</nowiki>
5651 !! end
5653 !! test
5654 mw:ExtLink -vs- mw:WikiLink (T94723)
5655 !! options
5656 parsoid=html2wt
5657 !! html/parsoid
5658 <a rel="mw:WikiLink" href="./Foo" title="Foo" data-parsoid='{"stx":"piped","a":{"href":"./Foo"},"sa":{"href":"Foo"},"dsr":[0,11,6,2]}'>Bar</a>
5659 <a rel="mw:WikiLink" href="./Foo" title="Foo">Bar</a>
5660 <a rel="mw:WikiLink" href="http://en.wikipedia.org/wiki/Foo" title="Foo">Bar</a>
5661 <a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/Foo" title="Foo">Bar</a>
5663 <a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/European_Robin">European Robin</a>
5664 <a rel="mw:WikiLink" href="http://en.wikipedia.org/wiki/European_Robin">European Robin</a>
5665 </p>
5666 !! wikitext
5667 [[Foo|Bar]]
5668 [[Foo|Bar]]
5669 [[wikipedia:Foo|Bar]]
5670 [[wikipedia:Foo|Bar]]
5672 [[wikipedia:European_Robin|European Robin]]
5673 [[wikipedia:European_Robin|European Robin]]
5674 !! end
5676 !! test
5677 mw:ExtLink linking to a interwiki URL can be round-tripped losslessly (T94723)
5678 !! options
5679 parsoid=wt2wt
5680 !! wikitext
5681 [http://en.wikipedia.org/wiki/European_Robin European Robin]
5682 !! html/parsoid
5683 THIS SECTION IS NOT USED (but Parsoid won't run the test without it)
5684 !! end
5688 ### Quotes
5691 !! test
5692 Quotes
5693 !! wikitext
5694 Normal text. '''Bold text.''' Normal text. ''Italic text.''
5696 Normal text. '''''Bold italic text.''''' Normal text.
5697 !! html
5698 <p>Normal text. <b>Bold text.</b> Normal text. <i>Italic text.</i>
5699 </p><p>Normal text. <i><b>Bold italic text.</b></i> Normal text.
5700 </p>
5701 !! end
5704 # Parsoid inserts an empty bold tag pair at the end of the line, that the PHP
5705 # parser strips. The wikitext contains just the first half of the bold
5706 # quote pair.
5707 !! test
5708 Unclosed and unmatched quotes
5709 !! wikitext
5710 '''''Bold italic text '''with bold deactivated''' in between.'''''
5712 '''''Bold italic text ''with italic deactivated'' in between.'''''
5714 '''Bold text..
5716 ..spanning two paragraphs (should not work).'''
5718 '''Bold tag left open
5720 ''Italic tag left open
5722 Normal text.
5724 <!-- Unmatching number of opening, closing tags: -->
5725 '''This year''''s election ''should'' beat '''last year''''s.
5727 ''Tom'''s car is bigger than ''Susan'''s.
5729 Plain ''italic'''s plain
5730 !! html/php
5731 <p><i><b>Bold italic text </b>with bold deactivated<b> in between.</b></i>
5732 </p><p><b><i>Bold italic text </i>with italic deactivated<i> in between.</i></b>
5733 </p><p><b>Bold text..</b>
5734 </p><p>..spanning two paragraphs (should not work).
5735 </p><p><b>Bold tag left open</b>
5736 </p><p><i>Italic tag left open</i>
5737 </p><p>Normal text.
5738 </p><p><b>This year'</b>s election <i>should</i> beat <b>last year'</b>s.
5739 </p><p><i>Tom<b>s car is bigger than </b></i><b>Susan</b>s.
5740 </p><p>Plain <i>italic'</i>s plain
5741 </p>
5742 !! html/parsoid
5743 <p><i><b>Bold italic text </b>with bold deactivated<b> in between.</b></i>
5744 </p><p><b><i>Bold italic text </i>with italic deactivated<i> in between.</i></b>
5745 </p><p><b>Bold text..</b>
5746 </p><p>..spanning two paragraphs (should not work).<b></b>
5747 </p><p><b>Bold tag left open</b>
5748 </p><p><i>Italic tag left open</i>
5749 </p><p>Normal text.
5750 </p>
5751 <!-- Unmatching number of opening, closing tags: -->
5752 <p><b>This year'</b>s election <i>should</i> beat <b>last year'</b>s.
5753 </p><p><i>Tom<b>s car is bigger than </b></i><b>Susan</b>s.
5754 </p><p>Plain <i>italic'</i>s plain
5755 </p>
5756 !! end
5759 ### Tables
5761 ### some content taken from http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide:_Using_tables
5764 # This should not produce <table></table> as <table><tr><td></td></tr></table>
5765 # is the bare minimum required by the spec, see:
5766 # http://www.w3.org/TR/xhtml-modularization/dtd_module_defs.html#a_module_Basic_Tables
5767 # Parsoid team replies: empty table tags are legal in HTML5
5768 !! test
5769 A table with no data.
5770 !! options
5771 parsoid=wt2html
5772 !! wikitext
5773 {||}
5774 !! html/php
5776 !! html/parsoid
5777 <table></table>
5779 !! end
5781 !! test
5782 A table with stray table end tags on start tag line (wt2html)
5783 !! options
5784 parsoid=wt2html
5785 !! wikitext
5786 {|style="color: red;"|}
5788 {|style="color: red;" |}
5789 |foo
5792 {|style="color: red;"|} id="foo"
5793 |foo
5796 {|style="color: red;" |} id="foo"
5797 |foo
5799 !! html
5800 <table style="color: red;"></table>
5802 <table style="color: red;">
5803 <tbody><tr>
5804 <td>foo</td>
5805 </tr></tbody>
5806 </table>
5808 <table style="color: red;" id="foo">
5809 <tbody><tr>
5810 <td>foo</td>
5811 </tr></tbody>
5812 </table>
5814 <table style="color: red;" id="foo">
5815 <tbody><tr>
5816 <td>foo</td>
5817 </tr></tbody>
5818 </table>
5820 !! end
5822 !! test
5823 A table with no data (take 2)
5824 !! wikitext
5827 !! html/parsoid
5828 <table></table>
5829 !! end
5831 # A table with nothing but a caption is invalid XHTML, we might want to render
5832 # this as <p>caption</p>
5833 # Parsoid team replies: table with only a caption is legal in HTML5
5834 !! test
5835 A table with nothing but a caption
5836 !! wikitext
5838 |+ caption
5840 !! html/php
5841 <table>
5842 <caption> caption
5843 </caption><tr><td></td></tr></table>
5845 !! html/parsoid
5846 <table><caption> caption</caption></table>
5847 !! end
5849 !! test
5850 A table with caption with default-spaced attributes and a table row
5851 !! wikitext
5853 |+ style="color: red;" | caption1
5855 | foo
5857 !! html
5858 <table>
5859 <caption style="color: red;"> caption1
5860 </caption>
5861 <tr>
5862 <td> foo
5863 </td></tr></table>
5865 !! end
5867 !! test
5868 A table with captions with non-default spaced attributes and a table row
5869 !! wikitext
5871 |+style="color: red;"|caption2
5872 |+ style="color: red;"| caption3
5874 | foo
5876 !! html
5877 <table>
5878 <caption style="color: red;">caption2
5879 </caption>
5880 <caption style="color: red;"> caption3
5881 </caption>
5882 <tr>
5883 <td> foo
5884 </td></tr></table>
5886 !! end
5888 !! test
5889 Table td-cell syntax variations
5890 !! wikitext
5892 | foo bar foo | baz
5893 | foo bar foo || baz
5894 | style='color:red;' | baz
5895 | style='color:red;' || baz
5897 !! html
5898 <table>
5899 <tr>
5900 <td> baz
5901 </td>
5902 <td> foo bar foo </td>
5903 <td> baz
5904 </td>
5905 <td style="color:red;"> baz
5906 </td>
5907 <td> style='color:red;' </td>
5908 <td> baz
5909 </td></tr></table>
5911 !! end
5913 !! test
5914 Simple table
5915 !! wikitext
5917 | 1 || 2
5919 | 3 || 4
5921 !! html
5922 <table>
5923 <tr>
5924 <td> 1 </td>
5925 <td> 2
5926 </td></tr>
5927 <tr>
5928 <td> 3 </td>
5929 <td> 4
5930 </td></tr></table>
5932 !! end
5934 !! test
5935 Simple table but with multiple dashes for row wikitext
5936 !! wikitext
5938 | foo
5939 |-----
5940 | bar
5942 !! html
5943 <table>
5944 <tr>
5945 <td> foo
5946 </td></tr>
5947 <tr>
5948 <td> bar
5949 </td></tr></table>
5951 !! end
5953 !! test
5954 Multiplication table
5955 !! wikitext
5956 {| border="1" cellpadding="2"
5957 |+Multiplication table
5959 ! &times; !! 1 !! 2 !! 3
5961 ! 1
5962 | 1 || 2 || 3
5964 ! 2
5965 | 2 || 4 || 6
5967 ! 3
5968 | 3 || 6 || 9
5970 ! 4
5971 | 4 || 8 || 12
5973 ! 5
5974 | 5 || 10 || 15
5976 !! html
5977 <table border="1" cellpadding="2">
5978 <caption>Multiplication table
5979 </caption>
5980 <tr>
5981 <th> &#215; </th>
5982 <th> 1 </th>
5983 <th> 2 </th>
5984 <th> 3
5985 </th></tr>
5986 <tr>
5987 <th> 1
5988 </th>
5989 <td> 1 </td>
5990 <td> 2 </td>
5991 <td> 3
5992 </td></tr>
5993 <tr>
5994 <th> 2
5995 </th>
5996 <td> 2 </td>
5997 <td> 4 </td>
5998 <td> 6
5999 </td></tr>
6000 <tr>
6001 <th> 3
6002 </th>
6003 <td> 3 </td>
6004 <td> 6 </td>
6005 <td> 9
6006 </td></tr>
6007 <tr>
6008 <th> 4
6009 </th>
6010 <td> 4 </td>
6011 <td> 8 </td>
6012 <td> 12
6013 </td></tr>
6014 <tr>
6015 <th> 5
6016 </th>
6017 <td> 5 </td>
6018 <td> 10 </td>
6019 <td> 15
6020 </td></tr></table>
6022 !! end
6024 !! test
6025 Accept "||" in table headings
6026 !! wikitext
6028 !h1 || h2
6030 !! html
6031 <table>
6032 <tr>
6033 <th>h1 </th>
6034 <th> h2
6035 </th></tr></table>
6037 !! end
6039 !! test
6040 Accept "!!" in table data
6041 !! wikitext
6043 | Foo!! ||
6045 !! html
6046 <table>
6047 <tr>
6048 <td> Foo!! </td>
6049 <td>
6050 </td></tr></table>
6052 !! html/parsoid
6053 <table>
6054 <tbody><tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td data-parsoid='{"autoInsertedEnd":true}'> Foo!! </td><td data-parsoid='{"stx_v":"row","autoInsertedEnd":true}'></td></tr>
6055 </tbody></table>
6056 !! end
6058 !! test
6059 Accept "||" in indented table headings
6060 !! wikitext
6062 !h1 || h2
6064 !! html
6065 <dl><dd><table>
6066 <tr>
6067 <th>h1 </th>
6068 <th> h2
6069 </th></tr></table></dd></dl>
6071 !! end
6073 !! test
6074 Accept "!!" in templates
6075 !! wikitext
6077 !a {{echo|b!!c}}
6079 !! html/php
6080 <table>
6081 <tr>
6082 <th>a b</th>
6083 <th>c
6084 </th></tr></table>
6086 !! html/parsoid
6087 <table>
6088 <tbody><tr><th typeof="mw:Transclusion" about="#mwt1" data-parsoid='{"autoInsertedEnd":true,"pi":[[{"k":"1","spc":["","","",""]}]]}' data-mw='{"parts":["!a ",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"b!!c"}},"i":0}}]}'>a b</th><th about="#mwt1">c</th></tr>
6089 !! end
6091 !! test
6092 Accept "!!" in table headings after newline
6093 !! wikitext
6096 b!!c
6098 !! html/php
6099 <table>
6100 <tr>
6101 <th>a
6102 <p>b!!c
6103 </p>
6104 </th></tr></table>
6106 !! html/parsoid
6107 <table>
6108 <tbody><tr><th>a
6109 <p>b!!c</p></th></tr>
6110 </tbody></table>
6111 !! end
6113 !! test
6114 Accept "!!" in table data of mixed wikitext / html syntax
6115 !! wikitext
6118 <tr><td>b!!c</td></tr>
6120 !! html+tidy
6121 <table>
6122 <tr>
6123 <th>a</th>
6124 </tr>
6125 <tr>
6126 <td>b!!c</td>
6127 </tr>
6128 </table>
6129 !! html/parsoid
6130 <table>
6131 <tbody><tr><th>a</th></tr>
6132 <tr data-parsoid='{"stx":"html"}'><td data-parsoid='{"stx":"html"}'>b!!c</td></tr>
6133 </tbody></table>
6134 !! end
6136 !! test
6137 Accept empty attributes in td/th cells (td/th cells starting with leading ||)
6138 !! wikitext
6140 !| h1
6141 || a
6143 !! html
6144 <table>
6145 <tr>
6146 <th> h1
6147 </th>
6148 <td> a
6149 </td></tr></table>
6151 !! end
6153 !!test
6154 Accept "| !" at start of line in tables (ignore !-attribute)
6155 !! wikitext
6158 | !style="color:red" | bar
6160 !! html
6161 <table>
6163 <tr>
6164 <td> bar
6165 </td></tr></table>
6167 !!end
6169 !!test
6170 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 +/- 
6171 !! wikitext
6174 |style='color:red;'|+1
6175 |style='color:blue;'|-1
6177 | 1 || 2 || 3
6178 | 1 ||+2 ||-3
6180 | +1
6181 | -1
6183 !! html
6184 <table>
6186 <tr>
6187 <td style="color:red;">+1
6188 </td>
6189 <td style="color:blue;">-1
6190 </td></tr>
6191 <tr>
6192 <td> 1 </td>
6193 <td> 2 </td>
6194 <td> 3
6195 </td>
6196 <td> 1 </td>
6197 <td>+2 </td>
6198 <td>-3
6199 </td></tr>
6200 <tr>
6201 <td> +1
6202 </td>
6203 <td> -1
6204 </td></tr></table>
6206 !!end
6208 !! test
6209 Table rowspan
6210 !! wikitext
6211 {| border=1
6212 | Cell 1, row 1
6213 |rowspan=2| Cell 2, row 1 (and 2)
6214 | Cell 3, row 1
6216 | Cell 1, row 2
6217 | Cell 3, row 2
6219 !! html
6220 <table border="1">
6221 <tr>
6222 <td> Cell 1, row 1
6223 </td>
6224 <td rowspan="2"> Cell 2, row 1 (and 2)
6225 </td>
6226 <td> Cell 3, row 1
6227 </td></tr>
6228 <tr>
6229 <td> Cell 1, row 2
6230 </td>
6231 <td> Cell 3, row 2
6232 </td></tr></table>
6234 !! end
6236 !! test
6237 Nested table
6238 !! wikitext
6239 {| border=1
6240 | &alpha;
6242 {| bgcolor=#ABCDEF border=2
6243 |nested
6245 |table
6247 |the original table again
6249 !! html
6250 <table border="1">
6251 <tr>
6252 <td> &#945;
6253 </td>
6254 <td>
6255 <table bgcolor="#ABCDEF" border="2">
6256 <tr>
6257 <td>nested
6258 </td></tr>
6259 <tr>
6260 <td>table
6261 </td></tr></table>
6262 </td>
6263 <td>the original table again
6264 </td></tr></table>
6266 !! end
6268 !! test
6269 Invalid attributes in table cell (bug 1830)
6270 !! wikitext
6272 |Cell:|broken
6274 !! html
6275 <table>
6276 <tr>
6277 <td>broken
6278 </td></tr></table>
6280 !! end
6282 !! test
6283 Table cell attributes: Pipes protected by nowikis should be treated as a plain character
6284 !! wikitext
6286 | title="foo" |bar
6287 | title="foo<nowiki>|</nowiki>" |bar
6288 | title="foo<nowiki>|</nowiki>" bar
6290 !! html/php
6291 <table>
6292 <tr>
6293 <td title="foo">bar
6294 </td>
6295 <td title="foo&#124;">bar
6296 </td>
6297 <td> title="foo|" bar
6298 </td></tr></table>
6300 !! html/parsoid
6301 <table>
6302 <tbody><tr><td title="foo">bar</td>
6303 <td title="foo|" data-parsoid='{"a":{"title":"foo|"},"sa":{"title":"foo&lt;nowiki>|&lt;/nowiki>"},"autoInsertedEnd":true}'>bar</td>
6304 <td> title="foo<span typeof="mw:Nowiki">|</span>" bar</td></tr>
6305 </tbody></table>
6306 !! end
6308 # See: http://lists.wikimedia.org/mailman/htdig/wikitech-l/2006-April/022293.html
6309 # N.B. The "|}" to close the table is missing from the input, so parsoid's
6310 #      *2wt modes will fail.
6311 !! test
6312 Table security: embedded pipes
6313 !! options
6314 parsoid=wt2html,html2html
6315 !! wikitext
6317 | |[ftp://|x||]" onmouseover="alert(document.cookie)">test
6318 !! html/php
6319 <table>
6320 <tr>
6321 <td>[<a rel="nofollow" class="external free" href="ftp://%7Cx">ftp://%7Cx</a></td>
6322 <td>]" onmouseover="alert(document.cookie)"&gt;test
6323 </td>
6324 </tr>
6325 </table>
6327 !! html/parsoid
6328 <table><tbody>
6329 <tr>
6330 <td data-parsoid='{"startTagSrc":"| ","attrSepSrc":"|","autoInsertedEnd":true}'><a rel="mw:ExtLink" href="ftp://|x||"></a>" onmouseover="alert(document.cookie)">test</td></tr></tbody></table>
6331 !! end
6333 # FIXME: The output seems broken. Filed as T110268.
6334 !! test
6335 ! and || in td attributes should not be parsed as <th>/<td>
6336 !! options
6337 parsoid=wt2html
6338 !! wikitext
6340 | style="color: red !important;" data-contrived="put this here ||" | foo
6342 !! html/php
6343 <table>
6344 <tr>
6345 <td> style="color: red !important;" data-contrived="put this here </td>
6346 <td> foo
6347 </td></tr></table>
6349 !! html/parsoid
6350 <table>
6351 <tbody><tr><td> style="color: red !important;" data-contrived="put this here </td><td data-parsoid='{"stx_v":"row","a":{"\"":null},"sa":{"\"":""},"autoInsertedEnd":true}'> foo</td></tr>
6352 </tbody></table>
6353 !! end
6355 !! test
6356 Indented table markup mixed with indented pre content (proposed in bug 6200)
6357 !! wikitext
6358  <table>
6359  <tr>
6360  <td>
6361  Text that should be rendered preformatted
6362  </td>
6363  </tr>
6364  </table>
6365 !! html
6366  <table>
6367  <tr>
6368  <td>
6369 <pre>Text that should be rendered preformatted
6370 </pre>
6371  </td>
6372  </tr>
6373  </table>
6375 !! end
6377 !! test
6378 1. Template-generated table cell attributes and cell content
6379 !! wikitext
6381 |{{table_attribs}}
6382 | {{table_attribs}}
6383 || {{table_attribs_5}}
6384 | <!--foo--> <!--bar--> <!--baz--> {{table_attribs}}
6385 |align=center {{table_attribs}}
6386 | <!--foo--> align=center <!--bar--> {{table_attribs}}
6388 !! html
6389 <table>
6390 <tr>
6391 <td style="color:red;">Foo
6392 </td>
6393 <td style="color:red;">Foo
6394 </td>
6395 <td> style="color:red;"</td>
6396 <td>Bar
6397 </td>
6398 <td style="color:red;">Foo
6399 </td>
6400 <td align="center" style="color:red;">Foo
6401 </td>
6402 <td align="center" style="color:red;">Foo
6403 </td></tr></table>
6405 !! end
6407 !! test
6408 2. Template-generated table cell attributes and cell content
6409 !! wikitext
6411 |{{table_attribs_2}}
6413 !! html/php
6414 <table>
6415 <tr>
6416 <td style="color:red;">Foo
6417 </td>
6418 <td>Bar</td>
6419 <td>Baz
6420 </td></tr></table>
6422 !! html/parsoid
6423 <table>
6424 <tbody><tr><td about="#mwt1" typeof="mw:Transclusion" style="color:red;" data-mw='{"parts":["|",{"template":{"target":{"wt":"table_attribs_2","href":"./Template:Table_attribs_2"},"params":{},"i":0}}]}'>Foo</td>
6425 <td about="#mwt1">Bar</td><td about="#mwt1">Baz</td></tr>
6426 </tbody></table>
6427 !! end
6429 !! test
6430 3. Template-generated table cell attributes and cell content
6431 !! wikitext
6433 !align=center {{table_header_cells}}
6435 |align=center {{table_cells}}
6437 !! html/php
6438 <table>
6439 <tr>
6440 <th align="center" style="color:red;">Foo</th>
6441 <th style="color:red;"><i>Bar</i></th>
6442 <th style="color:brown;"><i>Foo</i> and Baz
6443 </th></tr>
6444 <tr>
6445 <td align="center" style="color:red;">Foo</td>
6446 <td style="color:red;"><i>Bar</i></td>
6447 <td style="color:brown;"><i>Foo</i> and Baz
6448 </td></tr></table>
6450 !! html/parsoid
6451 <table>
6452 <tbody><tr><th align="center" style="color:red;" typeof="mw:Transclusion" about="#mwt1" data-mw='{"parts":["!align=center ",{"template":{"target":{"wt":"table_header_cells","href":"./Template:Table_header_cells"},"params":{},"i":0}}]}'>Foo</th><th about="#mwt1" style="color:red;"><i about="#mwt1">Bar</i></th><th about="#mwt1" style="color:brown;"><i about="#mwt1">Foo</i> and Baz</th></tr><tr>
6453 <td align="center" style="color:red;" typeof="mw:Transclusion" about="#mwt1" data-mw='{"parts":["|align=center ",{"template":{"target":{"wt":"table_cells","href":"./Template:Table_cells"},"params":{},"i":0}}]}'>Foo</td><td about="#mwt1" style="color:red;"><i about="#mwt1">Bar</i></td><td about="#mwt1" style="color:brown;"><i about="#mwt1">Foo</i> and Baz</td></tr>
6454 </tbody></table>
6455 !! end
6457 !! test
6458 4. Template-generated table cell attributes and cell content inside a templated table
6459 !! wikitext
6460 {{tbl-start}}
6461 !align=center {{table_header_cells}}
6463 |align=center {{table_cells}}
6464 {{tbl-end}}
6465 !! html/php
6466 <table>
6467 <tr>
6468 <th align="center" style="color:red;">Foo</th>
6469 <th style="color:red;"><i>Bar</i></th>
6470 <th style="color:brown;"><i>Foo</i> and Baz
6471 </th></tr>
6472 <tr>
6473 <td align="center" style="color:red;">Foo</td>
6474 <td style="color:red;"><i>Bar</i></td>
6475 <td style="color:brown;"><i>Foo</i> and Baz
6476 </td></tr></table>
6478 !! html/parsoid
6479 <table about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[],[],[],[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"tbl-start","href":"./Template:Tbl-start"},"params":{},"i":0}},"\n!align=center ",{"template":{"target":{"wt":"table_header_cells","href":"./Template:Table_header_cells"},"params":{},"i":1}},"\n|-\n|align=center ",{"template":{"target":{"wt":"table_cells","href":"./Template:Table_cells"},"params":{},"i":2}},"\n",{"template":{"target":{"wt":"tbl-end","href":"./Template:Tbl-end"},"params":{},"i":3}}]}'>
6480 <tbody><tr><th align="center" style="color:red;">Foo</th><th style="color:red;"><i>Bar</i></th><th style="color:brown;"><i>Foo</i> and Baz</th></tr>
6481 <tr>
6482 <td align="center" style="color:red;">Foo</td><td style="color:red;"><i>Bar</i></td><td style="color:brown;"><i>Foo</i> and Baz</td></tr>
6483 </tbody></table>
6484 !! end
6486 ## Edge case fix to prevent future regressions
6487 !! test
6488 T107652: <ref>s in templates that also generate table cell attributes should be rendered properly
6489 !! wikitext
6491 |{{table_attribs_7}}
6493 <references />
6494 !! html/parsoid
6495 <table>
6496 <tbody><tr><td style="background:#f9f9f9;" typeof="mw:Transclusion" about="#mwt1" data-mw='{"parts":["|",{"template":{"target":{"wt":"table_attribs_7","href":"./Template:Table_attribs_7"},"params":{},"i":0}}]}'>Foo<span class="mw-ref" id="cite_ref-1" rel="dc:references" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></span></td></tr>
6497 </tbody></table>
6498 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">foo</span></li></ol>
6499 !! end
6501 !! test
6502 Table with row followed by newlines and table heading
6503 !! wikitext
6507 ! foo
6509 !! html
6510 <table>
6513 <tr>
6514 <th> foo
6515 </th></tr></table>
6517 !! end
6519 !! test
6520 Table with empty line following the start tag
6521 !! wikitext
6525 | foo
6527 !! html
6528 <table>
6531 <tr>
6532 <td> foo
6533 </td></tr></table>
6535 !! end
6537 # FIXME: Preserve the attribute properly (with an empty string as value) in
6538 # the PHP parser. Parsoid implements the behavior below.
6539 !! test
6540 Table attributes with empty value
6541 !! wikitext
6543 | style=| hello
6545 !! html/parsoid
6546 <table>
6547 <tbody>
6548 <tr>
6549 <td style=""> hello
6550 </td></tr></tbody></table>
6552 !! end
6554 !! test
6555 Wikitext table with a lot of comments
6556 !! wikitext
6558 <!-- c0 -->
6559 | foo
6560 <!-- c1 -->
6561 |-<!-- c2 -->
6562 <!-- c3 -->
6563 |<!-- c4 -->
6564 <!-- c5 -->
6566 !! html
6567 <table>
6568 <tr>
6569 <td> foo
6570 </td></tr>
6571 <tr>
6572 <td>
6573 </td></tr></table>
6575 !! end
6577 !! test
6578 Wikitext table comments represented in parsoid dom
6579 !! wikitext
6580 {|<!--c1--><!--c2-->
6581 |-<!--c3-->
6582 | x
6584 !! html/php+tidy
6585 <table>
6586 <tr>
6587 <td>x</td>
6588 </tr>
6589 </table>
6590 !! html/parsoid
6591 <table><!--c1--><!--c2-->
6592 <tbody><tr data-parsoid='{"startTagSrc":"|-","autoInsertedEnd":true}'><!--c3-->
6593 <td data-parsoid='{"autoInsertedEnd":true}'> x</td></tr>
6594 </tbody></table>
6595 !! end
6597 !! test
6598 Wikitext table with double-line table cell
6599 !! wikitext
6604 !! html
6605 <table>
6606 <tr>
6607 <td>a
6608 <p>b
6609 </p>
6610 </td></tr></table>
6612 !! end
6614 !! test
6615 Table cell with a single comment
6616 !! wikitext
6618 | <!-- c1 -->
6619 | a
6621 !! html
6622 <table>
6623 <tr>
6624 <td>
6625 </td>
6626 <td> a
6627 </td></tr></table>
6629 !! end
6631 !! test
6632 Table-cell after a comment-only-empty-line
6633 !! wikitext
6636 <!--c1-->
6637 <!--c2-->| b
6639 !! html
6640 <table>
6641 <tr>
6642 <td>a
6643 </td>
6644 <td> b
6645 </td></tr></table>
6647 !! html/parsoid
6648 <table>
6649 <tbody><tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td data-parsoid='{"autoInsertedEnd":true}'>a</td>
6650 <!--c1-->
6651 <!--c2--><td data-parsoid='{"autoInsertedEnd":true}'> b</td></tr>
6652 </tbody></table>
6654 !! end
6656 !! test
6657 Build table with {{!}}
6658 !! wikitext
6659 {{{!}} class="wikitable"
6660 ! header
6661 ! second header
6662 {{!}}- style="color:red;"
6663 {{!}} data {{!}}{{!}} style="color:red;" {{!}} second data
6664 {{!}}}
6665 !! html
6666 <table class="wikitable">
6667 <tr>
6668 <th> header
6669 </th>
6670 <th> second header
6671 </th></tr>
6672 <tr style="color:red;">
6673 <td> data </td>
6674 <td style="color:red;"> second data
6675 </td></tr></table>
6677 !! end
6679 !! test
6680 Build table with pipe as data
6681 !! wikitext
6682 {| class="wikitable"
6683 ! header
6684 ! second header
6685 |- style="color:red;"
6686 | data || style="color:red;" | second data
6688 | style="color:red;" | data with | || style="color:red;" | second data with |
6690 || data with | ||| second data with |
6692 !! html
6693 <table class="wikitable">
6694 <tr>
6695 <th> header
6696 </th>
6697 <th> second header
6698 </th></tr>
6699 <tr style="color:red;">
6700 <td> data </td>
6701 <td style="color:red;"> second data
6702 </td></tr>
6703 <tr>
6704 <td style="color:red;"> data with | </td>
6705 <td style="color:red;"> second data with |
6706 </td></tr>
6707 <tr>
6708 <td> data with | </td>
6709 <td> second data with |
6710 </td></tr></table>
6712 !! end
6714 !! test
6715 Build table with wikilink
6716 !! wikitext
6717 {| class="wikitable"
6718 ! header || second header
6719 |- style="color:red;"
6720 | data [[Main Page|linktext]] || second data [[Main Page|linktext]]
6722 | data || second data [[Main Page|link|text with pipe]]
6724 !! html
6725 <table class="wikitable">
6726 <tr>
6727 <th> header </th>
6728 <th> second header
6729 </th></tr>
6730 <tr style="color:red;">
6731 <td> data <a href="/wiki/Main_Page" title="Main Page">linktext</a> </td>
6732 <td> second data <a href="/wiki/Main_Page" title="Main Page">linktext</a>
6733 </td></tr>
6734 <tr>
6735 <td> data </td>
6736 <td> second data <a href="/wiki/Main_Page" title="Main Page">link|text with pipe</a>
6737 </td></tr></table>
6739 !! end
6741 # The expected HTML structure in this test is debatable. The PHP parser does
6742 # not parse this kind of table at all. The main focus for Parsoid is on
6743 # round-tripping, so this output is ok for now. TODO: revisit!
6744 !! test
6745 Wikitext table with html-syntax row
6746 !! wikitext
6749 <td>foo</td>
6751 !! html/parsoid
6752 <table>
6753 <tbody>
6754 <tr>
6755 <td>foo</td></tr></tbody></table>
6756 !! end
6758 ## Note that Parsoid output differs from PHP and PHP+tidy here.
6759 ## The lack of <tr> tags in the PHP output is arguably a bug in the
6760 ## PHP parser, which tidy then compounds by fostering the content
6761 ## entirely out of the table.  Parsoid recognizes the table context
6762 ## and generates <tr> and <td> wrappers as needed.  Hopefully nobody
6763 ## depends on PHP's treatment of broken table markup!
6764 !! test
6765 Implicit <td> after a |-
6766 !! options
6767 parsoid=wt2html,html2html
6768 !! wikitext
6773 !! html/php
6774 <table>
6777 </table>
6779 !! html/php+tidy
6780 <p>a</p>
6781 !! html/parsoid
6782 <table>
6783 <tr><td>a</td></tr>
6784 </table>
6785 !! end
6787 # Again, Parsoid adds implicit <td>s here, PHP and Tidy strip the b out.
6788 !! test
6789 <pre> tags should be recognized in an explicit <td> context, but not in an implicit <td> context
6790 !! options
6791 parsoid=wt2html,html2html
6792 !! wikitext
6800 !! html/php
6801 <table>
6803 <tr>
6804 <td>
6805 <pre>a
6806 </pre>
6807 </td></tr>
6809 </table>
6811 !! html/php+tidy
6812 <p>b</p>
6813 <table>
6814 <tr>
6815 <td>
6816 <pre>
6818 </pre></td>
6819 </tr>
6820 </table>
6821 !! html/parsoid
6822 <table>
6823 <tbody>
6824 <tr><td><pre>a</pre></td></tr>
6825 <tr><td> b</td></tr>
6826 </tbody>
6827 </table>
6828 !! end
6830 # PHP + Tidy strips the list out of the table; Parsoid wraps it.
6831 # Parsoid generates the missing <td>, so wt2wt won't succeed.
6832 !! test
6833 Lists should be recognized in an implicit <td> context
6834 !! options
6835 parsoid=wt2html,html2html
6836 !! wikitext
6841 !! html/php
6842 <table>
6844 <ul><li>a</li></ul>
6845 </table>
6847 !! html/php+tidy
6848 <ul>
6849 <li>a</li>
6850 </ul>
6851 !! html/parsoid
6852 <table>
6853 <tr>
6854 <td><ul>
6855 <li>a</li>
6856 </ul></td>
6857 </tr>
6858 </table>
6859 !! end
6861 !! test
6862 Table cells not properly parsed in an implicit-td context
6863 !! wikitext
6866 {{table_attribs_4}} || a || b
6868 !! html/php+tidy
6869 <table>
6870 <tr>
6871 <td style="background-color:#DC241f;" width="10px"></td>
6872 <td>a</td>
6873 <td>b</td>
6874 </tr>
6875 </table>
6876 !! html/parsoid
6877 <table>
6878 <tbody><tr data-parsoid='{"startTagSrc":"|-","autoInsertedEnd":true}'>
6879 <td style="background-color:#DC241f;" width="10px" about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"autoInsertedEnd":true,"pi":[[]]}' data-mw='{"parts":["",{"template":{"target":{"wt":"table_attribs_4","href":"./Template:Table_attribs_4"},"params":{},"i":0}}," "]}'> </td><td data-parsoid='{"stx_v":"row","autoInsertedEnd":true}'> a </td><td data-parsoid='{"stx_v":"row","autoInsertedEnd":true}'> b</td></tr>
6880 </tbody></table>
6881 !! end
6883 !! test
6884 Parsoid: Round-trip tables directly followed by content (bug 51219)
6885 !! options
6886 parsoid=wt2html,wt2wt
6887 !! wikitext
6889 |foo
6890 |} bar
6893 |baz
6894 |}<b>quux</b>
6895 !! html+tidy
6896 <table>
6897 <tr>
6898 <td>foo</td>
6899 </tr>
6900 </table>
6901 <p>bar</p>
6902 <table>
6903 <tr>
6904 <td>baz</td>
6905 </tr>
6906 </table>
6907 <p><b>quux</b></p>
6908 !! end
6910 !! test
6911 Parsoid: Default to a newline after tables in new content (bug 51219)
6912 !! options
6913 parsoid=html2wt
6914 !! html/parsoid
6915 <table><tbody>
6916 <tr><td>foo</td></tr></tbody></table> bar
6917 <table><tbody>
6918 <tr><td>baz</td></tr></tbody></table><b>quux</b>
6919 !! wikitext
6921 |foo
6923 <nowiki> </nowiki>bar
6925 |baz
6927 '''quux'''
6928 !! end
6930 !! test
6931 Parsoid: newline inducing block nodes don't suppress <nowiki>
6932 !! options
6933 parsoid=html2wt
6934 !! html/parsoid
6935  a<h1>foo</h1>
6936 !! wikitext
6937 <nowiki> </nowiki>a
6939 = foo =
6940 !! end
6942 !! test
6943 Parsoid: Row-syntax table headings followed by comment & table cells
6944 !! options
6945 parsoid=wt2html,wt2wt
6946 !! wikitext
6948 ! foo || bar
6949 <!-- foo -->  || baz || quux
6951 !! html/php
6952 <table>
6953 <tr>
6954 <th> foo </th>
6955 <th> bar
6956 </th>
6957 <td> baz </td>
6958 <td> quux
6959 </td></tr></table>
6961 !! html/parsoid
6962 <table>
6963 <tbody><tr><th> foo </th><th> bar
6964 <!-- foo -->  </th><td> baz </td><td> quux</td></tr>
6965 </tbody></table>
6966 !! end
6968 !!test
6969 Parsoid: Recover better from broken table attributes
6970 !!options
6971 parsoid=wt2html
6972 !!wikitext
6973 {| class="foo
6974 | class="bar" |
6977 !!html/php+tidy
6978 <table class="foo">
6979 <tr>
6980 <td class="bar">
6981 <p>foo</p>
6982 </td>
6983 </tr>
6984 </table>
6985 !!html/parsoid
6986 <table class="foo">
6987 <tr>
6988 <td class="bar">
6989 <p>foo</p></td></tr>
6990 </tbody></table>
6991 !!end
6993 !! test
6994 Tables: Digest broken attributes on table and tr tag
6995 !! options
6996 parsoid=wt2html
6997 !! wikitext
6998 {| || |} ++
6999 |- || || ++ --
7000 |- > [
7002 !! html
7003 <table>
7004 <tbody>
7005 <tr></tr>
7006 <tr></tr>
7007 </tbody></table>
7008 !! end
7010 !! test
7011 Strip unsupported table tags
7012 !! options
7013 parsoid=html2wt
7014 !! html/parsoid
7015 <table>
7016 <thead>
7017 <tr>
7018 <th>Month</th>
7019 <th>Savings</th>
7020 </tr>
7021 </thead>
7022 <tbody>
7023 <tr>
7024 <td>January</td>
7025 <td>$100</td>
7026 </tr>
7027 <tr>
7028 <td>February</td>
7029 <td>$80</td>
7030 </tr>
7031 </tbody>
7032 <tfoot>
7033 <tr>
7034 <td>Sum</td>
7035 <td>$180</td>
7036 </tr>
7037 </tfoot>
7038 </table>
7039 !! wikitext
7042 !Month
7043 !Savings
7045 |January
7046 |$100
7049 |February
7050 |$80
7052 |Sum
7053 |$180
7056 !! end
7058 !!test
7059 Testing serialization after deletion of table cells
7060 !!options
7061 parsoid={
7062   "modes": ["wt2wt", "selser"],
7063   "changes": [
7064     ["#x", "remove"]
7065   ]
7067 !!wikitext
7069 !h1 !!h2 !!h3
7070 | id="x" |c1 {{!}}{{!}}{{!}}c2 |||c3
7072 !! wikitext/edited
7074 !h1 !!h2 !!h3
7075 |c2 |||c3
7077 !!end
7080 ### Internal links
7082 !! test
7083 Plain link, capitalized
7084 !! wikitext
7085 [[Main Page]]
7086 !! html
7087 <p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
7088 </p>
7089 !! end
7091 !! test
7092 Plain link, uncapitalized
7093 !! wikitext
7094 [[main Page]]
7095 !! html
7096 <p><a href="/wiki/Main_Page" title="Main Page">main Page</a>
7097 </p>
7098 !! end
7100 !! test
7101 Piped link
7102 !! wikitext
7103 [[Main Page|The Main Page]]
7104 !! html
7105 <p><a href="/wiki/Main_Page" title="Main Page">The Main Page</a>
7106 </p>
7107 !! end
7109 !! test
7110 Piped link with comment in link text
7111 !! wikitext
7112 [[Main Page|The Main<!--front--> Page]]
7113 !! html
7114 <p><a href="/wiki/Main_Page" title="Main Page">The Main Page</a>
7115 </p>
7116 !! end
7118 !! test
7119 Piped link with multiple pipe characters in link text
7120 !! wikitext
7121 [[Main Page||The|Main|Page|]]
7122 !! html/php
7123 <p><a href="/wiki/Main_Page" title="Main Page">|The|Main|Page|</a>
7124 </p>
7125 !! html/parsoid
7126 <p><a rel="mw:WikiLink" href="Main_Page" title="Main Page">|The|Main|Page|</a></p>
7127 !! end
7129 !! test
7130 Piped link with no link text
7131 !! wikitext
7132 [[Thomas Bek (bishop of St David's)|]]
7133 !! html/php
7134 <p>[[Thomas Bek (bishop of St David's)|]]
7135 </p>
7136 !! html/parsoid
7137 <p>[[Thomas Bek (bishop of St David's)|]]</p>
7138 !! end
7140 !! test
7141 Broken link
7142 !! wikitext
7143 [[Zigzagzogzagzig]]
7144 !! html
7145 <p><a href="/index.php?title=Zigzagzogzagzig&amp;action=edit&amp;redlink=1" class="new" title="Zigzagzogzagzig (page does not exist)">Zigzagzogzagzig</a>
7146 </p>
7147 !! end
7149 !! test
7150 Broken link with fragment
7151 !! wikitext
7152 [[Zigzagzogzagzig#zug]]
7153 !! html
7154 <p><a href="/index.php?title=Zigzagzogzagzig&amp;action=edit&amp;redlink=1" class="new" title="Zigzagzogzagzig (page does not exist)">Zigzagzogzagzig#zug</a>
7155 </p>
7156 !! end
7158 !! test
7159 Special page link with fragment
7160 !! wikitext
7161 [[Special:Version#anchor]]
7162 !! html
7163 <p><a href="/wiki/Special:Version#anchor" title="Special:Version">Special:Version#anchor</a>
7164 </p>
7165 !! end
7167 !! test
7168 Nonexistent special page link with fragment
7169 !! wikitext
7170 [[Special:ThisNameWillHopefullyNeverBeUsed#anchor]]
7171 !! html
7172 <p><a href="/wiki/Special:ThisNameWillHopefullyNeverBeUsed" class="new" title="Special:ThisNameWillHopefullyNeverBeUsed (page does not exist)">Special:ThisNameWillHopefullyNeverBeUsed#anchor</a>
7173 </p>
7174 !! end
7176 !! test
7177 Link with prefix
7178 !! wikitext
7179 xxx[[main Page]], xxx[[Main Page]], Xxx[[main Page]] XXX[[main Page]], XXX[[Main Page]]
7180 !! html
7181 <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>
7182 </p>
7183 !! end
7185 !! test
7186 Link with suffix
7187 !! wikitext
7188 [[Main Page]]xxx, [[Main Page]]XXX, [[Main Page]]!!!
7189 !! html
7190 <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>!!!
7191 </p>
7192 !! end
7194 !! article
7195 prefixed article
7196 !! text
7197 Some text
7198 !! endarticle
7200 !! test
7201 Bug 43661: Piped links with identical prefixes
7202 !! wikitext
7203 [[prefixed article|prefixed articles with spaces]]
7205 [[prefixed article|prefixed articlesaoeu]]
7207 [[Main Page|Main Page test]]
7208 !! html
7209 <p><a href="/wiki/Prefixed_article" title="Prefixed article">prefixed articles with spaces</a>
7210 </p><p><a href="/wiki/Prefixed_article" title="Prefixed article">prefixed articlesaoeu</a>
7211 </p><p><a href="/wiki/Main_Page" title="Main Page">Main Page test</a>
7212 </p>
7213 !! end
7216 !! test
7217 Link with HTML entity in suffix / tail
7218 !! wikitext
7219 [[Main Page]]&quot;, [[Main Page]]&#97;
7220 !! html/php
7221 <p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>&quot;, <a href="/wiki/Main_Page" title="Main Page">Main Page</a>&#97;
7222 </p>
7223 !! html/parsoid
7224 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;quot;","srcContent":"\""}'>"</span>, <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#97;","srcContent":"a"}'>a</span></p>
7225 !! end
7227 !! test
7228 Link with 3 brackets
7229 !! wikitext
7230 [[[Main Page]]]
7231 Foo [[[Main Page]]]
7232 !! html
7233 <p>[[[Main Page]]]
7234 Foo [[[Main Page]]]
7235 </p>
7236 !! end
7238 !! test
7239 Link with 4 brackets
7240 !! wikitext
7241 [[[[Main Page]]]]
7242 !! html
7243 <p>[[<a href="/wiki/Main_Page" title="Main Page">Main Page</a>]]
7244 </p>
7245 !! end
7247 !! test
7248 Piped link with 3 brackets
7249 !! wikitext
7250 [[[main page|the main page]]]
7251 !! html
7252 <p>[[[main page|the main page]]]
7253 </p>
7254 !! end
7256 !! test
7257 Piped link with extlink-like text
7258 !! wikitext
7259 [[Main Page|[bar]]]
7260 [[Main Page|This is a [bar]]]
7261 !! html/php
7262 <p><a href="/wiki/Main_Page" title="Main Page">[bar]</a>
7263 <a href="/wiki/Main_Page" title="Main Page">This is a [bar]</a>
7264 </p>
7265 !! html/parsoid
7266 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page" data-parsoid='{"stx":"piped"}'>[bar]</a>
7267 <a rel="mw:WikiLink" href="./Main_Page" title="Main Page" data-parsoid='{"stx":"piped"}'>This is a [bar]</a></p>
7268 !! end
7270 !! test
7271 Link with multiple pipes
7272 !! wikitext
7273 [[Main Page|The|Main|Page]]
7274 !! html
7275 <p><a href="/wiki/Main_Page" title="Main Page">The|Main|Page</a>
7276 </p>
7277 !! end
7279 # Note that parsoid does not munge anchor text; all non-space
7280 # characters are valid in HTML5 ids.
7281 !! test
7282 Anchor containing a #. (bug 63430)
7283 !! wikitext
7284 [[Main Page#And#Link]]
7285 !! html/php
7286 <p><a href="/wiki/Main_Page#And.23Link" title="Main Page">Main Page#And#Link</a>
7287 </p>
7288 !! html/parsoid
7289 <p><a rel="mw:WikiLink" href="./Main_Page#And%23Link" title="Main Page">Main Page#And#Link</a></p>
7290 !! end
7292 !! test
7293 Link to namespaces
7294 !! wikitext
7295 [[Talk:Parser testing]], [[Meta:Disclaimers]]
7296 !! html
7297 <p><a href="/index.php?title=Talk:Parser_testing&amp;action=edit&amp;redlink=1" class="new" title="Talk:Parser testing (page does not exist)">Talk:Parser testing</a>, <a href="/index.php?title=Meta:Disclaimers&amp;action=edit&amp;redlink=1" class="new" title="Meta:Disclaimers (page does not exist)">Meta:Disclaimers</a>
7298 </p>
7299 !! end
7301 !! test
7302 Link with space in namespace
7303 !! wikitext
7304 [[User talk:Foo bar]]
7305 !! html
7306 <p><a href="/index.php?title=User_talk:Foo_bar&amp;action=edit&amp;redlink=1" class="new" title="User talk:Foo bar (page does not exist)">User talk:Foo bar</a>
7307 </p>
7308 !! end
7310 !! article
7311 MemoryAlpha:AlphaTest
7312 !! text
7313 This is an article in the MemoryAlpha namespace
7314 (which shadows the memoryalpha interwiki link).
7315 !! endarticle
7317 !! test
7318 Namespace takes precedence over interwiki link (bug 51680)
7319 !! wikitext
7320 [[MemoryAlpha:AlphaTest]]
7321 !! html
7322 <p><a href="/wiki/MemoryAlpha:AlphaTest" title="MemoryAlpha:AlphaTest">MemoryAlpha:AlphaTest</a>
7323 </p>
7324 !! end
7326 # The previous test doesn't work correctly in html2*, due to not recognizing the
7327 # link as an internal one. This one checks for the correct behavior.
7328 !! test
7329 Link to namespace preferred over interwiki with correct rel attribute
7330 !! options
7331 parsoid=html2wt,html2html
7332 !! html/parsoid
7333 <p><a rel="mw:WikiLink" href="./MemoryAlpha:AlphaTest" title="MemoryAlpha:AlphaTest">MemoryAlpha:AlphaTest</a></p>
7334 !! wikitext
7335 [[MemoryAlpha:AlphaTest]]
7336 !! end
7338 !! test
7339 Piped link to namespace
7340 !! wikitext
7341 [[Meta:Disclaimers|The disclaimers]]
7342 !! html
7343 <p><a href="/index.php?title=Meta:Disclaimers&amp;action=edit&amp;redlink=1" class="new" title="Meta:Disclaimers (page does not exist)">The disclaimers</a>
7344 </p>
7345 !! end
7347 !! test
7348 Link containing }
7349 !! wikitext
7350 [[Usually caused by a typo (oops}]]
7351 !! html
7352 <p>[[Usually caused by a typo (oops}]]
7353 </p>
7354 !! end
7356 !! article
7357 7% Solution
7358 !! text
7359 Just a test of an article title containing a percent.
7360 !! endarticle
7362 !! test
7363 Link containing % (not as a hex sequence)
7364 !! wikitext
7365 [[7% Solution]]
7366 !! html/php
7367 <p><a href="/wiki/7%25_Solution" title="7% Solution">7% Solution</a>
7368 </p>
7369 !! html/parsoid
7370 <p><a rel="mw:WikiLink" href="./7%25_Solution" title="7% Solution">7% Solution</a></p>
7371 !! end
7373 # note that the parsoid HTML is identical to the previous test output,
7374 # so the previous test ensures that the html2wt mode will generate the
7375 # "not as a hex sequence" wikitext.
7376 !! test
7377 Link containing % as a single hex sequence interpreted to char
7378 !! options
7379 parsoid=wt2wt,wt2html,html2html
7380 !! wikitext
7381 [[7%25 Solution]]
7382 !! html/php
7383 <p><a href="/wiki/7%25_Solution" title="7% Solution">7% Solution</a>
7384 </p>
7385 !! html/parsoid
7386 <p><a rel="mw:WikiLink" href="./7%25_Solution" title="7% Solution">7% Solution</a></p>
7387 !!end
7389 !! test
7390 Link containing % as a double hex sequence interpreted to hex sequence
7391 !! wikitext
7392 [[7%2525 Solution]]
7393 !! html
7394 <p>[[7%2525 Solution]]
7395 </p>
7396 !!end
7398 # note that parsoid does not munge anchor text; all non-space
7399 # characters are valid in HTML5 anchors.
7400 !! test
7401 Link containing "#<" and "#>" % as a hex sequences- these are valid section anchors
7402 Example for such a section: == < ==
7403 !! wikitext
7404 [[%23%3c]][[%23%3e]]
7405 !! html/php
7406 <p><a href="#.3C">#&lt;</a><a href="#.3E">#&gt;</a>
7407 </p>
7408 !! html/parsoid
7409 <p><a rel="mw:WikiLink" href="./Main%20Page#%3C" title="Main Page">#&lt;</a><a rel="mw:WikiLink" href="./Main%20Page#%3E" title="Main Page">#></a></p>
7410 !! end
7412 !! test
7413 Link containing "<#" and ">#" as a hex sequences
7414 !! wikitext
7415 [[%3c%23]][[%3e%23]]
7416 !! html
7417 <p>[[%3c%23]][[%3e%23]]
7418 </p>
7419 !! end
7421 !! test
7422 Link containing an equals sign
7423 !! wikitext
7424 [[Special:BookSources/isbn=4-00-026157-6]]
7425 !! html/php
7426 <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>
7427 </p>
7428 !! html/parsoid
7429 <p><a rel="mw:WikiLink" href="./Special:BookSources/isbn=4-00-026157-6" title="Special:BookSources/isbn=4-00-026157-6">Special:BookSources/isbn=4-00-026157-6</a></p>
7430 !! end
7432 !! article
7433 Foo~bar
7434 !! text
7435 Just a test of an article title containing a tilde.
7436 !! endarticle
7438 # note that links containing signatures, like [[Foo~~~~]], are
7439 # massaged by the pre-save transform (PST) and so the tildes are never
7440 # seen by the parser.
7441 !! test
7442 Link containing a tilde
7443 !! wikitext
7444 [[Foo~bar]]
7445 !! html/php
7446 <p><a href="/wiki/Foo~bar" title="Foo~bar">Foo~bar</a>
7447 </p>
7448 !! html/parsoid
7449 <p><a rel="mw:WikiLink" href="./Foo~bar" title="Foo~bar">Foo~bar</a></p>
7450 !! end
7452 !! test
7453 Link containing double-single-quotes '' (bug 4598)
7454 !! wikitext
7455 [[Lista d''e paise d''o munno]]
7456 !! html/php
7457 <p><a href="/index.php?title=Lista_d%27%27e_paise_d%27%27o_munno&amp;action=edit&amp;redlink=1" class="new" title="Lista d''e paise d''o munno (page does not exist)">Lista d''e paise d''o munno</a>
7458 </p>
7459 !! html/parsoid
7460 <p><a rel="mw:WikiLink" href="./Lista_d''e_paise_d''o_munno" title="Lista d''e paise d''o munno">Lista d''e paise d''o munno</a></p>
7461 !! end
7463 !! test
7464 Link containing double-single-quotes '' in text (bug 4598 sanity check)
7465 !! wikitext
7466 Some [[Link|pretty ''italics'' and stuff]]!
7467 !! html/php
7468 <p>Some <a href="/index.php?title=Link&amp;action=edit&amp;redlink=1" class="new" title="Link (page does not exist)">pretty <i>italics</i> and stuff</a>!
7469 </p>
7470 !! html/parsoid
7471 <p>Some <a rel="mw:WikiLink" href="Link" title="Link">pretty <i>italics</i> and stuff</a>!</p>
7472 !! end
7474 !! test
7475 Link containing double-single-quotes '' in text embedded in italics (bug 4598 sanity check)
7476 !! wikitext
7477 ''Some [[Link|pretty ''italics'' and stuff]]!''
7478 !! html
7479 <p><i>Some <a href="/index.php?title=Link&amp;action=edit&amp;redlink=1" class="new" title="Link (page does not exist)">pretty <i>italics</i> and stuff</a>!</i>
7480 </p>
7481 !! end
7483 !! test
7484 Link with double quotes in title part (literal) and alternate part (interpreted)
7485 !! wikitext
7486 [[File:Denys_Savchenko_''Pentecoste''.jpg]]
7488 [[''Pentecoste'']]
7490 [[''Pentecoste''|Pentecoste]]
7492 [[''Pentecoste''|''Pentecoste'']]
7493 !! html/php
7494 <p><a href="/index.php?title=Special:Upload&amp;wpDestFile=Denys_Savchenko_%27%27Pentecoste%27%27.jpg" class="new" title="File:Denys Savchenko &#39;&#39;Pentecoste&#39;&#39;.jpg">File:Denys Savchenko <i>Pentecoste</i>.jpg</a>
7495 </p><p><a href="/index.php?title=%27%27Pentecoste%27%27&amp;action=edit&amp;redlink=1" class="new" title="''Pentecoste'' (page does not exist)">''Pentecoste''</a>
7496 </p><p><a href="/index.php?title=%27%27Pentecoste%27%27&amp;action=edit&amp;redlink=1" class="new" title="''Pentecoste'' (page does not exist)">Pentecoste</a>
7497 </p><p><a href="/index.php?title=%27%27Pentecoste%27%27&amp;action=edit&amp;redlink=1" class="new" title="''Pentecoste'' (page does not exist)"><i>Pentecoste</i></a>
7498 </p>
7499 !! html/parsoid
7500 <p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}]}'><a href="./File:Denys_Savchenko_''Pentecoste''.jpg"><img resource="./File:Denys_Savchenko_''Pentecoste''.jpg" src="./Special:FilePath/Denys_Savchenko_''Pentecoste''.jpg" height="220" width="220"/></a></span></p>
7501 <p><a rel="mw:WikiLink" href="''Pentecoste''" title="''Pentecoste''">''Pentecoste''</a></p>
7502 <p><a rel="mw:WikiLink" href="''Pentecoste''" title="''Pentecoste''">Pentecoste</a></p>
7503 <p><a rel="mw:WikiLink" href="''Pentecoste''" title="''Pentecoste''"><i>Pentecoste</i></a></p>
7504 !! end
7506 !! test
7507 Broken image links with HTML captions (bug 39700)
7508 !! wikitext
7509 [[File:Nonexistent|<script></script>]]
7510 [[File:Nonexistent|100x100px|<script></script>]]
7511 [[File:Nonexistent|&lt;]]
7512 [[File:Nonexistent|a<i>b</i>c]]
7513 !! html/php
7514 <p><a href="/index.php?title=Special:Upload&amp;wpDestFile=Nonexistent" class="new" title="File:Nonexistent">&lt;script&gt;&lt;/script&gt;</a>
7515 <a href="/index.php?title=Special:Upload&amp;wpDestFile=Nonexistent" class="new" title="File:Nonexistent">&lt;script&gt;&lt;/script&gt;</a>
7516 <a href="/index.php?title=Special:Upload&amp;wpDestFile=Nonexistent" class="new" title="File:Nonexistent">&lt;</a>
7517 <a href="/index.php?title=Special:Upload&amp;wpDestFile=Nonexistent" class="new" title="File:Nonexistent">abc</a>
7518 </p>
7519 !! html/parsoid
7520 <p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"&amp;lt;script&amp;gt;&amp;lt;/script&amp;gt;"}'><a href="./File:Nonexistent"><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220"/></a></span>
7521 <span typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"&amp;lt;script&amp;gt;&amp;lt;/script&amp;gt;"}'><a href="./File:Nonexistent"><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="100" width="100"/></a></span>
7522 <span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"&lt;span typeof=\"mw:Entity\" data-parsoid=\"{&amp;quot;src&amp;quot;:&amp;quot;&amp;amp;lt;&amp;quot;,&amp;quot;srcContent&amp;quot;:&amp;quot;&lt;&amp;quot;,&amp;quot;dsr&amp;quot;:[107,111,null,null]}\">&amp;lt;&lt;/span>"}'><a href="./File:Nonexistent"><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220"/></a></span>
7523 <span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"a&lt;i data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;html&amp;quot;,&amp;quot;dsr&amp;quot;:[134,142,3,4]}\">b&lt;/i>c"}'><a href="./File:Nonexistent"><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220"/></a></span></p>
7524 !! end
7526 !! test
7527 Plain link to URL
7528 !! wikitext
7529 [[http://www.example.com]]
7530 !! html/php
7531 <p>[<a rel="nofollow" class="external autonumber" href="http://www.example.com">[1]</a>]
7532 </p>
7533 !! html/parsoid
7534 <p>[<a rel="mw:ExtLink" href="http://www.example.com"></a>]</p>
7535 !! end
7537 !! test
7538 Plain link to URL with link text
7539 !! wikitext
7540 [[http://www.example.com Link text]]
7541 !! html
7542 <p>[<a rel="nofollow" class="external text" href="http://www.example.com">Link text</a>]
7543 </p>
7544 !! end
7546 !! test
7547 Plain link to protocol-relative URL
7548 !! wikitext
7549 [[//www.example.com]]
7550 !! html/php
7551 <p>[<a rel="nofollow" class="external autonumber" href="//www.example.com">[1]</a>]
7552 </p>
7553 !! html/parsoid
7554 <p>[<a rel="mw:ExtLink" href="//www.example.com"></a>]</p>
7555 !! end
7557 !! test
7558 Plain link to protocol-relative URL with link text
7559 !! wikitext
7560 [[//www.example.com Link text]]
7561 !! html
7562 <p>[<a rel="nofollow" class="external text" href="//www.example.com">Link text</a>]
7563 </p>
7564 !! end
7566 !! test
7567 Plain link to page with question mark in title
7568 !! wikitext
7569 [[A?b]]
7571 [[A?b|Baz]]
7572 !! html
7573 <p><a href="/wiki/A%3Fb" title="A?b">A?b</a>
7574 </p><p><a href="/wiki/A%3Fb" title="A?b">Baz</a>
7575 </p>
7576 !! end
7579 # I'm fairly sure the expected result here is wrong.
7580 # We want these to be URL links, not pseudo-pages with URLs for titles....
7581 # However the current output is also pretty screwy.
7583 # ----
7584 # I'm changing it to match the current output--it arguably makes more
7585 # sense in the light of the test above. Old expected result was:
7586 #<p>Piped link to URL: <a href="/index.php?title=Http://www.example.com&amp;action=edit" class="new">an example URL</a>
7587 #</p>
7588 # But I think this test is bordering on "garbage in, garbage out" anyway.
7589 # -- wtm
7590 !! test
7591 Piped link to URL
7592 !! wikitext
7593 Piped link to URL: [[http://www.example.com|an example URL]]
7594 !! html/php
7595 <p>Piped link to URL: [<a rel="nofollow" class="external text" href="http://www.example.com%7Can">example URL</a>]
7596 </p>
7597 !! html/parsoid
7598 <p>Piped link to URL: [<a rel="mw:ExtLink" href="http://www.example.com|an">example URL</a>]</p>
7599 !! end
7601 !! test
7602 BUG 2: [[page|http://url/]] should link to page, not http://url/
7603 !! wikitext
7604 [[Main Page|http://url/]]
7605 !! html/php
7606 <p><a href="/wiki/Main_Page" title="Main Page">http://url/</a>
7607 </p>
7608 !! html/parsoid
7609 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">http://url/</a></p>
7610 !! end
7612 # Parsoid does not mark self-links, by design.
7613 !! test
7614 BUG 337: Escaped self-links should be bold
7615 !! options
7616 title=[[Bug462]]
7617 !! wikitext
7618 [[Bu&#103;462]] [[Bug462]]
7619 !! html/php
7620 <p><strong class="selflink">Bu&#103;462</strong> <strong class="selflink">Bug462</strong>
7621 </p>
7622 !! html/php+tidy
7623 <p><strong class="selflink">Bug462</strong> <strong class="selflink">Bug462</strong></p>
7624 !! html/parsoid
7625 <p><a rel="mw:WikiLink" href="./Bug462" title="Bug462">Bug462</a> <a rel="mw:WikiLink" href="./Bug462" title="Bug462">Bug462</a></p>
7626 !! end
7628 !! test
7629 Self-link to section should not be bold
7630 !! options
7631 title=[[Main Page]]
7632 !! wikitext
7633 [[Main Page#section]]
7634 !! html
7635 <p><a href="/wiki/Main_Page#section" title="Main Page">Main Page#section</a>
7636 </p>
7637 !! end
7639 !! article
7641 !! text
7642 This is 00.
7643 !! endarticle
7645 !!test
7646 Self-link to numeric title
7647 !!options
7648 title=[[0]]
7649 !! wikitext
7650 [[0]]
7651 !! html
7652 <p><strong class="selflink">0</strong>
7653 </p>
7654 !!end
7656 !!test
7657 Link to numeric-equivalent title
7658 !!options
7659 title=[[0]]
7660 !! wikitext
7661 [[00]]
7662 !! html
7663 <p><a href="/wiki/00" title="00">00</a>
7664 </p>
7665 !!end
7667 !! test
7668 <nowiki> inside a link
7669 !! wikitext
7670 [[Main<nowiki> Page</nowiki>]] [[Main Page|the main page <nowiki>[it's not very good]</nowiki>]]
7671 !! html
7672 <p>[[Main Page]] <a href="/wiki/Main_Page" title="Main Page">the main page [it's not very good]</a>
7673 </p>
7674 !! end
7676 !! test
7677 Non-breaking spaces in title
7678 !! wikitext
7679 [[&nbsp; Main &nbsp; Page &nbsp;]]
7680 !! html
7681 <p><a href="/wiki/Main_Page" title="Main Page">&#160; Main &#160; Page &#160;</a>
7682 </p>
7683 !!end
7685 !! test
7686 Internal link with ca linktrail, surrounded by bold apostrophes (bug 27473 primary issue)
7687 !! options
7688 language=ca
7689 !! wikitext
7690 '''[[Main Page]]'''
7691 !! html
7692 <p><b><a href="/wiki/Main_Page" title="Main Page">Main Page</a></b>
7693 </p>
7694 !! end
7696 !! test
7697 Internal link with ca linktrail, surrounded by italic apostrophes (bug 27473 primary issue)
7698 !! options
7699 language=ca
7700 !! wikitext
7701 ''[[Main Page]]''
7702 !! html
7703 <p><i><a href="/wiki/Main_Page" title="Main Page">Main Page</a></i>
7704 </p>
7705 !! end
7707 !! test
7708 Internal link with en linktrail: no apostrophes (bug 27473)
7709 !! options
7710 language=en
7711 !! wikitext
7712 [[Something]]'nice
7713 !! html
7714 <p><a href="/index.php?title=Something&amp;action=edit&amp;redlink=1" class="new" title="Something (page does not exist)">Something</a>'nice
7715 </p>
7716 !! end
7718 !! test
7719 Internal link with ca linktrail with apostrophes (bug 27473)
7720 !! options
7721 language=ca
7722 !! wikitext
7723 [[Something]]'nice
7724 !! html
7725 <p><a href="/index.php?title=Something&amp;action=edit&amp;redlink=1" class="new" title="Something (encara no existeix)">Something'nice</a>
7726 </p>
7727 !! end
7729 !! test
7730 Internal link with kaa linktrail with apostrophes (bug 27473)
7731 !! options
7732 language=kaa
7733 !! wikitext
7734 [[Something]]'nice
7735 !! html
7736 <p><a href="/index.php?title=Something&amp;action=edit&amp;redlink=1" class="new" title="Something (bet ele jaratılmag'an)">Something'nice</a>
7737 </p>
7738 !! end
7740 !! test
7741 Link with multiple ":" in a subpage-supporting namespace (bug 63636)
7742 !! wikitext
7743 [[User:Foo/Test/63636:Bar|Test]]
7744 !! html/php
7745 <p><a href="/index.php?title=User:Foo/Test/63636:Bar&amp;action=edit&amp;redlink=1" class="new" title="User:Foo/Test/63636:Bar (page does not exist)">Test</a>
7746 </p>
7747 !! html/parsoid
7748 <p><a rel="mw:WikiLink" href="./User:Foo/Test/63636:Bar" title="User:Foo/Test/63636:Bar">Test</a></p>
7749 !! end
7751 !! test
7752 Purely hash wikilink
7753 !! options
7754 title=[[User:test/123]]
7755 !! wikitext
7756 [[#a|b]]
7757 !! html/php
7758 <p><a href="#a">b</a>
7759 </p>
7760 !! html/parsoid
7761 <p><a rel="mw:WikiLink" href="./User:Test/123#a" data-parsoid='{"stx":"piped","a":{"href":"./User:Test/123#a"},"sa":{"href":"#a"}}'>b</a></p>
7762 !! end
7764 !! test
7765 1. Interaction of linktrail and template encapsulation
7766 !! options
7767 parsoid
7768 !! wikitext
7769 {{echo|[[Foo]]}}l
7770 !! html
7771 <p><a rel="mw:WikiLink" href="Foo" title="Foo" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Foo]]"}},"i":0}},"l"]}'>Fool</a></p>
7772 !! end
7774 !! test
7775 2. Interaction of linktrail and template encapsulation
7776 !! options
7777 parsoid
7778 !! wikitext
7779 {{echo|Some [[Fool]]}}s
7780 !! html
7781 <p><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" title="Fool" about="#mwt1" data-parsoid='{"stx":"simple","a":{"href":"./Fool"},"sa":{"href":"Fool"},"tail":"s"}'>Fools</a></p>
7782 !! end
7784 !! test
7785 3. Interaction of linktrail and template encapsulation
7786 !! options
7787 parsoid
7788 !! wikitext
7789 {{echo|Some [[Fool]]s are '''bold and foolish'''}}
7790 !! html
7791 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Some [[Fool]]s are &#39;&#39;&#39;bold and foolish&#39;&#39;&#39;"}},"i":0}}]}' data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}'>Some <a rel="mw:WikiLink" href="./Fool" title="Fool" data-parsoid='{"stx":"simple","a":{"href":"./Fool"},"sa":{"href":"Fool"},"tail":"s"}'>Fools</a> are <b>bold and foolish</b></p>
7792 !! end
7794 !! article
7795 Söfnuður
7796 !! text
7797 Test.
7798 !! endarticle
7800 !! test
7801 Internal link with is link prefix
7802 !! options
7803 language=is
7804 !! wikitext
7805 Aðrir mótmælenda[[söfnuður|söfnuðir]] og
7806 !! html
7807 <p>Aðrir <a href="/wiki/S%C3%B6fnu%C3%B0ur" title="Söfnuður">mótmælendasöfnuðir</a> og
7808 </p>
7809 !! end
7811 !! article
7812 Mótmælendatrú
7813 !! text
7814 Test.
7815 !! endarticle
7817 !! test
7818 Internal link with is link trail and link prefix
7819 !! options
7820 language=is
7821 !! wikitext
7822 [[mótmælendatrú|xxx]]ar
7823 [[mótmælendatrú]]ar
7824 mótmælenda[[söfnuður]]
7825 mótmælenda[[söfnuður|söfnuðir]]
7826 mótmælenda[[söfnuður|söfnuðir]]xxx
7827 !! html
7828 <p><a href="/wiki/M%C3%B3tm%C3%A6lendatr%C3%BA" title="Mótmælendatrú">xxxar</a>
7829 <a href="/wiki/M%C3%B3tm%C3%A6lendatr%C3%BA" title="Mótmælendatrú">mótmælendatrúar</a>
7830 <a href="/wiki/S%C3%B6fnu%C3%B0ur" title="Söfnuður">mótmælendasöfnuður</a>
7831 <a href="/wiki/S%C3%B6fnu%C3%B0ur" title="Söfnuður">mótmælendasöfnuðir</a>
7832 <a href="/wiki/S%C3%B6fnu%C3%B0ur" title="Söfnuður">mótmælendasöfnuðirxxx</a>
7833 </p>
7834 !! end
7836 !! test
7837 Parsoid link trail escaping
7838 !! options
7839 parsoid=html2wt,html2html
7840 !! html/parsoid
7841 <p><a rel="mw:WikiLink" href="Apple" title="Apple">apple</a>s</p>
7842 !! wikitext
7843 [[apple]]<nowiki/>s
7844 !! end
7846 !! test
7847 Parsoid link prefix escaping
7848 !! options
7849 language=is
7850 parsoid=html2wt,html2html
7851 !! html/parsoid
7852 <p>Aðrir mótmælenda<a rel="mw:WikiLink" href="Söfnuður" title="Söfnuður">söfnuður</a></p>
7853 !! wikitext
7854 Aðrir mótmælenda<nowiki/>[[söfnuður]]
7855 !! end
7857 !! test
7858 Parsoid-centric test: Whitespace in ext- and wiki-links should be preserved
7859 !! wikitext
7860 [[Foo|  bar]]
7862 [[Foo|  ''bar'']]
7864 [http://wp.org   foo]
7866 [http://wp.org   ''foo'']
7867 !! html
7868 <p><a href="/wiki/Foo" title="Foo">  bar</a>
7869 </p><p><a href="/wiki/Foo" title="Foo">  <i>bar</i></a>
7870 </p><p><a rel="nofollow" class="external text" href="http://wp.org">foo</a>
7871 </p><p><a rel="nofollow" class="external text" href="http://wp.org"><i>foo</i></a>
7872 </p>
7873 !! end
7875 !! test
7876 Parsoid: Scoped parsing should handle mixed transclusions and plain text
7877 !! options
7878 parsoid
7879 !! wikitext
7880 [[Foo|{{echo|a}} b {{echo|c}}]]
7881 !! html
7882 <p><a rel="mw:WikiLink" href="Foo" title="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>
7883 !! end
7885 !! test
7886 Link with angle bracket after anchor
7887 !! wikitext
7888 [[Foo#<bar>]]
7889 !! html/php
7890 <p><a href="/wiki/Foo#.3Cbar.3E" title="Foo">Foo#&lt;bar&gt;</a>
7891 </p>
7892 !! html/parsoid
7893 <p><a rel="mw:WikiLink" href="./Foo#%3Cbar%3E" title="Foo" data-parsoid='{"stx":"simple","a":{"href":"./Foo#%3Cbar%3E"},"sa":{"href":"Foo#&lt;bar>"}}'>Foo#&lt;bar></a></p>
7894 !! end
7897 ### Interwiki links (see maintenance/interwiki.sql)
7900 !! test
7901 Inline interwiki link
7902 !! options
7903 parsoid=wt2html,wt2wt,html2html
7904 !! wikitext
7905 [[MeatBall:SoftSecurity]]
7906 !! html/php
7907 <p><a href="http://www.usemod.com/cgi-bin/mb.pl?SoftSecurity" class="extiw" title="meatball:SoftSecurity">MeatBall:SoftSecurity</a>
7908 </p>
7909 !! html/parsoid
7910 <p><a rel="mw:ExtLink" href="http://www.usemod.com/cgi-bin/mb.pl?SoftSecurity" title="meatball:SoftSecurity">MeatBall:SoftSecurity</a></p>
7911 !! end
7913 !! test
7914 Inline interwiki link with empty title (bug 2372)
7915 !! options
7916 parsoid=wt2html,wt2wt,html2html
7917 !! wikitext
7918 [[MeatBall:]]
7919 !! html/php
7920 <p><a href="http://www.usemod.com/cgi-bin/mb.pl" class="extiw" title="meatball:">MeatBall:</a>
7921 </p>
7922 !! html/parsoid
7923 <p><a rel="mw:ExtLink" href="http://www.usemod.com/cgi-bin/mb.pl?" title="meatball:">MeatBall:</a></p>
7924 !! end
7926 !! test
7927 Interwiki link encoding conversion (bug 1636)
7928 !! wikitext
7929 *[[Wikipedia:ro:Olteni&#0355;a]]
7930 *[[Wikipedia:ro:Olteni&#355;a]]
7931 !! html
7932 <ul><li><a href="http://en.wikipedia.org/wiki/ro:Olteni%C5%A3a" class="extiw" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteni&#355;a</a></li>
7933 <li><a href="http://en.wikipedia.org/wiki/ro:Olteni%C5%A3a" class="extiw" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteni&#355;a</a></li></ul>
7935 !! html+tidy
7936 <ul>
7937 <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>
7938 <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>
7939 </ul>
7940 !! end
7942 !! test
7943 Interwiki link with fragment (bug 2130)
7944 !! wikitext
7945 [[MeatBall:SoftSecurity#foo]]
7946 !! html
7947 <p><a href="http://www.usemod.com/cgi-bin/mb.pl?SoftSecurity#foo" class="extiw" title="meatball:SoftSecurity">MeatBall:SoftSecurity#foo</a>
7948 </p>
7949 !! end
7951 # Ideally the wikipedia: prefix here should be proto-relative too
7952 # [CSA]: this is kind of a bogus test, as the PHP parser test doesn't
7953 # define the 'en' prefix, and originally the test used 'wikipedia',
7954 # which isn't a localinterwiki prefix hence the links to the 'en:Foo'
7955 # article.
7956 !! test
7957 Different interwiki prefixes mapping to the same URL
7958 !! wikitext
7959 [[:en:Foo]]
7961 [[:en:Foo|Foo]]
7963 [[wikipedia:Foo]]
7965 [[:wikipedia:Foo|Foo]]
7967 [[wikipedia:en:Foo]]
7969 [[:wikipedia:en:Foo]]
7971 [[  wikiPEdia :Foo]]
7972 !! html/parsoid
7973 <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}' title="en:Foo">en:Foo</a></p>
7975 <p><a rel="mw:ExtLink" href="//en.wikipedia.org/wiki/Foo" data-parsoid='{"stx":"piped","a":{"href":"//en.wikipedia.org/wiki/Foo"},"sa":{"href":":en:Foo"},"isIW":true}' title="en:Foo">Foo</a></p>
7977 <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}' title="wikipedia:Foo">wikipedia:Foo</a></p>
7979 <p><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}' title="wikipedia:Foo">Foo</a></p>
7981 <p><a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/en:Foo" data-parsoid='{"stx":"simple","a":{"href":"http://en.wikipedia.org/wiki/en:Foo"},"sa":{"href":"wikipedia:en:Foo"},"isIW":true}' title="wikipedia:en:Foo">wikipedia:en:Foo</a></p>
7983 <p><a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/en:Foo" data-parsoid='{"stx":"simple","a":{"href":"http://en.wikipedia.org/wiki/en:Foo"},"sa":{"href":":wikipedia:en:Foo"},"isIW":true}' title="wikipedia:en:Foo">wikipedia:en:Foo</a></p>
7985 <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}' title="wikipedia:Foo">  wikiPEdia :Foo</a></p>
7986 !! end
7988 !! test
7989 Interwiki links that cannot be represented in wiki syntax
7990 !! wikitext
7991 [[meatball:ok]]
7992 [[meatball:ok#foo|ok with fragment]]
7993 [[meatball:ok_as_well?|ok ending with ? mark]]
7994 [http://de.wikipedia.org/wiki/Foo?action=history has query]
7995 [http://de.wikipedia.org/wiki/#foo is just fragment]
7997 !! html/php
7998 <p><a href="http://www.usemod.com/cgi-bin/mb.pl?ok" class="extiw" title="meatball:ok">meatball:ok</a>
7999 <a href="http://www.usemod.com/cgi-bin/mb.pl?ok#foo" class="extiw" title="meatball:ok">ok with fragment</a>
8000 <a href="http://www.usemod.com/cgi-bin/mb.pl?ok_as_well%3F" class="extiw" title="meatball:ok as well?">ok ending with ? mark</a>
8001 <a rel="nofollow" class="external text" href="http://de.wikipedia.org/wiki/Foo?action=history">has query</a>
8002 <a rel="nofollow" class="external text" href="http://de.wikipedia.org/wiki/#foo">is just fragment</a>
8003 </p>
8004 !! html/parsoid
8005 <p><a rel="mw:ExtLink" href="http://www.usemod.com/cgi-bin/mb.pl?ok" title="meatball:ok">meatball:ok</a>
8006 <a rel="mw:ExtLink" href="http://www.usemod.com/cgi-bin/mb.pl?ok#foo" title="meatball:ok">ok with fragment</a>
8007 <a rel="mw:ExtLink" href="http://www.usemod.com/cgi-bin/mb.pl?ok_as_well?" title="meatball:ok as well?">ok ending with ? mark</a>
8008 <a rel="mw:ExtLink" href="http://de.wikipedia.org/wiki/Foo?action=history">has query</a>
8009 <a rel="mw:ExtLink" href="http://de.wikipedia.org/wiki/#foo">is just fragment</a></p>
8010 !! end
8012 !! test
8013 Interwiki links: trail
8014 !! wikitext
8015 [[wikipedia:Foo|Ba]]r
8016 !! html/php
8017 <p><a href="http://en.wikipedia.org/wiki/Foo" class="extiw" title="wikipedia:Foo">Bar</a>
8018 </p>
8019 !! html/parsoid
8020 <p><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"}' title="wikipedia:Foo">Bar</a></p>
8021 !! end
8023 !! test
8024 Local interwiki link
8025 !! options
8026 parsoid=wt2html,wt2wt,html2html
8027 !! wikitext
8028 [[local:Template:Foo]]
8029 !! html/php
8030 <p><a href="/wiki/Template:Foo" title="Template:Foo">local:Template:Foo</a>
8031 </p>
8032 !! html/parsoid
8033 <p><a rel="mw:WikiLink" href="./Template:Foo" title="Template:Foo">local:Template:Foo</a></p>
8034 !! end
8036 # Parsoid does not mark self-links, by design.
8037 !! test
8038 Local interwiki link: self-link to current page
8039 !! options
8040 title=[[Main Page]]
8041 parsoid=wt2html,wt2wt,html2html
8042 !! wikitext
8043 [[local:Main Page]]
8044 !! html/php
8045 <p><strong class="selflink">local:Main Page</strong>
8046 </p>
8047 !! html/parsoid
8048 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">local:Main Page</a></p>
8049 !! end
8051 !! test
8052 Local interwiki link: prefix only (bug 64167)
8053 !! options
8054 parsoid=wt2html,wt2wt,html2html
8055 !! wikitext
8056 [[local:]]
8057 !! html/php
8058 <p><a href="/wiki/Main_Page" title="Main Page">local:</a>
8059 </p>
8060 !! html/parsoid
8061 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">local:</a></p>
8062 !! end
8064 !! test
8065 Local interwiki link: with additional interwiki prefix (bug 61357)
8066 !! options
8067 parsoid=wt2html,wt2wt,html2html
8068 !! wikitext
8069 [[local:meatball:Hello]]
8070 !! html/php
8071 <p><a href="http://www.usemod.com/cgi-bin/mb.pl?Hello" class="extiw" title="meatball:Hello">local:meatball:Hello</a>
8072 </p>
8073 !! html/parsoid
8074 <p><a rel="mw:ExtLink" href="http://www.usemod.com/cgi-bin/mb.pl?Hello" title="meatball:Hello">local:meatball:Hello</a></p>
8075 !! end
8077 !! test
8078 Multiple local interwiki link prefixes
8079 !! wikitext
8080 [[local:local:local:local:mi:local:Foo]]
8081 !! options
8082 parsoid=wt2html,wt2wt,html2html
8083 !! html/php
8084 <p><a href="/wiki/Foo" title="Foo">local:local:local:local:mi:local:Foo</a>
8085 </p>
8086 !! html/parsoid
8087 <p><a rel="mw:WikiLink" href="./Foo" title="Foo">local:local:local:local:mi:local:Foo</a></p>
8088 !! end
8091 ### Interlanguage links
8092 ### Language links (so that searching for '### language' matches..)
8095 !! test
8096 Interlanguage link
8097 !! options
8098 parsoid=wt2html,wt2wt,html2html
8099 !! wikitext
8100 Blah blah blah
8101 [[zh:Chinese]]
8102 !! html/php
8103 <p>Blah blah blah
8104 </p>
8105 !! html/parsoid
8106 <p>Blah blah blah</p>
8107 <link rel="mw:PageProp/Language" href="http://zh.wikipedia.org/wiki/Chinese"/>
8108 !! end
8110 !! test
8111 Interlanguage link with spacing
8112 !! options
8113 parsoid=wt2html,wt2wt,html2html
8114 !! wikitext
8115 Blah blah blah
8116 [[   zh  :    Chinese     ]]
8117 !! html/php
8118 <p>Blah blah blah
8119 </p>
8120 !! html/parsoid
8121 <p>Blah blah blah</p>
8122 <link rel="mw:PageProp/Language" href="http://zh.wikipedia.org/wiki/Chinese"/>
8123 !! end
8125 !! test
8126 Double interlanguage link
8127 !! options
8128 parsoid=wt2html,wt2wt,html2html
8129 !! wikitext
8130 Blah blah blah
8131 [[es:Spanish]]
8132 [[zh:Chinese]]
8133 !! html/php
8134 <p>Blah blah blah
8135 </p>
8136 !! html/parsoid
8137 <p>Blah blah blah</p>
8138 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Spanish"/>
8139 <link rel="mw:PageProp/Language" href="http://zh.wikipedia.org/wiki/Chinese"/>
8140 !! end
8142 !! test
8143 Interlanguage link variations
8144 !! options
8145 parsoid=wt2html,wt2wt,html2html
8146 !! wikitext
8147 Blah blah blah
8148 [[   es :Spanish]]
8149 [[ ZH :Chinese]]
8150 [[es:Foo_bar]]
8151 !! html/php
8152 <p>Blah blah blah
8153 </p>
8154 !! html/parsoid
8155 <p>Blah blah blah</p>
8156 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Spanish" />
8157 <link rel="mw:PageProp/Language" href="http://zh.wikipedia.org/wiki/Chinese" />
8158 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Foo_bar" />
8159 !! end
8161 !! test
8162 Space and question mark encoding in interlanguage links (T95473)
8163 !! options
8164 parsoid=wt2html,wt2wt,html2html
8165 !! wikitext
8166 Blah blah blah
8167 [[es:Foo bar?]]
8168 !! html/php
8169 <p>Blah blah blah
8170 </p>
8171 !! html/parsoid
8172 <p>Blah blah blah</p>
8173 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Foo_bar%3F" />
8174 !! end
8176 !! test
8177 Interlanguage link, with prefix links
8178 !! options
8179 language=ln
8180 !! wikitext
8181 Blah blah blah
8182 [[zh:Chinese]]
8183 !! html/php
8184 <p>Blah blah blah
8185 </p>
8186 !! html/parsoid
8187 <p>Blah blah blah</p>
8188 <link rel="mw:PageProp/Language" href="http://zh.wikipedia.org/wiki/Chinese"/>
8189 !! end
8191 !! test
8192 Double interlanguage link, with prefix links (bug 8897)
8193 !! options
8194 language=ln
8195 !! wikitext
8196 Blah blah blah
8197 [[es:Spanish]]
8198 [[zh:Chinese]]
8199 !! html/php
8200 <p>Blah blah blah
8201 </p>
8202 !! html/parsoid
8203 <p>Blah blah blah</p>
8204 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Spanish"/>
8205 <link rel="mw:PageProp/Language" href="http://zh.wikipedia.org/wiki/Chinese"/>
8206 !! end
8208 !! test
8209 "Extra" interlanguage links (bug 32189 / gerrit 111390)
8210 !! wikitext
8211 Blah blah blah
8212 [[mul:Article]]
8213 !! html/php
8214 <p>Blah blah blah
8215 </p>
8216 !! html/parsoid
8217 <p>Blah blah blah</p>
8218 <link rel="mw:PageProp/Language" title="Multilingual" href="http://wikisource.org/wiki/Article"/>
8219 !! end
8221 !! test
8222 Parsoid-specific test: Wikilinks with &nbsp; should RT properly
8223 !! options
8224 language=ln
8225 !! wikitext
8226 [[WW&nbsp;II]]
8227 !! html
8228 <p><a href="/index.php?title=WW_II&amp;action=edit&amp;redlink=1" class="new" title="WW II (lonkásá  ezalí tɛ̂)">WW&#160;II</a>
8229 </p>
8230 !! end
8232 !! test
8233 Parsoid bug 53221: Wikilinks should be properly entity-escaped
8234 !! options
8235 parsoid=html2wt
8236 !! html/parsoid
8237 <p>He&amp;nbsp;llo <a href="Foo" rel="mw:WikiLink">He&amp;nbsp;llo</a></p>
8238 <p>He&amp;nbsp;llo <a href="He&amp;nbsp;llo" rel="mw:WikiLink">He&amp;nbsp;llo</a></p>
8239 !! wikitext
8240 He&amp;nbsp;llo [[Foo|He&amp;nbsp;llo]]
8242 He&amp;nbsp;llo [[He&amp;nbsp;llo]]
8243 !! end
8245 !! test
8246 Parsoid: handle constructor well
8247 !! wikitext
8248 [[constructor]]
8250 [[constructor:foo]]
8251 !! html/php
8252 <p><a href="/index.php?title=Constructor&amp;action=edit&amp;redlink=1" class="new" title="Constructor (page does not exist)">constructor</a>
8253 </p><p><a href="/index.php?title=Constructor:foo&amp;action=edit&amp;redlink=1" class="new" title="Constructor:foo (page does not exist)">constructor:foo</a>
8254 </p>
8255 !! html/parsoid
8256 <p><a rel="mw:WikiLink" href="./Constructor" title="Constructor" data-parsoid="{&quot;stx&quot;:&quot;simple&quot;,&quot;a&quot;:{&quot;href&quot;:&quot;./Constructor&quot;},&quot;sa&quot;:{&quot;href&quot;:&quot;constructor&quot;}}">constructor</a></p>
8258 <p><a rel="mw:WikiLink" href="./Foo" title="Foo" data-parsoid="{&quot;stx&quot;:&quot;simple&quot;,&quot;a&quot;:{&quot;href&quot;:&quot;./Foo&quot;},&quot;sa&quot;:{&quot;href&quot;:&quot;constructor:foo&quot;}}">constructor:foo</a></p>
8259 !! end
8261 !! article
8263 !! text
8264 Test.
8265 !! endarticle
8267 # Note that `ko` isn't a known interlanguage prefix
8268 !! test
8269 Parsoid: recognize interlanguage links without a target page
8270 !! options
8272 !! wikitext
8273 [[es:]]
8275 [[ko:]]
8276 !! html/php
8278 !! html/parsoid
8279 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/"/>
8281 <p><a rel="mw:WikiLink" href="./Ko:" title="Ko:">ko:</a></p>
8282 !! end
8284 # Note that `ko` isn't a known interwiki prefix
8285 !! test
8286 Parsoid: recognize interwiki links without a target page
8287 !! options
8288 parsoid=wt2html,wt2wt,html2html
8289 !! wikitext
8290 [[:es:]]
8292 [[:ko:]]
8293 !! html/php
8294 <p><a href="http://es.wikipedia.org/wiki/" class="extiw" title="es:">es:</a>
8295 </p><p><a href="/wiki/Ko:" title="Ko:">ko:</a>
8296 </p>
8297 !! html/parsoid
8298 <p><a rel="mw:ExtLink" href="http://es.wikipedia.org/wiki/" title="es:">es:</a></p>
8299 <p><a rel="mw:WikiLink" href="./Ko:" title="Ko:">ko:</a></p>
8300 !! end
8302 !! test
8303 Handle interwiki links pointing to the current wiki as plain wiki links (bug 45209)
8304 !! wikitext
8305 [[mi:Foo]]
8306 !! html/php
8307 <p><a href="/wiki/Foo" title="Foo">mi:Foo</a>
8308 </p>
8309 !! html/parsoid
8310 <p><a rel="mw:WikiLink" href="./Foo" title="Foo" data-parsoid='{"stx":"simple","a":{"href":"./Foo"},"sa":{"href":"mi:Foo"}}'>mi:Foo</a></p>
8311 !! end
8313 !! test
8314 Interlanguage link with preceding local interwiki link (bug 68085)
8315 !! options
8316 parsoid=wt2html,wt2wt,html2html
8317 !! wikitext
8318 Blah blah blah
8319 [[local:es:Spanish]]
8320 !! html/php
8321 <p>Blah blah blah
8322 <a href="http://es.wikipedia.org/wiki/Spanish" class="extiw" title="es:Spanish">local:es:Spanish</a>
8323 </p>
8324 !! html/parsoid
8325 <p>Blah blah blah
8326 <a rel="mw:ExtLink" href="http://es.wikipedia.org/wiki/Spanish" title="es:Spanish">local:es:Spanish</a></p>
8327 !! end
8329 !! test
8330 Looks like an interlanguage link, but is actually a local interwiki
8331 !! options
8332 parsoid=wt2html,wt2wt,html2html
8333 !! wikitext
8334 Blah blah blah
8335 [[mi:Template:Foo]]
8336 !! html/php
8337 <p>Blah blah blah
8338 <a href="/wiki/Template:Foo" title="Template:Foo">mi:Template:Foo</a>
8339 </p>
8340 !! html/parsoid
8341 <p>Blah blah blah
8342 <a rel="mw:WikiLink" href="./Template:Foo" title="Template:Foo">mi:Template:Foo</a></p>
8343 !! end
8346 ### Redirects, Parsoid-only
8349 !! test
8350 1. Simple redirect to page
8351 !! wikitext
8352 #REDIRECT [[Main Page]]
8353 !! html/parsoid
8354 <link rel="mw:PageProp/redirect" href="./Main_Page"/>
8355 !! end
8357 !! test
8358 2. Other redirect variants
8359 !! wikitext
8360 #REDIRECT [[Main_Page]]
8361 !! html/parsoid
8362 <link rel="mw:PageProp/redirect" href="./Main_Page" data-parsoid='{"src":"#REDIRECT ","a":{"href":"./Main_Page"},"sa":{"href":"Main_Page"}}'/>
8363 !! end
8365 # Not a valid redirect in PHP (although perhaps it was, once upon a time)
8366 # This tests the Parsoid bail-out code.
8367 !! test
8368 3. Other redirect variants
8369 !! wikitext
8370 #REDIRECT [[<nowiki>[[Bar]]</nowiki>]]
8371 !! html/parsoid
8372 <ol><li data-parsoid>REDIRECT [[[[Bar]]]]</li></ol>
8373 !! end
8375 !! test
8376 4. Redirect to a templated destination
8377 !! wikitext
8378 #REDIRECT [[{{echo|Foo}}bar]]
8379 !! html/parsoid
8380 <link typeof="mw:ExpandedAttrs" rel="mw:PageProp/redirect" href="./Foobar" data-mw='{"attribs":[[{"txt":"href"},{"html":"&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=\"{&amp;quot;pi&amp;quot;:[[{&amp;quot;k&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;spc&amp;quot;:[&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;]}]],&amp;quot;dsr&amp;quot;:[12,24,null,null]}\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;echo&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Echo&amp;quot;},&amp;quot;params&amp;quot;:{&amp;quot;1&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;Foo&amp;quot;}},&amp;quot;i&amp;quot;:0}}]}\">Foo&lt;/span>bar"}]]}'/>
8381 !! end
8383 !! test
8384 Empty redirect
8385 !! options
8386 parsoid=wt2html,wt2wt
8387 !! wikitext
8388 #REDIRECT [[]]
8389 !! html/parsoid
8390 <ol>
8391 <li>REDIRECT [[]]</li></ol>
8392 !! end
8394 !! test
8395 Optional colon in #REDIRECT
8396 !! options
8397 # the colon is archaic syntax.  we support it for wt2html, but we
8398 # don't care that it roundtrips back to the modern syntax.
8399 parsoid=wt2html,html2html
8400 !! wikitext
8401 #REDIRECT:[[Main Page]]
8402 !! html/parsoid
8403 <link rel="mw:PageProp/redirect" href="./Main_Page"/>
8404 !! end
8406 !! test
8407 Whitespace in #REDIRECT with optional colon
8408 !! options
8409 # the colon and gratuitous whitespace is archaic syntax.  we support
8410 # it for wt2html, but we don't care that it roundtrips back to the
8411 # modern syntax (without extra whitespace)
8412 parsoid=wt2html,html2html
8413 !! wikitext
8415  #REDIRECT 
8417 [[Main Page]]
8418 !! html/parsoid
8419 <link rel="mw:PageProp/redirect" href="./Main_Page"/>
8420 !! end
8422 !! test
8423 Piped link in #REDIRECT
8424 !! options
8425 # content after piped link is ignored.  we support this syntax,
8426 # but don't care that the piped link is lost when we roundtrip this.
8427 parsoid=wt2html
8428 !! wikitext
8429 #REDIRECT [[Main Page|bar]]
8430 !! html/parsoid
8431 <link rel="mw:PageProp/redirect" href="./Main_Page"/>
8432 !! end
8434 !! test
8435 Redirect to category (T104502)
8436 !! options
8437 parsoid=wt2html,wt2wt
8438 !! wikitext
8439 #REDIRECT [[Category:Foo]]
8440 !! html/parsoid
8441 <link rel="mw:PageProp/redirect" href="./Category:Foo"/>
8442 !! end
8444 !! test
8445 Redirect to category with URL encoding (T104502)
8446 !! options
8447 parsoid=wt2html
8448 !! wikitext
8449 #REDIRECT [[Category%3AFoo]]
8450 !! html/parsoid
8451 <link rel="mw:PageProp/redirect" href="./Category:Foo"/>
8452 !! end
8454 !! test
8455 Redirect to category page
8456 !! wikitext
8457 #REDIRECT [[:Category:Foo]]
8458 !! html/parsoid
8459 <link rel="mw:PageProp/redirect" href="./Category:Foo"/>
8460 !! end
8462 !! test
8463 Redirect to image page (1)
8464 !! wikitext
8465 #REDIRECT [[File:Wiki.png]]
8466 !! html/parsoid
8467 <link rel="mw:PageProp/redirect" href="./File:Wiki.png"/>
8468 !! end
8470 !! test
8471 Redirect to image page (2)
8472 !! wikitext
8473 #REDIRECT [[Image:Wiki.png]]
8474 !! html/parsoid
8475 <link rel="mw:PageProp/redirect" href="./File:Wiki.png"  data-parsoid='{"src":"#REDIRECT ","a":{"href":"./File:Wiki.png"},"sa":{"href":"Image:Wiki.png"}}'/>
8476 !! end
8478 # html2wt disabled because wts serializes as "#REDIRECT [[:en:File:Wiki.png]]"
8479 # Next test confirms this.
8480 !! test
8481 Redirect to language (1) (T104918)
8482 !! options
8483 parsoid=wt2html,wt2wt,html2html
8484 !! wikitext
8485 #REDIRECT [[en:File:Wiki.png]]
8486 !! html/parsoid
8487 <link rel="mw:PageProp/redirect" href="//en.wikipedia.org/wiki/File:Wiki.png"/>
8488 !! end
8490 !! test
8491 Redirect to language (2) (T104918)
8492 !! wikitext
8493 #REDIRECT [[:en:File:Wiki.png]]
8494 !! html/parsoid
8495 <link rel="mw:PageProp/redirect" href="//en.wikipedia.org/wiki/File:Wiki.png"/>
8496 !! end
8498 !! test
8499 Redirect to interwiki (T104918)
8500 !! wikitext
8501 #REDIRECT [[meatball:File:Wiki.png]]
8502 !! html/parsoid
8503 <link rel="mw:PageProp/redirect" href="http://www.usemod.com/cgi-bin/mb.pl?File:Wiki.png"/>
8504 !! end
8506 !! test
8507 Non-English #REDIRECT
8508 !! options
8509 language=is
8510 !! wikitext
8511 #TILVÍSUN [[Main Page]]
8512 !! html/parsoid
8513 <link rel="mw:PageProp/redirect" href="./Main_Page" data-parsoid='{"src":"#TILVÍSUN ","a":{"href":"./Main_Page"},"sa":{"href":"Main Page"}}'/>
8514 !! end
8516 !! test
8517 Redirect syntax under text isn't considered a redirect
8518 !! wikitext
8519 some text
8520 #redirect [[Main Page]]
8521 !! html/parsoid
8522 <p>some text</p>
8523 <ol data-parsoid='{}'><li data-parsoid='{}'>redirect <a rel="mw:WikiLink" href="./Main_Page" title="Main Page" data-parsoid='{"stx":"simple","a":{"href":"./Main_Page"},"sa":{"href":"Main Page"}}'>Main Page</a></li></ol>
8524 !! end
8526 # FIXME: Should hoist the redirect to the top of the page and ensure there
8527 # is only one.
8528 !! test
8529 New redirect
8530 !! options
8531 parsoid=html2wt
8532 !! html/parsoid
8533 <p>Foo<link rel="mw:PageProp/redirect" href="./Foo"/></p>
8534 !! wikitext
8536 #REDIRECT [[Foo]]
8537 !! end
8540 ## XHTML tidiness
8543 !! test
8544 <br> to <br />
8545 !! wikitext
8546 1<br>2<br />3
8547 !! html
8548 <p>1<br />2<br />3
8549 </p>
8550 !! end
8552 !! test
8553 Broken br tag sanitization
8554 !! wikitext
8555 </br>
8556 !! html/php
8557 <p>&lt;/br&gt;
8558 </p>
8559 !! end
8561 # TODO: Fix html2html mode (bug 51055)!
8562 !! test
8563 Parsoid: Broken br tag recognition
8564 !! options
8565 parsoid=wt2html
8566 !! wikitext
8567 </br>
8569 <br/ >
8570 !! html+tidy
8571 <p><br /></p>
8572 <p><br /></p>
8573 !! end
8575 !! test
8576 Incorrecly removing closing slashes from correctly formed XHTML
8577 !! wikitext
8578 <br style="clear:both;" />
8579 !! html
8580 <p><br style="clear:both;" />
8581 </p>
8582 !! end
8584 !! test
8585 Failing to transform badly formed HTML into correct XHTML
8586 !! wikitext
8587 <br style="clear: left;">
8588 <br style="clear: right;">
8589 <br style="clear: both;">
8590 !! html
8591 <p><br style="clear: left;" />
8592 <br style="clear: right;" />
8593 <br style="clear: both;" />
8594 </p>
8595 !!end
8597 ## FIXME: Is Parsoid's acceptance of self-closing html-tags
8598 ## a feature or a bug? See https://phabricator.wikimedia.org/T76962
8599 !! test
8600 Handling html with a div self-closing tag
8601 !! wikitext
8602 <div title />
8603 <div title/>
8604 <div title/ >
8605 <div title=bar />
8606 <div title=bar/>
8607 <div title=bar/ >
8608 !! html/php
8609 <p>&lt;div title /&gt;
8610 &lt;div title/&gt;
8611 </p>
8612 <div>
8613 <p>&lt;div title=bar /&gt;
8614 &lt;div title=bar/&gt;
8615 </p>
8616 <div title="bar/"></div>
8617 </div>
8619 !! html/parsoid
8620 <div title="" data-parsoid='{"stx":"html","selfClose":true}'></div>
8621 <div title="" data-parsoid='{"stx":"html","selfClose":true}'></div>
8622 <div title="" data-parsoid='{"stx":"html","selfClose":true,"brokenHTMLTag":true}'></div>
8623 <div title="bar" data-parsoid='{"stx":"html","selfClose":true}'></div>
8624 <div title="bar" data-parsoid='{"stx":"html","selfClose":true}'></div>
8625 <div title="bar/" data-parsoid='{"stx":"html","autoInsertedEnd":true}'></div>
8626 !! end
8628 !! test
8629 Handling html with a br self-closing tag
8630 !! wikitext
8631 <br title />
8632 <br title/>
8633 <br title/ >
8634 <br title=bar />
8635 <br title=bar/>
8636 <br title=bar/ >
8637 !! html/php
8638 <p><br title="" />
8639 <br title="" />
8640 <br />
8641 <br title="bar" />
8642 <br title="bar" />
8643 <br title="bar/" />
8644 </p>
8645 !! html/parsoid
8646 <p><br title="" />
8647 <br title="" />
8648 <br title="" />
8649 <br title="bar" />
8650 <br title="bar" />
8651 <br title="bar/" />
8652 </p>
8653 !! end
8655 !! test
8656 Horizontal ruler (should it add that extra space?)
8657 !! wikitext
8658 <hr>
8659 <hr >
8660 foo <hr
8661 > bar
8662 !! html+tidy
8663 <hr />
8664 <hr />
8665 <p>foo</p>
8666 <hr />
8667 <p>bar</p>
8668 !! end
8670 !! test
8671 Horizontal ruler -- 4+ dashes render hr
8672 !! wikitext
8673 ----
8674 !! html
8675 <hr />
8677 !! end
8679 !! test
8680 Horizontal ruler -- eats additional dashes on the same line
8681 !! wikitext
8682 ---------
8683 !! html
8684 <hr />
8686 !! end
8688 !! test
8689 Horizontal ruler -- does not collapse dashes on consecutive lines
8690 !! wikitext
8691 ----
8692 ----
8693 !! html
8694 <hr />
8695 <hr />
8697 !! end
8699 !! test
8700 Horizontal ruler -- <4 dashes render as plain text
8701 !! wikitext
8703 !! html
8704 <p>---
8705 </p>
8706 !! end
8708 !! test
8709 Horizontal ruler -- Supports content following dashes on same line
8710 !! wikitext
8711 ---- Foo
8712 !! html
8713 <hr /> Foo
8715 !! html+tidy
8716 <hr />
8717 <p>Foo</p>
8718 !! end
8721 ### Block-level elements
8723 !! test
8724 Common list
8725 !! wikitext
8726 *Common list
8727 * item 2
8728 *item 3
8729 !! html
8730 <ul><li>Common list</li>
8731 <li> item 2</li>
8732 <li>item 3</li></ul>
8734 !! end
8736 !! test
8737 Numbered list
8738 !! wikitext
8739 #Numbered list
8740 #item 2
8741 # item 3
8742 !! html
8743 <ol><li>Numbered list</li>
8744 <li>item 2</li>
8745 <li> item 3</li></ol>
8747 !! end
8749 !! test
8750 Mixed list
8751 !! wikitext
8752 *Mixed list
8753 *# with numbers
8754 ** and bullets
8755 *# and numbers
8756 *bullets again
8757 **bullet level 2
8758 ***bullet level 3
8759 ***#Number on level 4
8760 **bullet level 2
8761 **#Number on level 3
8762 **#Number on level 3
8763 *#number level 2
8764 *Level 1
8765 *** Level 3
8766 #** Level 3, but ordered
8767 !! html
8768 <ul><li>Mixed list
8769 <ol><li> with numbers</li></ol>
8770 <ul><li> and bullets</li></ul>
8771 <ol><li> and numbers</li></ol></li>
8772 <li>bullets again
8773 <ul><li>bullet level 2
8774 <ul><li>bullet level 3
8775 <ol><li>Number on level 4</li></ol></li></ul></li>
8776 <li>bullet level 2
8777 <ol><li>Number on level 3</li>
8778 <li>Number on level 3</li></ol></li></ul>
8779 <ol><li>number level 2</li></ol></li>
8780 <li>Level 1
8781 <ul><li><ul><li> Level 3</li></ul></li></ul></li></ul>
8782 <ol><li><ul><li><ul><li> Level 3, but ordered</li></ul></li></ul></li></ol>
8784 !! end
8786 !! test
8787 Nested lists 1
8788 !! wikitext
8789 *foo
8790 **bar
8791 !! html
8792 <ul><li>foo
8793 <ul><li>bar</li></ul></li></ul>
8795 !! end
8797 !! test
8798 Nested lists 2
8799 !! wikitext
8800 **foo
8801 *bar
8802 !! html
8803 <ul><li><ul><li>foo</li></ul></li>
8804 <li>bar</li></ul>
8806 !! end
8808 !! test
8809 Nested lists 3 (first element empty)
8810 !! wikitext
8812 **bar
8813 !! html
8814 <ul><li>
8815 <ul><li>bar</li></ul></li></ul>
8817 !! end
8819 !! test
8820 Nested lists 4 (first element empty)
8821 !! wikitext
8823 *bar
8824 !! html
8825 <ul><li><ul><li></li></ul></li>
8826 <li>bar</li></ul>
8828 !! end
8830 !! test
8831 Nested lists 5 (both elements empty)
8832 !! wikitext
8835 !! html
8836 <ul><li><ul><li></li></ul></li>
8837 <li></li></ul>
8839 !! end
8841 !! test
8842 Nested lists 6 (both elements empty)
8843 !! wikitext
8846 !! html
8847 <ul><li>
8848 <ul><li></li></ul></li></ul>
8850 !! end
8852 !! test
8853 Nested lists 7 (skip initial nesting levels)
8854 !! wikitext
8855 *** foo
8856 !! html
8857 <ul><li><ul><li><ul><li> foo</li></ul></li></ul></li></ul>
8859 !! end
8861 !! test
8862 Nested lists 8 (multiple nesting transitions)
8863 !! wikitext
8864 * foo
8865 *** bar
8866 ** baz
8867 * boo
8868 !! html
8869 <ul><li> foo
8870 <ul><li><ul><li> bar</li></ul></li>
8871 <li> baz</li></ul></li>
8872 <li> boo</li></ul>
8874 !! end
8876 !! test
8877 Nested lists 9 (extension interaction)
8878 !! options
8879 parsoid
8880 !! wikitext
8881 *<references />
8882 !! html/parsoid
8883 <ul><li data-parsoid='{}'><ol class="mw-references" typeof="mw:Extension/references" about="#mwt2" data-parsoid='{}' data-mw='{"name":"references","attrs":{}}'></ol></li></ul>
8884 !! end
8886 !! test
8887 1. Lists with start-of-line-transparent tokens before bullets: Comments
8888 !! wikitext
8889 *foo
8890 *<!--cmt-->bar
8891 <!--cmt-->*baz
8892 !! html
8893 <ul><li>foo</li>
8894 <li>bar</li>
8895 <li>baz</li></ul>
8897 !! end
8899 !! test
8900 2. Lists with start-of-line-transparent tokens before bullets: Template close
8901 !! wikitext
8902 *foo {{echo|bar
8903 }}*baz
8904 !! html
8905 <ul><li>foo bar</li>
8906 <li>baz</li></ul>
8908 !! end
8910 !! test
8911 List items are not parsed correctly following a <pre> block (bug 785)
8912 !! wikitext
8913 * <pre>foo</pre>
8914 * <pre>bar</pre>
8915 * zar
8916 !! html/php
8917 <ul><li> <pre>foo</pre></li>
8918 <li> <pre>bar</pre></li>
8919 <li> zar</li></ul>
8921 !! html/parsoid
8922 <ul><li> <pre data-parsoid='{"stx":"html"}'>foo</pre></li>
8923 <li> <pre data-parsoid='{"stx":"html"}'>bar</pre></li>
8924 <li> zar</li></ul>
8925 !! end
8927 !! test
8928 List items from template
8929 !! wikitext
8931 {{inner list}}
8932 * item 2
8934 * item 0
8935 {{inner list}}
8936 * item 2
8938 * item 0
8939 * notSOL{{inner list}}
8940 * item 2
8941 !! html
8942 <ul><li> item 1</li>
8943 <li> item 2</li></ul>
8944 <ul><li> item 0</li>
8945 <li> item 1</li>
8946 <li> item 2</li></ul>
8947 <ul><li> item 0</li>
8948 <li> notSOL</li>
8949 <li> item 1</li>
8950 <li> item 2</li></ul>
8952 !! end
8954 !! test
8955 List interrupted by empty line or heading
8956 !! wikitext
8957 * foo
8959 ** bar
8960 == A heading ==
8961 * Another list item
8962 !! html
8963 <ul><li> foo</li></ul>
8964 <ul><li><ul><li> bar</li></ul></li></ul>
8965 <h2><span class="mw-headline" id="A_heading">A heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: A heading">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
8966 <ul><li> Another list item</li></ul>
8968 !!end
8970 !!test
8971 Multiple list tags generated by templates
8972 !! wikitext
8973 {{echo|<li>}}a
8974 {{echo|<li>}}b
8975 {{echo|<li>}}c
8976 !! html
8977 <li>a
8978 <li>b
8979 <li>c</li>
8980 </li>
8981 </li>
8983 !! html+tidy
8984 <ul>
8985 <li>a</li>
8986 <li>b</li>
8987 <li>c</li>
8988 </ul>
8989 !!end
8991 !!test
8992 Single-comment whitespace lines dont break lists, and neither do multi-comment whitespace lines
8993 !! wikitext
8995 <!--This line will NOT split the list-->
8997  <!--This line will NOT split the list either-->
8999  <!--foo--> <!----> <!--This line NOT split the list either--> 
9001 !! html
9002 <ul><li>a</li>
9003 <li>b</li>
9004 <li>c</li>
9005 <li>d</li></ul>
9007 !!end
9009 !!test
9010 Replacing whitespace with tabs still doesn't break the list (gerrit 78327)
9011 !! wikitext
9013 <!--This line will NOT split the list-->        
9015         <!--This line will NOT split the list either-->         
9017         <!--foo--> <!---->      <!--This line NOT split the list
9018         either-->        
9020 !! html
9021 <ul><li>a</li>
9022 <li>b</li>
9023 <li>c</li>
9024 <li>d</li></ul>
9026 !!end
9028 !!test
9029 Test the li-hack
9030 (The PHP parser relies on Tidy for the hack)
9031 !!options
9032 parsoid=wt2html,wt2wt
9033 !! wikitext
9034 * foo
9035 * <li>li-hack
9036 * {{echo|<li>templated li-hack}}
9037 * <!--foo--> <li> unsupported li-hack with preceding comments
9039 <ul>
9040 <li><li>not a li-hack
9041 </li>
9042 </ul>
9043 !! html+tidy
9044 <ul>
9045 <li>foo</li>
9046 <li>li-hack</li>
9047 <li>templated li-hack</li>
9048 <li>unsupported li-hack with preceding comments</li>
9049 </ul>
9050 <ul>
9051 <li>not a li-hack</li>
9052 </ul>
9053 !!end
9055 !! test
9056 Parsoid: Make sure nested lists are serialized on their own line even if HTML contains no newlines
9057 !! options
9058 parsoid
9059 !! wikitext
9060 # foo
9061 ## bar
9062 * foo
9063 ** bar
9064 : foo
9065 :: bar
9066 !! html
9067 <ol>
9068 <li> foo<ol>
9069 <li> bar</li>
9070 </ol></li>
9071 </ol><ul>
9072 <li> foo<ul>
9073 <li> bar</li>
9074 </ul></li>
9075 </ul><dl>
9076 <dd> foo<dl>
9077 <dd> bar</dd>
9078 </dl></dd>
9079 </dl>
9080 !! end
9082 !! test
9083 Parsoid: Test of whitespace serialization with Templated bullets
9084 !! options
9085 parsoid
9086 !! wikitext
9087 * {{bullet}}
9088 !! html
9089 <ul>
9090 <li> </li><li about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"bullet","href":"./Template:Bullet"},"params":{},"i":0}}]}'> Bar</li>
9091 </ul>
9092 !! end
9094 # ------------------------------------------------------------------------
9095 # The next set of tests are about Parsoid's ability to handle badly nested
9096 # tags (parse, minimize scope of fixup, and roundtrip back)
9097 # ------------------------------------------------------------------------
9099 !! test
9100 Unbalanced closing block tags break a list
9101 (php parser relies on Tidy to fix up)
9102 !! wikitext
9103 <div>
9104 *a</div><div>
9105 *b</div>
9106 !! html+tidy
9107 <div>
9108 <ul>
9109 <li>a</li>
9110 </ul>
9111 </div>
9112 <div>
9113 <ul>
9114 <li>b</li>
9115 </ul>
9116 </div>
9117 !! end
9119 # Parsoid fails this test, but it might be tricky to support properly.
9120 # See bug 68395.
9121 !! test
9122 Unbalanced closing non-block tags don't break a list
9123 (php parser relies on Tidy to fix up)
9124 !! wikitext
9125 <span>
9126 *a</span><span>
9127 *b</span>
9128 !! html/php+tidy
9129 <ul>
9130 <li><span>a</span></li>
9131 <li><span>b</span></li>
9132 </ul>
9133 !! html/parsoid
9134 <span>
9135 <ul>
9136 <li>a<span></span>
9137 </li>
9138 <li>b
9139 </li>
9140 </ul>
9141 </span>
9142 !! end
9144 !! test
9145 Unclosed formatting tags that straddle lists are closed and reopened
9146 (php parser relies on Tidy to fix up)
9147 !! options
9148 parsoid=wt2html,wt2wt,html2html
9149 !! wikitext
9150 # <s> a
9151 # b </s>
9152 !! html/php+tidy
9153 <ol>
9154 <li><s>a</s></li>
9155 <li><s>b</s></li>
9156 </ol>
9157 !! html/parsoid
9158 <ol><li> <s> a</s></li>
9159 <li><s> b </s></li></ol>
9160 !! end
9162 # See bug 68395.
9163 !!test
9164 1. List embedded in a formatting tag
9165 !! wikitext
9166 <small>
9167 * foo
9168 </small>
9169 !! html/php+tidy
9170 <ul>
9171 <li><small>foo</small></li>
9172 </ul>
9173 !! html/parsoid
9174 <small>
9175 <ul>
9176 <li> foo</li>
9177 </ul>
9178 </small>
9179 !!end
9181 ## Ugly Parsoid output here
9182 ## Not sure what the right output is.
9183 !!test
9184 2. List embedded in a formatting tag
9185 !! wikitext
9186 <small>
9188 *b</small>
9189 !! html/php+tidy
9190 <ul>
9191 <li><small>a</small></li>
9192 <li><small>b</small></li>
9193 </ul>
9194 !! html/parsoid
9195 <small></small>
9196 <ul><small>
9197 <li>a</li>
9198 </small>
9199 <li><small>b</small></li>
9200 </ul>
9201 !!end
9203 # Ugly Parsoid and PHP parser output here
9204 # Not sure if we want to make this a test!
9206 ## !!test
9207 ## 3. Unclosed formatting tags in list elements
9208 ## !! wikitext
9209 ## *<small>a
9210 ## *<small>b
9211 ## !! html/php+tidy
9212 ## <ul>
9213 ## <li><small>a</small></li>
9214 ## <li><small><small>b</small></small></li>
9215 ## </ul>
9216 ## !! html/parsoid
9217 ## <ul>
9218 ## <li><small>a</small></li>
9219 ## <small>
9220 ## <li><small>b</small></li>
9221 ## </small></ul>
9222 ## !!end
9224 # This is a bug in the PHP parser + tidy combination.
9225 # (The </tr> tag gets parsed as text and html-escaped by PHP,
9226 # and then fostered out of the table by tidy.)
9227 # We believe the Parsoid output to be correct.
9228 !! test
9229 Table with missing opening <tr> tag
9230 !! options
9231 parsoid=wt2html,wt2wt
9232 !! wikitext
9233 <table>
9234 <td>foo</td>
9235 </tr>
9236 </table>
9237 !! html+tidy
9238 <table>
9239 <tr>
9240 <td>foo</td>
9241 </tr>
9242 </table>
9243 !! end
9246 ### Magic Words
9249 # Note that the current date is hard-coded as
9250 #   1970-01-01T00:02:03Z (a Thursday)
9251 # when running parser tests.  The timezone is also fixed to GMT, so
9252 # local date will be identical to current date.
9254 !! test
9255 Magic Word: {{CURRENTDAY}}
9256 !! wikitext
9257 {{CURRENTDAY}}
9258 !! html
9259 <p>1
9260 </p>
9261 !! end
9263 !! test
9264 Magic Word: {{CURRENTDAY2}}
9265 !! wikitext
9266 {{CURRENTDAY2}}
9267 !! html
9268 <p>01
9269 </p>
9270 !! end
9272 !! test
9273 Magic Word: {{CURRENTDAYNAME}}
9274 !! wikitext
9275 {{CURRENTDAYNAME}}
9276 !! html
9277 <p>Thursday
9278 </p>
9279 !! end
9281 !! test
9282 Magic Word: {{CURRENTDOW}}
9283 !! wikitext
9284 {{CURRENTDOW}}
9285 !! html
9286 <p>4
9287 </p>
9288 !! end
9290 !! test
9291 Magic Word: {{CURRENTMONTH}}
9292 !! wikitext
9293 {{CURRENTMONTH}}
9294 !! html
9295 <p>01
9296 </p>
9297 !! end
9299 !! test
9300 Magic Word: {{CURRENTMONTH1}}
9301 !! wikitext
9302 {{CURRENTMONTH1}}
9303 !! html
9304 <p>1
9305 </p>
9306 !! end
9308 !! test
9309 Magic Word: {{CURRENTMONTHABBREV}}
9310 !! wikitext
9311 {{CURRENTMONTHABBREV}}
9312 !! html
9313 <p>Jan
9314 </p>
9315 !! end
9317 !! test
9318 Magic Word: {{CURRENTMONTHNAME}}
9319 !! wikitext
9320 {{CURRENTMONTHNAME}}
9321 !! html
9322 <p>January
9323 </p>
9324 !! end
9326 !! test
9327 Magic Word: {{CURRENTMONTHNAMEGEN}}
9328 !! wikitext
9329 {{CURRENTMONTHNAMEGEN}}
9330 !! html
9331 <p>January
9332 </p>
9333 !! end
9335 !! test
9336 Magic Word: {{CURRENTTIME}}
9337 !! wikitext
9338 {{CURRENTTIME}}
9339 !! html
9340 <p>00:02
9341 </p>
9342 !! end
9344 !! test
9345 Magic Word: {{CURRENTHOUR}}
9346 !! wikitext
9347 {{CURRENTHOUR}}
9348 !! html
9349 <p>00
9350 </p>
9351 !! end
9353 !! test
9354 Magic Word: {{CURRENTWEEK}} (@bug 4594)
9355 !! wikitext
9356 {{CURRENTWEEK}}
9357 !! html
9358 <p>1
9359 </p>
9360 !! end
9362 !! test
9363 Magic Word: {{CURRENTYEAR}}
9364 !! wikitext
9365 {{CURRENTYEAR}}
9366 !! html
9367 <p>1970
9368 </p>
9369 !! end
9371 !! test
9372 Magic Word: {{CURRENTTIMESTAMP}}
9373 !! wikitext
9374 {{CURRENTTIMESTAMP}}
9375 !! html
9376 <p>19700101000203
9377 </p>
9378 !! end
9380 !! test
9381 Magic Words LOCAL (UTC)
9382 !! wikitext
9383 * {{LOCALMONTH}}
9384 * {{LOCALMONTH1}}
9385 * {{LOCALMONTHNAME}}
9386 * {{LOCALMONTHNAMEGEN}}
9387 * {{LOCALMONTHABBREV}}
9388 * {{LOCALDAY}}
9389 * {{LOCALDAY2}}
9390 * {{LOCALDAYNAME}}
9391 * {{LOCALYEAR}}
9392 * {{LOCALTIME}}
9393 * {{LOCALHOUR}}
9394 * {{LOCALWEEK}}
9395 * {{LOCALDOW}}
9396 * {{LOCALTIMESTAMP}}
9397 !! html
9398 <ul><li> 01</li>
9399 <li> 1</li>
9400 <li> January</li>
9401 <li> January</li>
9402 <li> Jan</li>
9403 <li> 1</li>
9404 <li> 01</li>
9405 <li> Thursday</li>
9406 <li> 1970</li>
9407 <li> 00:02</li>
9408 <li> 00</li>
9409 <li> 1</li>
9410 <li> 4</li>
9411 <li> 19700101000203</li></ul>
9413 !! end
9415 !! test
9416 Magic Word: {{FULLPAGENAME}}
9417 !! options
9418 title=[[User:Ævar Arnfjörð Bjarmason]]
9419 !! wikitext
9420 {{FULLPAGENAME}}
9421 !! html
9422 <p>User:Ævar Arnfjörð Bjarmason
9423 </p>
9424 !! end
9426 !! test
9427 Magic Word: {{FULLPAGENAMEE}}
9428 !! options
9429 title=[[User:Ævar Arnfjörð Bjarmason]]
9430 !! wikitext
9431 {{FULLPAGENAMEE}}
9432 !! html
9433 <p>User:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
9434 </p>
9435 !! end
9437 !! test
9438 Magic Word: {{TALKSPACE}}
9439 !! options
9440 title=[[User:Ævar Arnfjörð Bjarmason]]
9441 !! wikitext
9442 {{TALKSPACE}}
9443 !! html
9444 <p>User talk
9445 </p>
9446 !! end
9448 !! test
9449 Magic Word: {{TALKSPACE}}, same namespace
9450 !! options
9451 title=[[User talk:Ævar Arnfjörð Bjarmason]]
9452 !! wikitext
9453 {{TALKSPACE}}
9454 !! html
9455 <p>User talk
9456 </p>
9457 !! end
9459 !! test
9460 Magic Word: {{TALKSPACE}}, main namespace
9461 !! options
9462 title=[[Parser Test]]
9463 !! wikitext
9464 {{TALKSPACE}}
9465 !! html
9466 <p>Talk
9467 </p>
9468 !! end
9470 !! test
9471 Magic Word: {{TALKSPACEE}}
9472 !! options
9473 title=[[User:Ævar Arnfjörð Bjarmason]]
9474 !! wikitext
9475 {{TALKSPACEE}}
9476 !! html
9477 <p>User_talk
9478 </p>
9479 !! end
9481 !! test
9482 Magic Word: {{SUBJECTSPACE}}
9483 !! options
9484 title=[[User talk:Ævar Arnfjörð Bjarmason]]
9485 !! wikitext
9486 {{SUBJECTSPACE}}
9487 !! html
9488 <p>User
9489 </p>
9490 !! end
9492 !! test
9493 Magic Word: {{SUBJECTSPACE}}, same namespace
9494 !! options
9495 title=[[User:Ævar Arnfjörð Bjarmason]]
9496 !! wikitext
9497 {{SUBJECTSPACE}}
9498 !! html
9499 <p>User
9500 </p>
9501 !! end
9503 !! test
9504 Magic Word: {{SUBJECTSPACE}}, main namespace
9505 !! options
9506 title=[[Parser Test]]
9507 !! wikitext
9508 {{SUBJECTSPACE}}
9509 !! html
9511 !! end
9513 !! test
9514 Magic Word: {{SUBJECTSPACEE}}
9515 !! options
9516 title=[[User talk:Ævar Arnfjörð Bjarmason]]
9517 !! wikitext
9518 {{SUBJECTSPACEE}}
9519 !! html
9520 <p>User
9521 </p>
9522 !! end
9524 !! test
9525 Magic Word: {{NAMESPACE}}
9526 !! options
9527 title=[[User:Ævar Arnfjörð Bjarmason]]
9528 !! wikitext
9529 {{NAMESPACE}}
9530 !! html
9531 <p>User
9532 </p>
9533 !! end
9535 !! test
9536 Magic Word: {{NAMESPACEE}}
9537 !! options
9538 title=[[User:Ævar Arnfjörð Bjarmason]]
9539 !! wikitext
9540 {{NAMESPACEE}}
9541 !! html
9542 <p>User
9543 </p>
9544 !! end
9546 !! test
9547 Magic Word: {{NAMESPACENUMBER}}
9548 !! options
9549 title=[[User:Ævar Arnfjörð Bjarmason]]
9550 !! wikitext
9551 {{NAMESPACENUMBER}}
9552 !! html
9553 <p>2
9554 </p>
9555 !! end
9557 !! test
9558 Magic Word: {{SUBPAGENAME}}
9559 !! options
9560 title=[[Ævar Arnfjörð Bjarmason/sub ö]] subpage
9561 !! wikitext
9562 {{SUBPAGENAME}}
9563 !! html
9564 <p>sub ö
9565 </p>
9566 !! end
9568 !! test
9569 Magic Word: {{SUBPAGENAMEE}}
9570 !! options
9571 title=[[Ævar Arnfjörð Bjarmason/sub ö]] subpage
9572 !! wikitext
9573 {{SUBPAGENAMEE}}
9574 !! html
9575 <p>sub_%C3%B6
9576 </p>
9577 !! end
9579 !! test
9580 Magic Word: {{ROOTPAGENAME}}
9581 !! options
9582 title=[[Ævar Arnfjörð Bjarmason/sub/sub2]] subpage
9583 !! wikitext
9584 {{ROOTPAGENAME}}
9585 !! html
9586 <p>Ævar Arnfjörð Bjarmason
9587 </p>
9588 !! end
9590 !! test
9591 Magic Word: {{ROOTPAGENAMEE}}
9592 !! options
9593 title=[[Ævar Arnfjörð Bjarmason/sub/sub2]] subpage
9594 !! wikitext
9595 {{ROOTPAGENAMEE}}
9596 !! html
9597 <p>%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
9598 </p>
9599 !! end
9601 !! test
9602 Magic Word: {{BASEPAGENAME}}
9603 !! options
9604 title=[[Ævar Arnfjörð Bjarmason/sub]] subpage
9605 !! wikitext
9606 {{BASEPAGENAME}}
9607 !! html
9608 <p>Ævar Arnfjörð Bjarmason
9609 </p>
9610 !! end
9612 !! test
9613 Magic Word: {{BASEPAGENAMEE}}
9614 !! options
9615 title=[[Ævar Arnfjörð Bjarmason/sub]] subpage
9616 !! wikitext
9617 {{BASEPAGENAMEE}}
9618 !! html
9619 <p>%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
9620 </p>
9621 !! end
9623 !! test
9624 Magic Word: {{TALKPAGENAME}}
9625 !! options
9626 title=[[User:Ævar Arnfjörð Bjarmason]]
9627 !! wikitext
9628 {{TALKPAGENAME}}
9629 !! html
9630 <p>User talk:Ævar Arnfjörð Bjarmason
9631 </p>
9632 !! end
9634 !! test
9635 Magic Word: {{TALKPAGENAMEE}}
9636 !! options
9637 title=[[User:Ævar Arnfjörð Bjarmason]]
9638 !! wikitext
9639 {{TALKPAGENAMEE}}
9640 !! html
9641 <p>User_talk:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
9642 </p>
9643 !! end
9645 !! test
9646 Magic Word: {{SUBJECTPAGENAME}}
9647 !! options
9648 title=[[User talk:Ævar Arnfjörð Bjarmason]]
9649 !! wikitext
9650 {{SUBJECTPAGENAME}}
9651 !! html
9652 <p>User:Ævar Arnfjörð Bjarmason
9653 </p>
9654 !! end
9656 !! test
9657 Magic Word: {{SUBJECTPAGENAMEE}}
9658 !! options
9659 title=[[User talk:Ævar Arnfjörð Bjarmason]]
9660 !! wikitext
9661 {{SUBJECTPAGENAMEE}}
9662 !! html
9663 <p>User:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
9664 </p>
9665 !! end
9667 !! test
9668 Magic Word: {{NUMBEROFFILES}}
9669 !! wikitext
9670 {{NUMBEROFFILES}}
9671 !! html
9672 <p>6
9673 </p>
9674 !! end
9676 !! test
9677 Magic Word: {{PAGENAME}}
9678 !! options
9679 title=[[User:Ævar Arnfjörð Bjarmason]]
9680 !! wikitext
9681 {{PAGENAME}}
9682 !! html
9683 <p>Ævar Arnfjörð Bjarmason
9684 </p>
9685 !! end
9687 !! test
9688 Magic Word: {{PAGENAME}} with metacharacters
9689 !! options
9690 title=[['foo & bar = baz']]
9691 !! wikitext
9692 ''{{PAGENAME}}''
9693 !! html/php
9694 <p><i>&#39;foo &#38; bar &#61; baz&#39;</i>
9695 </p>
9696 !! html+tidy
9697 <p><i>'foo &amp; bar = baz'</i></p>
9698 !! end
9700 !! test
9701 Magic Word: {{PAGENAME}} with metacharacters (bug 26781)
9702 !! options
9703 title=[[*RFC 1234 http://example.com/]]
9704 !! wikitext
9705 {{PAGENAME}}
9706 !! html/php
9707 <p>&#42;RFC&#32;1234 http&#58;//example.com/
9708 </p>
9709 !! html+tidy
9710 <p>*RFC 1234 http://example.com/</p>
9711 !! end
9713 !! test
9714 Magic Word: {{PAGENAMEE}}
9715 !! options
9716 title=[[User:Ævar Arnfjörð Bjarmason]]
9717 !! wikitext
9718 {{PAGENAMEE}}
9719 !! html
9720 <p>%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
9721 </p>
9722 !! end
9724 !! test
9725 Magic Word: {{PAGENAMEE}} with metacharacters (bug 26781)
9726 !! options
9727 title=[[*RFC 1234 http://example.com/]]
9728 !! wikitext
9729 {{PAGENAMEE}}
9730 !! html/php
9731 <p>&#42;RFC_1234_http&#58;//example.com/
9732 </p>
9733 !! html+tidy
9734 <p>*RFC_1234_http://example.com/</p>
9735 !! end
9737 !! test
9738 Magic Word: {{REVISIONID}}
9739 !! wikitext
9740 {{REVISIONID}}
9741 !! html
9742 <p>1337
9743 </p>
9744 !! end
9746 !! test
9747 Magic Word: {{SCRIPTPATH}}
9748 !! wikitext
9749 {{SCRIPTPATH}}
9750 !! html
9751 <p>/
9752 </p>
9753 !! end
9755 !! test
9756 Magic Word: {{STYLEPATH}}
9757 !! wikitext
9758 {{STYLEPATH}}
9759 !! html
9760 <p>/skins
9761 </p>
9762 !! end
9764 !! test
9765 Magic Word: {{SERVER}}
9766 !! wikitext
9767 {{SERVER}}
9768 !! html
9769 <p><a rel="nofollow" class="external free" href="http://example.org">http://example.org</a>
9770 </p>
9771 !! end
9773 !! test
9774 Magic Word: {{SERVERNAME}}
9775 !! wikitext
9776 {{SERVERNAME}}
9777 !! html
9778 <p>example.org
9779 </p>
9780 !! end
9782 !! test
9783 Magic Word: {{SITENAME}}
9784 !! wikitext
9785 {{SITENAME}}
9786 !! html
9787 <p>MediaWiki
9788 </p>
9789 !! end
9791 !! test
9792 Case-sensitive magic words, when cased differently, should just be template transclusions
9793 !! wikitext
9794 {{CurrentMonth}}
9795 {{currentday}}
9796 {{cURreNTweEK}}
9797 {{currentHour}}
9798 !! html
9799 <p><a href="/index.php?title=Template:CurrentMonth&amp;action=edit&amp;redlink=1" class="new" title="Template:CurrentMonth (page does not exist)">Template:CurrentMonth</a>
9800 <a href="/index.php?title=Template:Currentday&amp;action=edit&amp;redlink=1" class="new" title="Template:Currentday (page does not exist)">Template:Currentday</a>
9801 <a href="/index.php?title=Template:CURreNTweEK&amp;action=edit&amp;redlink=1" class="new" title="Template:CURreNTweEK (page does not exist)">Template:CURreNTweEK</a>
9802 <a href="/index.php?title=Template:CurrentHour&amp;action=edit&amp;redlink=1" class="new" title="Template:CurrentHour (page does not exist)">Template:CurrentHour</a>
9803 </p>
9804 !! end
9806 !! test
9807 Case-insensitive magic words should still work with weird casing.
9808 !! wikitext
9809 {{sErVeRNaMe}}
9810 {{LCFirst:AOEU}}
9811 {{ucFIRST:aoeu}}
9812 {{SERver}}
9813 !! html
9814 <p>example.org
9815 aOEU
9816 Aoeu
9817 <a rel="nofollow" class="external free" href="http://example.org">http://example.org</a>
9818 </p>
9819 !! end
9821 # From plwiki:PLOS_ONE
9822 !! test
9823 Parsoid: Page property magic word with magic word contents
9824 !! wikitext
9825 {{DISPLAYTITLE:''{{PAGENAME}}''}}
9826 !! html/parsoid
9827 <meta property="mw:PageProp/displaytitle" content="Main Page" about="#mwt2" typeof="mw:ExpandedAttrs" data-mw='{"attribs":[[{"txt":"content"},{"html":"&lt;i data-parsoid=\"{&amp;quot;dsr&amp;quot;:[15,31,2,2]}\">&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=\"{&amp;quot;pi&amp;quot;:[[]],&amp;quot;dsr&amp;quot;:[17,29,null,null]}\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;PAGENAME&amp;quot;,&amp;quot;function&amp;quot;:&amp;quot;pagename&amp;quot;},&amp;quot;params&amp;quot;:{},&amp;quot;i&amp;quot;:0}}]}\">Main Page&lt;/span>&lt;/i>"}]]}'/>
9828 !! end
9830 !! test
9831 Parsoid: Template-generated DISPLAYTITLE
9832 !! wikitext
9833 {{{{echo|DISPLAYTITLE}}:Foo}}
9834 !! html/parsoid
9835 <meta property="mw:PageProp/displaytitle" content="Foo" about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"dsr":[0,29,null,null],"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"{{echo|DISPLAYTITLE}}:Foo"},"params":{},"i":0}}]}'/>
9836 !! end
9838 !! test
9839 Namespace 1 {{ns:1}}
9840 !! wikitext
9841 {{ns:1}}
9842 !! html
9843 <p>Talk
9844 </p>
9845 !! end
9847 !! test
9848 Namespace 1 {{ns:01}}
9849 !! wikitext
9850 {{ns:01}}
9851 !! html
9852 <p>Talk
9853 </p>
9854 !! end
9856 !! test
9857 Namespace 0 {{ns:0}} (bug 4783)
9858 !! wikitext
9859 {{ns:0}}
9860 !! html
9862 !! end
9864 !! test
9865 Namespace 0 {{ns:00}} (bug 4783)
9866 !! wikitext
9867 {{ns:00}}
9868 !! html
9870 !! end
9872 !! test
9873 Namespace -1 {{ns:-1}}
9874 !! wikitext
9875 {{ns:-1}}
9876 !! html
9877 <p>Special
9878 </p>
9879 !! end
9881 !! test
9882 Namespace User {{ns:User}}
9883 !! wikitext
9884 {{ns:User}}
9885 !! html
9886 <p>User
9887 </p>
9888 !! end
9890 !! test
9891 Namespace User talk {{ns:User_talk}}
9892 !! wikitext
9893 {{ns:User_talk}}
9894 !! html
9895 <p>User talk
9896 </p>
9897 !! end
9899 !! test
9900 Namespace User talk {{ns:uSeR tAlK}}
9901 !! wikitext
9902 {{ns:uSeR tAlK}}
9903 !! html
9904 <p>User talk
9905 </p>
9906 !! end
9908 !! test
9909 Namespace File {{ns:File}}
9910 !! wikitext
9911 {{ns:File}}
9912 !! html
9913 <p>File
9914 </p>
9915 !! end
9917 !! test
9918 Namespace File {{ns:Image}}
9919 !! wikitext
9920 {{ns:Image}}
9921 !! html
9922 <p>File
9923 </p>
9924 !! end
9926 !! test
9927 Namespace (lang=de) Benutzer {{ns:User}}
9928 !! options
9929 language=de
9930 !! wikitext
9931 {{ns:User}}
9932 !! html
9933 <p>Benutzer
9934 </p>
9935 !! end
9937 !! test
9938 Namespace (lang=de) Benutzer Diskussion {{ns:3}}
9939 !! options
9940 language=de
9941 !! wikitext
9942 {{ns:3}}
9943 !! html
9944 <p>Benutzer Diskussion
9945 </p>
9946 !! end
9949 !! test
9950 Urlencode
9951 !! wikitext
9952 {{urlencode:hi world?!}}
9953 {{urlencode:hi world?!|WIKI}}
9954 {{urlencode:hi world?!|PATH}}
9955 {{urlencode:hi world?!|QUERY}}
9956 !! html
9957 <p>hi+world%3F%21
9958 hi_world%3F!
9959 hi%20world%3F%21
9960 hi+world%3F%21
9961 </p>
9962 !! end
9964 !! test
9965 Magic Word: prioritize type info over data-parsoid
9966 !! options
9967 parsoid=html2wt
9968 !! html/parsoid
9969 <meta property="mw:PageProp/forcetoc" data-parsoid='{"magicSrc":"__NOTOC__"}'/>
9970 !! wikitext
9971 __FORCETOC__
9972 !! end
9974 !! test
9975 Magic Word: serialize on separate line (parsoid)
9976 !! options
9977 parsoid=wt2wt,html2wt
9978 !! wikitext
9980 __NOTOC__
9982 !! html/parsoid
9983 foo<meta property="mw:PageProp/notoc"/>bar
9984 !! end
9986 !! test
9987 Magic Word: rt non-english wikis
9988 !! options
9989 parsoid=wt2wt
9990 language=de
9991 !! wikitext
9992 __NOEDITSECTION__
9993 !! html/parsoid
9994 <meta property="mw:PageProp/noeditsection" data-parsoid='{"magicSrc":"__NOEDITSECTION__"}'/>
9995 !! end
9997 !!test
9998 __proto__ is treated as normal wikitext (T105997)
9999 !!wikitext
10000 __proto__
10001 !!html
10002 <p>__proto__
10003 </p>
10004 !!end
10007 ### Magic links
10009 !! test
10010 Magic links: internal link to RFC (bug 479)
10011 !! wikitext
10012 [[RFC 123]]
10013 !! html/php
10014 <p><a href="/index.php?title=RFC_123&amp;action=edit&amp;redlink=1" class="new" title="RFC 123 (page does not exist)">RFC 123</a>
10015 </p>
10016 !! html/parsoid
10017 <p><a rel="mw:WikiLink" href="./RFC_123" title="RFC 123">RFC 123</a></p>
10018 !! end
10020 !! test
10021 Magic links: RFC (bug 479)
10022 !! wikitext
10023 RFC 822
10024 !! html/php
10025 <p><a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc822">RFC 822</a>
10026 </p>
10027 !! html/parsoid
10028 <p><a href="//tools.ietf.org/html/rfc822" rel="mw:ExtLink">RFC 822</a></p>
10029 !! end
10031 !! test
10032 Magic links: RFC (bug 65278)
10033 !! wikitext
10034 This is RFC 822 but thisRFC 822 is not RFC 822linked.
10035 !! html/php
10036 <p>This is <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc822">RFC 822</a> but thisRFC 822 is not RFC 822linked.
10037 </p>
10038 !! html/parsoid
10039 <p>This is <a href="//tools.ietf.org/html/rfc822" rel="mw:ExtLink">RFC 822</a> but thisRFC 822 is not RFC 822linked.</p>
10040 !! end
10042 !! test
10043 Magic links: RFC (w/ non-newline whitespace, bug 28950/29025)
10044 !! wikitext
10045 RFC &nbsp;&#160;&#0160;&#xA0;&#Xa0; 822
10048 !! html/php
10049 <p><a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc822">RFC 822</a>
10052 </p>
10053 !! html/parsoid
10054 <p><a href="//tools.ietf.org/html/rfc822" rel="mw:ExtLink">RFC <span typeof="mw:Entity" data-parsoid='{"src":"&amp;nbsp;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#0160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#xA0;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#Xa0;","srcContent":" "}'> </span> 822</a>
10056 822</p>
10057 !! end
10059 !! test
10060 Magic links: ISBN (bug 1937)
10061 !! wikitext
10062 ISBN 0-306-40615-2
10063 !! html/php
10064 <p><a href="/wiki/Special:BookSources/0306406152" class="internal mw-magiclink-isbn">ISBN 0-306-40615-2</a>
10065 </p>
10066 !! html/parsoid
10067 <p><a href="./Special:BookSources/0306406152" rel="mw:WikiLink">ISBN 0-306-40615-2</a></p>
10068 !! end
10070 !! test
10071 Magic links: ISBN (bug 65278)
10072 !! wikitext
10073 This is ISBN 978-0-316-09811-3 but thisISBN 978-0-316-09811-3 is not ISBN 978-0-316-09811-3linked.
10074 !! html/php
10075 <p>This is <a href="/wiki/Special:BookSources/9780316098113" class="internal mw-magiclink-isbn">ISBN 978-0-316-09811-3</a> but thisISBN 978-0-316-09811-3 is not ISBN 978-0-316-09811-3linked.
10076 </p>
10077 !! html/parsoid
10078 <p>This is <a href="./Special:BookSources/9780316098113" rel="mw:WikiLink">ISBN 978-0-316-09811-3</a> but thisISBN 978-0-316-09811-3 is not ISBN 978-0-316-09811-3linked.</p>
10079 !! end
10081 !! test
10082 Magic links: ISBN (w/ non-newline whitespace, bug 28950/29025)
10083 !! wikitext
10084 ISBN &nbsp;&#160;&#0160;&#xA0;&#Xa0; 978&nbsp;0&#160;316&#0160;09811&#xA0;3
10085 ISBN
10086 9780316098113
10087 ISBN 978
10088 0316098113
10089 !! html/php
10090 <p><a href="/wiki/Special:BookSources/9780316098113" class="internal mw-magiclink-isbn">ISBN 978 0 316 09811 3</a>
10091 ISBN
10092 9780316098113
10093 ISBN 978
10094 0316098113
10095 </p>
10096 !! html/parsoid
10097 <p><a href="./Special:BookSources/9780316098113" rel="mw:WikiLink">ISBN <span typeof="mw:Entity" data-parsoid='{"src":"&amp;nbsp;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#0160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#xA0;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#Xa0;","srcContent":" "}'> </span> 978<span typeof="mw:Entity" data-parsoid='{"src":"&amp;nbsp;","srcContent":" "}'> </span>0<span typeof="mw:Entity" data-parsoid='{"src":"&amp;#160;","srcContent":" "}'> </span>316<span typeof="mw:Entity" data-parsoid='{"src":"&amp;#0160;","srcContent":" "}'> </span>09811<span typeof="mw:Entity" data-parsoid='{"src":"&amp;#xA0;","srcContent":" "}'> </span>3</a>
10098 ISBN
10099 9780316098113
10100 ISBN 978
10101 0316098113</p>
10102 !! end
10104 !! test
10105 Magic links: PMID incorrectly converts space to underscore
10106 !! wikitext
10107 PMID 1234
10108 !! html/php
10109 <p><a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a>
10110 </p>
10111 !! html/parsoid
10112 <p><a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink">PMID 1234</a></p>
10113 !! end
10115 !! test
10116 Magic links: PMID (bug 65278)
10117 !! wikitext
10118 This is PMID 1234 but thisPMID 1234 is not PMID 1234linked.
10119 !! html/php
10120 <p>This is <a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a> but thisPMID 1234 is not PMID 1234linked.
10121 </p>
10122 !! html/parsoid
10123 <p>This is <a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink">PMID 1234</a> but thisPMID 1234 is not PMID 1234linked.</p>
10124 !! end
10126 !! test
10127 Magic links: PMID (w/ non-newline whitespace, bug 28950/29025)
10128 !! wikitext
10129 PMID &nbsp;&#160;&#0160;&#xA0;&#Xa0; 1234
10130 PMID
10131 1234
10132 !! html/php
10133 <p><a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a>
10134 PMID
10135 1234
10136 </p>
10137 !! html/parsoid
10138 <p><a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink">PMID <span typeof="mw:Entity" data-parsoid='{"src":"&amp;nbsp;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#0160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#xA0;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#Xa0;","srcContent":" "}'> </span> 1234</a>
10139 PMID
10140 1234</p>
10141 !! end
10143 # <nowiki> nodes shouldn't be inserted during html2wt by Parsoid,
10144 # since these are ExtLinkText, not MagicLinkText
10145 !! test
10146 Magic links: use appropriate serialization for "almost" magic links.
10147 !! wikitext
10148 X[[Special:BookSources/0978739256|foo]]
10150 X[//tools.ietf.org/html/rfc1234 foo]
10151 !! html/php
10152 <p>X<a href="/wiki/Special:BookSources/0978739256" title="Special:BookSources/0978739256">foo</a>
10153 </p><p>X<a rel="nofollow" class="external text" href="//tools.ietf.org/html/rfc1234">foo</a>
10154 </p>
10155 !! html/parsoid
10156 <p>X<a rel="mw:WikiLink" href="./Special:BookSources/0978739256" title="Special:BookSources/0978739256">foo</a></p>
10157 <p>X<a rel="mw:ExtLink" href="//tools.ietf.org/html/rfc1234">foo</a></p>
10158 !! end
10161 ### Templates
10162 ####
10164 !! test
10165 Nonexistent template
10166 !! wikitext
10167 {{thistemplatedoesnotexist}}
10168 !! html
10169 <p><a href="/index.php?title=Template:Thistemplatedoesnotexist&amp;action=edit&amp;redlink=1" class="new" title="Template:Thistemplatedoesnotexist (page does not exist)">Template:Thistemplatedoesnotexist</a>
10170 </p>
10171 !! end
10173 !! test
10174 Template with invalid target containing tags
10175 !! wikitext
10176 {{a<b>b</b>|{{echo|foo}}|{{echo|a}}={{echo|b}}|a = b}}
10177 !! html
10178 <p>{{a<b>b</b>|foo|a=b|a = b}}
10179 </p>
10180 !! end
10182 !! test
10183 Template with invalid target containing unclosed tag
10184 !! wikitext
10185 {{a<b>|{{echo|foo}}|{{echo|a}}={{echo|b}}|a = b}}
10186 !! html
10187 <p>{{a<b>|foo|a=b|a = b}}</b>
10188 </p>
10189 !! end
10191 !! test
10192 Template with invalid target containing wikilink
10193 !! wikitext
10194 {{[[Main Page]]}}
10195 !! html/php
10196 <p>{{<a href="/wiki/Main_Page" title="Main Page">Main Page</a>}}
10197 </p>
10198 !! html/parsoid
10199 <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>
10200 !! end
10202 !! test
10203 Template with just whitespace in it, bug #68421
10204 !! wikitext
10205 {{echo|{{ }}}}
10206 !! html/parsoid
10207 <p><span typeof="mw:Transclusion mw:Nowiki" about="#mwt1" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{ }}"}},"i":0}}]}'>{{ }}</span></p>
10208 !! end
10210 !! article
10211 Template:test
10212 !! text
10213 This is a test template
10214 !! endarticle
10216 !! test
10217 Simple template
10218 !! wikitext
10219 {{test}}
10220 !! html
10221 <p>This is a test template
10222 </p>
10223 !! end
10225 !! test
10226 Template with explicit namespace
10227 !! wikitext
10228 {{Template:test}}
10229 !! html
10230 <p>This is a test template
10231 </p>
10232 !! end
10235 !! article
10236 Template:paramtest
10237 !! text
10238 This is a test template with parameter {{{param}}}
10239 !! endarticle
10241 !! test
10242 Template parameter
10243 !! wikitext
10244 {{paramtest|param=foo}}
10245 !! html
10246 <p>This is a test template with parameter foo
10247 </p>
10248 !! end
10250 !! article
10251 Template:paramtestnum
10252 !! text
10253 [[{{{1}}}|{{{2}}}]]
10254 !! endarticle
10256 !! test
10257 Template unnamed parameter
10258 !! wikitext
10259 {{paramtestnum|Main Page|the main page}}
10260 !! html
10261 <p><a href="/wiki/Main_Page" title="Main Page">the main page</a>
10262 </p>
10263 !! end
10265 !! article
10266 Template:templatesimple
10267 !! text
10268 (test)
10269 !! endarticle
10271 !! article
10272 Template:templateredirect
10273 !! text
10274 #redirect [[Template:templatesimple]]
10275 !! endarticle
10277 !! article
10278 Template:templateasargtestnum
10279 !! text
10280 {{{{{1}}}}}
10281 !! endarticle
10283 !! article
10284 Template:templateasargtest
10285 !! text
10286 {{template{{{templ}}}}}
10287 !! endarticle
10289 !! article
10290 Template:templateasargtest2
10291 !! text
10292 {{{{{templ}}}}}
10293 !! endarticle
10295 !! test
10296 Template with template name as unnamed argument
10297 !! wikitext
10298 {{templateasargtestnum|templatesimple}}
10299 !! html
10300 <p>(test)
10301 </p>
10302 !! end
10304 !! test
10305 Template with template name as argument
10306 !! wikitext
10307 {{templateasargtest|templ=simple}}
10308 !! html
10309 <p>(test)
10310 </p>
10311 !! end
10313 !! test
10314 Template with template name as argument (2)
10315 !! wikitext
10316 {{templateasargtest2|templ=templatesimple}}
10317 !! html
10318 <p>(test)
10319 </p>
10320 !! end
10322 !! article
10323 Template:templateasargtestdefault
10324 !! text
10325 {{{{{templ|templatesimple}}}}}
10326 !! endarticle
10328 !! article
10329 Template:templa
10330 !! text
10331 '''templ'''
10332 !! endarticle
10334 !! test
10335 Template with default value
10336 !! wikitext
10337 {{templateasargtestdefault}}
10338 !! html
10339 <p>(test)
10340 </p>
10341 !! end
10343 !! test
10344 Template with default value (value set)
10345 !! wikitext
10346 {{templateasargtestdefault|templ=templa}}
10347 !! html
10348 <p><b>templ</b>
10349 </p>
10350 !! end
10352 !! test
10353 Template redirect
10354 !! wikitext
10355 {{templateredirect}}
10356 !! html/php
10357 <p>(test)
10358 </p>
10359 !! html/parsoid
10360 <link rel="mw:PageProp/redirect" href="./Template:Templatesimple" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"templateredirect","href":"./Template:Templateredirect"},"params":{},"i":0}}]}'/>
10361 !! end
10363 !! test
10364 Template with argument in separate line
10365 !! wikitext
10366 {{ templateasargtest  |
10367  templ = simple }}
10368 !! html
10369 <p>(test)
10370 </p>
10371 !! end
10373 !! test
10374 Template with complex template as argument
10375 !! wikitext
10376 {{paramtest|
10377   param ={{ templateasargtest  |
10378  templ = simple }}}}
10379 !! html
10380 <p>This is a test template with parameter (test)
10381 </p>
10382 !! end
10384 !! test
10385 Template with thumb image (with link in description)
10386 !! wikitext
10387 {{paramtest|param =[[Image:noimage.png|thumb|[[no link|link]] [[no link|caption]]]]}}
10388 !! html/php
10389 This is a test template with parameter <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Noimage.png" class="new" title="File:Noimage.png">File:Noimage.png</a>  <div class="thumbcaption"><a href="/index.php?title=No_link&amp;action=edit&amp;redlink=1" class="new" title="No link (page does not exist)">link</a> <a href="/index.php?title=No_link&amp;action=edit&amp;redlink=1" class="new" title="No link (page does not exist)">caption</a></div></div></div>
10391 !! html+tidy
10392 <p>This is a test template with parameter</p>
10393 <div class="thumb tright">
10394 <div class="thumbinner" style="width:182px;"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Noimage.png" class="new" title="File:Noimage.png">File:Noimage.png</a>
10395 <div class="thumbcaption"><a href="/index.php?title=No_link&amp;action=edit&amp;redlink=1" class="new" title="No link (page does not exist)">link</a> <a href="/index.php?title=No_link&amp;action=edit&amp;redlink=1" class="new" title="No link (page does not exist)">caption</a></div>
10396 </div>
10397 </div>
10398 !! html/parsoid
10399 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"paramtest","href":"./Template:Paramtest"},"params":{"param":{"wt":"[[Image:noimage.png|thumb|[[no link|link]] [[no link|caption]]]]"}},"i":0}}]}'>This is a test template with parameter </p><figure class="mw-default-size" typeof="mw:Error mw:Image/Thumb" about="#mwt1" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}]}'><a href="./File:Noimage.png" ><img resource="./File:Noimage.png" src="./Special:FilePath/Noimage.png" height="220" width="220"/></a><figcaption><a rel="mw:WikiLink" href="./No_link" title="No link">link</a> <a rel="mw:WikiLink" href="./No_link" title="No link">caption</a></figcaption></figure>
10400 !! end
10402 !! article
10403 Template:complextemplate
10404 !! text
10405 {{{1}}} {{paramtest|
10406   param ={{{param}}}}}
10407 !! endarticle
10409 !! test
10410 Template with complex arguments
10411 !! wikitext
10412 {{complextemplate|
10413   param ={{ templateasargtest  |
10414  templ = simple }}|[[Template:complextemplate|link]]}}
10415 !! html
10416 <p><a href="/wiki/Template:Complextemplate" title="Template:Complextemplate">link</a> This is a test template with parameter (test)
10417 </p>
10418 !! end
10420 !! test
10421 BUG 553: link with two variables in a piped link
10422 !! wikitext
10424 |[[{{{1}}}|{{{2}}}]]
10426 !! html/php
10427 <table>
10428 <tr>
10429 <td>[[{{{1}}}|{{{2}}}]]
10430 </td></tr></table>
10432 !! html/parsoid
10433 <table>
10434 <tbody><tr><td>[[<span about="#mwt5" typeof="mw:Param" data-parsoid='{"src":"{{{1}}}"}'>{{{1}}}</span>|<span about="#mwt2" typeof="mw:Param" data-parsoid='{"src":"{{{2}}}"}'>{{{2}}}</span>]]</td></tr>
10435 !! end
10437 # See: T2553
10438 !! test
10439 Abort table cell attribute parsing on wikilink
10440 !! wikitext
10442 | testing [[one|two]] | three || four
10443 | testing one two | three || four
10445 !! html/php
10446 <table>
10447 <tr>
10448 <td> testing <a href="/index.php?title=One&amp;action=edit&amp;redlink=1" class="new" title="One (page does not exist)">two</a> | three </td>
10449 <td> four
10450 </td>
10451 <td> three </td>
10452 <td> four
10453 </td></tr></table>
10455 !! html/parsoid
10456 <table>
10457 <tbody><tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td data-parsoid='{"autoInsertedEnd":true}'> testing <a rel="mw:WikiLink" href="./One" title="One" data-parsoid='{"stx":"piped","a":{"href":"./One"},"sa":{"href":"one"}}'>two</a> | three </td><td data-parsoid='{"stx_v":"row","autoInsertedEnd":true}'> four</td>
10458 <td data-parsoid='{"a":{"testing":null,"one":null,"two":null},"sa":{"testing":"","one":"","two":""},"autoInsertedEnd":true}'> three </td><td data-parsoid='{"stx_v":"row","autoInsertedEnd":true}'> four</td></tr>
10459 </tbody></table>
10460 !! end
10462 !! test
10463 Don't abort table cell attribute parsing if wikilink is found in template arg
10464 !! wikitext
10466 | Test {{#tag:ref|One two "[[three]]" four}}
10468 !! html/parsoid
10469 <table>
10470 <tbody><tr><td> Test <ref about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"#tag:ref","function":"#tag"},"params":{"1":{"wt":"One two \"[[three]]\" four"}},"i":0}}]}'>One two "<a rel="mw:WikiLink" href="./Three" title="Three">three</a>" four</ref></td></tr>
10471 </tbody></table>
10472 !! end
10474 !! test
10475 Magic variable as template parameter
10476 !! wikitext
10477 {{paramtest|param={{SITENAME}}}}
10478 !! html
10479 <p>This is a test template with parameter MediaWiki
10480 </p>
10481 !! end
10483 !! article
10484 Template:linktest
10485 !! text
10486 [[{{{param}}}|link]]
10487 !! endarticle
10489 !! test
10490 Template parameter as link source
10491 !! wikitext
10492 {{linktest|param=Main Page}}
10493 !! html
10494 <p><a href="/wiki/Main_Page" title="Main Page">link</a>
10495 </p>
10496 !! end
10498 !!article
10499 Template:paramtest2
10500 !! text
10501 including another template, {{paramtest|param={{{arg}}}}}
10502 !! endarticle
10504 !! test
10505 Template passing argument to another template
10506 !! wikitext
10507 {{paramtest2|arg='hmm'}}
10508 !! html
10509 <p>including another template, This is a test template with parameter 'hmm'
10510 </p>
10511 !! end
10513 !! article
10514 Template:Linktest2
10515 !! text
10516 Main Page
10517 !! endarticle
10519 !! test
10520 Template as link source
10521 !! wikitext
10522 [[{{linktest2}}]]
10524 [[{{linktest2}}|Main Page]]
10526 [[{{linktest2}}]]Page
10527 !! html
10528 <p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
10529 </p><p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
10530 </p><p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>Page
10531 </p>
10532 !! end
10535 !! article
10536 Template:loop1
10537 !! text
10538 {{loop2}}
10539 !! endarticle
10541 !! article
10542 Template:loop2
10543 !! text
10544 {{loop1}}
10545 !! endarticle
10547 !! test
10548 Template infinite loop
10549 !! wikitext
10550 {{loop1}}
10551 !! html
10552 <p><span class="error">Template loop detected: <a href="/wiki/Template:Loop1" title="Template:Loop1">Template:Loop1</a></span>
10553 </p>
10554 !! end
10556 !! test
10557 Template from main namespace
10558 !! wikitext
10559 {{:Main Page}}
10560 !! html
10561 <p>blah blah
10562 </p>
10563 !! end
10565 !! article
10566 Template:table
10567 !! text
10569 | 1 || 2
10571 | 3 || 4
10573 !! endarticle
10575 !! test
10576 BUG 529: Template with table, not included at beginning of line
10577 !! wikitext
10578 foo {{table}}
10579 !! html
10580 <p>foo 
10581 </p>
10582 <table>
10583 <tr>
10584 <td> 1 </td>
10585 <td> 2
10586 </td></tr>
10587 <tr>
10588 <td> 3 </td>
10589 <td> 4
10590 </td></tr></table>
10592 !! end
10594 !! test
10595 BUG 523: Template shouldn't eat newline (or add an extra one before table)
10596 !! wikitext
10598 {{table}}
10599 !! html
10600 <p>foo
10601 </p>
10602 <table>
10603 <tr>
10604 <td> 1 </td>
10605 <td> 2
10606 </td></tr>
10607 <tr>
10608 <td> 3 </td>
10609 <td> 4
10610 </td></tr></table>
10612 !! end
10614 !! test
10615 BUG 41: Template parameters shown as broken links
10616 !! wikitext
10617 {{{parameter}}}
10618 !! html
10619 <p>{{{parameter}}}
10620 </p>
10621 !! end
10623 !! test
10624 Template with targets containing wikilinks
10625 !! wikitext
10626 {{[[foo]]}}
10628 {{[[{{echo|foo}}]]}}
10630 {{{{echo|[[foo}}]]}}
10631 !! html
10632 <p>{{<a href="/wiki/Foo" title="Foo">foo</a>}}
10633 </p><p>{{<a href="/wiki/Foo" title="Foo">foo</a>}}
10634 </p><p>{{[[foo}}]]
10635 </p>
10636 !! end
10638 !! article
10639 Template:''
10640 !! text
10642 !! endarticle
10644 !! test
10645 Templates: Double quotes as template target
10646 !! wikitext
10647 foo {{''}} baz
10648 !! html/php
10649 <p>foo bar baz
10650 </p>
10651 !! html/parsoid
10652 <p>foo <span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"&#39;&#39;"},"params":{},"i":0}}]}'>bar</span> baz
10653 </p>
10654 !! end
10656 !! article
10657 Template:MSGNW test
10658 !! text
10659 ''None'' of '''this''' should be 
10660 * interpreted
10661  but rather passed unmodified
10662 {{test}}
10663 <gallery>
10664 File:Foobar.jpg
10665 </gallery>
10666 <!-- comment -->
10667 !! endarticle
10669 # hmm, fix this or just deprecate msgnw and document its behavior?
10670 !! test
10671 msgnw keyword
10672 !! wikitext
10673 {{msgnw:MSGNW test}}
10674 !! html/php
10675 <p>&#39;&#39;None&#39;&#39; of &#39;&#39;&#39;this&#39;&#39;&#39; should be 
10676 &#42; interpreted
10677 &#32;but rather passed unmodified
10678 &#123;&#123;test&#125;&#125;
10679 &#60;gallery&#62;
10680 File:Foobar.jpg
10681 &#60;/gallery&#62;
10682 &#60;!-- comment --&#62;
10683 </p>
10684 !! end
10686 !! test
10687 int keyword
10688 !! wikitext
10689 {{int:youhavenewmessages|lots of money|not!}}
10690 !! html
10691 <p>You have lots of money (not!).
10692 </p>
10693 !! end
10695 !! test
10696 int keyword - non-existing message
10697 !! wikitext
10698 {{int:var}}
10699 !! html
10700 <p>&lt;var&gt;
10701 </p>
10702 !! end
10704 !! article
10705 Template:Includes
10706 !! text
10707 Foo<noinclude>zar</noinclude><includeonly>bar</includeonly>
10708 !! endarticle
10710 !! test
10711 <includeonly> and <noinclude> being included
10712 !! wikitext
10713 {{Includes}}
10714 !! html
10715 <p>Foobar
10716 </p>
10717 !! end
10719 !! article
10720 Template:Includes2
10721 !! text
10722 <onlyinclude>Foo</onlyinclude>bar
10723 !! endarticle
10725 !! test
10726 <onlyinclude> being included
10727 !! wikitext
10728 {{Includes2}}
10729 !! html
10730 <p>Foo
10731 </p>
10732 !! end
10735 !! article
10736 Template:Includes3
10737 !! text
10738 <onlyinclude>Foo</onlyinclude>bar<includeonly>zar</includeonly>
10739 !! endarticle
10741 !! test
10742 <onlyinclude> and <includeonly> being included
10743 !! wikitext
10744 {{Includes3}}
10745 !! html
10746 <p>Foo
10747 </p>
10748 !! end
10750 !! test
10751 <includeonly> and <noinclude> on a page
10752 !! wikitext
10753 Foo<noinclude>zar</noinclude><includeonly>bar</includeonly>
10754 !! html
10755 <p>Foozar
10756 </p>
10757 !! end
10759 !! test
10760 Un-closed <noinclude>
10761 !! wikitext
10762 <noinclude>
10763 !! html
10764 !! end
10766 !! test
10767 <onlyinclude> on a page
10768 !! wikitext
10769 <onlyinclude>Foo</onlyinclude>bar
10770 !! html
10771 <p>Foobar
10772 </p>
10773 !! end
10775 !! test
10776 Un-closed <onlyinclude>
10777 !! wikitext
10778 <onlyinclude>
10779 !! html
10780 !! end
10782 !!test
10783 Self-closed noinclude, includeonly, onlyinclude tags
10784 !! wikitext
10785 <noinclude />
10786 <includeonly />
10787 <onlyinclude />
10788 !! html
10789 <p><br />
10790 </p>
10791 !!end
10793 !!test
10794 Unbalanced includeonly and noinclude tags
10795 !! wikitext
10797 |a</noinclude>
10798 |b</noinclude></noinclude>
10799 |c</noinclude></includeonly>
10800 |d</includeonly></includeonly>
10802 !! html
10803 <table>
10804 <tr>
10805 <td>a
10806 </td>
10807 <td>b
10808 </td>
10809 <td>c&lt;/includeonly&gt;
10810 </td>
10811 <td>d&lt;/includeonly&gt;&lt;/includeonly&gt;
10812 </td></tr></table>
10814 !!end
10816 !! article
10817 Template:Includeonly section
10818 !! text
10819 <includeonly>
10820 ==Includeonly section==
10821 </includeonly>
10822 ==Section T-1==
10823 !!endarticle
10825 !! test
10826 Bug 6563: Edit link generation for section shown by <includeonly>
10827 !! wikitext
10828 {{includeonly section}}
10829 !! html
10830 <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&amp;action=edit&amp;section=T-1" title="Template:Includeonly section">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
10831 <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&amp;action=edit&amp;section=T-2" title="Template:Includeonly section">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
10833 !! end
10835 # Uses same input as the contents of [[Template:Includeonly section]]
10836 !! test
10837 Bug 6563: Section extraction for section shown by <includeonly>
10838 !! options
10839 section=T-2
10840 !! wikitext
10841 <includeonly>
10842 ==Includeonly section==
10843 </includeonly>
10844 ==Section T-2==
10845 !! html
10846 ==Section T-2==
10847 !! end
10849 !! test
10850 Bug 6563: Edit link generation for section suppressed by <includeonly>
10851 !! wikitext
10852 <includeonly>
10853 ==Includeonly section==
10854 </includeonly>
10855 ==Section 1==
10856 !! html
10857 <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&amp;action=edit&amp;section=1" title="Edit section: Section 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
10859 !! end
10861 !! test
10862 Bug 6563: Section extraction for section suppressed by <includeonly>
10863 !! options
10864 section=1
10865 !! wikitext
10866 <includeonly>
10867 ==Includeonly section==
10868 </includeonly>
10869 ==Section 1==
10870 !! html
10871 ==Section 1==
10872 !! end
10874 !! test
10875 Un-closed <includeonly>
10876 !! wikitext
10877 <includeonly>
10878 !! html
10879 !! end
10881 ## We used to, but no longer wt2wt this test since the default serializer
10882 ## will normalize the include directives to serialize on their own line.
10883 ## Selser will take care of preserving formatting in scenarios where they
10884 ## intermingled with other wikitext.
10885 !! test
10886 Includes and comments at SOL
10887 !! options
10888 parsoid=wt2html,html2html
10889 !! wikitext
10890 <!-- comment --><noinclude><!-- comment --></noinclude><!-- comment -->== hu ==
10892 <noinclude>
10893 some
10894 </noinclude>* stuff
10895 * here
10897 <includeonly>can have stuff</includeonly>=== here ===
10899 !! html/php
10900 <h2><span class="mw-headline" id="hu">hu</span></h2>
10901 <p>some
10902 </p>
10903 <ul><li> stuff</li>
10904 <li> here</li></ul>
10905 <h3><span class="mw-headline" id="here">here</span></h3>
10907 !! html/parsoid
10908 <!-- comment --><meta typeof="mw:Includes/NoInclude" data-parsoid='{"src":"&lt;noinclude>"}'/><!-- comment --><meta typeof="mw:Includes/NoInclude/End" data-parsoid='{"src":"&lt;/noinclude>"}'/><!-- comment --><h2> hu </h2>
10910 <meta typeof="mw:Includes/NoInclude" data-parsoid='{"src":"&lt;noinclude>"}'/>
10911 <p>some</p>
10912 <meta typeof="mw:Includes/NoInclude/End" data-parsoid='{"src":"&lt;/noinclude>"}'/><ul><li> stuff</li>
10913 <li> here</li></ul>
10915 <meta typeof="mw:Includes/IncludeOnly" data-parsoid='{"src":"&lt;includeonly>can have stuff&lt;/includeonly>"}'/><meta typeof="mw:Includes/IncludeOnly/End" data-parsoid='{"src":""}'/><h3> here </h3>
10917 !! end
10919 # TODO: test with DOM fragment reuse!
10920 !! test
10921 Parsoid: DOM fragment reuse
10922 !! options
10923 parsoid=wt2wt,wt2html
10924 !! wikitext
10925 a{{echo|b<table></table>c}}d
10927 a{{echo|b
10928 <table></table>
10929 c}}d
10931 {{echo|a
10933 <table></table>
10936 !! html
10937 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":["a",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"b&lt;table>&lt;/table>c"}},"i":0}},"d"]}' data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}'>ab</p><table about="#mwt1" data-parsoid='{"stx":"html"}'></table><p about="#mwt1">cd</p>
10939 <p about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":["a",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"b\n&lt;table>&lt;/table>\nc"}},"i":0}},"d"]}' data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}'>ab</p><span about="#mwt2">
10940 </span><table about="#mwt2" data-parsoid='{"stx":"html"}'></table><span about="#mwt2">
10941 </span><p about="#mwt2">cd</p>
10943 <p about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a\n\n&lt;table>&lt;/table>\n\nb"}},"i":0}}]}' data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}'>a</p><span about="#mwt3">
10945 </span><table about="#mwt3" data-parsoid='{"stx":"html"}'></table><span about="#mwt3">
10947 </span><p about="#mwt3">b</p>
10948 !! end
10950 !! test
10951 Parsoid: Merge double tds (T52603)
10952 !! options
10953 parsoid
10954 !! wikitext
10956 |{{echo|{{!}} foo}}
10958 !! html
10959 <table><tbody>
10960 <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>
10961 </tbody></table>
10962 !! end
10964 !! test
10965 Parsoid: Merge double tds in nested transclusion content (T52603)
10966 !! options
10967 parsoid
10968 !! wikitext
10969 {{echo|<div>}}
10971 |{{echo|{{!}} foo}}
10973 {{echo|</div>}}
10974 !! html
10975 <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}}]}'>
10976 <table><tbody>
10977 <tr><td data-mw='{"parts":["|"]}'> foo</td></tr>
10978 </tbody></table>
10979 </div>
10980 !! end
10983 ### <includeonly> and <noinclude> in attributes
10985 !!test
10986 0. includeonly around the entire attribute
10987 !! wikitext
10988 <span <includeonly>id="v1"</includeonly><noinclude>id="v2"</noinclude>>bar</span>
10989 !! html
10990 <p><span id="v2">bar</span>
10991 </p>
10992 !!end
10994 !!test
10995 1. includeonly in html attr key
10996 !! wikitext
10997 <span <noinclude>id</noinclude><includeonly>about</includeonly>="foo">bar</span>
10998 !! html
10999 <p><span id="foo">bar</span>
11000 </p>
11001 !!end
11003 !!test
11004 2. includeonly in html attr value
11005 !! wikitext
11006 <span id="<noinclude>v1</noinclude><includeonly>v2</includeonly>">bar</span>
11007 <span id=<noinclude>"v1"</noinclude><includeonly>"v2"</includeonly>>bar</span>
11008 !! html
11009 <p><span id="v1">bar</span>
11010 <span id="v1">bar</span>
11011 </p>
11012 !!end
11014 !!test
11015 3. includeonly in part of an attr value
11016 !! wikitext
11017 <span style="color:<noinclude>red</noinclude><includeonly>blue</includeonly>;">bar</span>
11018 !! html
11019 <p><span style="color:red;">bar</span>
11020 </p>
11021 !!end
11023 !!test
11024 4. includeonly in table attributes
11025 !! wikitext
11027 |- <noinclude>
11030 </noinclude>
11031 |- <includeonly>
11034 </includeonly>
11036 !! html
11037 <table>
11040 <tr>
11041 <td>a
11042 </td></tr>
11043 </table>
11045 !!end
11048 ### Token Stream Patcher tests
11050 ### These tests won't always pass wt2wt and other modes because
11051 ### on serialization, the table will be output on a new line.
11052 ### For now, we are blacklisting them, and using this to test selser.
11055 !!test
11056 1. Table tag in SOL posn. should get reparsed correctly with valid TSR
11057 !!options
11058 parsoid=wt2html,wt2wt
11059 !!wikitext
11060 {{echo|}}{| width = '100%'
11061 |foo
11063 !!html/parsoid
11064 <span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":""}},"i":0}}]}'></span><table width="100%">
11065 <tbody><tr><td>foo</td></tr>
11066 </tbody></table>
11067 !!end
11069 ## We used to, but no longer wt2wt this test since the default serializer
11070 ## will normalize the include directives to serialize on their own line.
11071 ## Selser will take care of preserving formatting in scenarios where they
11072 ## intermingled with other wikitext.
11073 !!test
11074 2. Table tag in SOL posn. should get reparsed correctly with valid TSR
11075 !!options
11076 parsoid=wt2html
11077 !!wikitext
11078 <includeonly>a</includeonly>{| {{{b}}}
11081 !!html/parsoid
11082 <meta typeof="mw:Includes/IncludeOnly"/><meta typeof="mw:Includes/IncludeOnly/End"/><table about="#mwt2" typeof="mw:ExpandedAttrs" data-mw='{"attribs":[[{"txt":"{{{b}}}","html":"&lt;span about=\"#mwt1\" typeof=\"mw:Param\" data-parsoid=\"{&amp;quot;dsr&amp;quot;:[31,38,null,null],&amp;quot;src&amp;quot;:&amp;quot;{{{b}}}&amp;quot;}\">{{{b}}}&lt;/span>"},{"html":""}]]}' data-parsoid='{"a":{"{{{b}}}":null},"sa":{"{{{b}}}":""}}'>
11083 <tbody><tr><td>c</td></tr>
11084 </tbody></table>
11086 !!end
11089 ### Testing parsing of templates where a template arg
11090 ### has the same name as the template itself.
11093 !! article
11094 Template:quote
11095 !! text
11096 {{{quote|{{{1}}}}}}
11097 !! endarticle
11099 !!test
11100 Templates: Template Name/Arg clash: 1. Use of positional param
11101 !! wikitext
11102 {{quote|foo}}
11103 !! html
11104 <p>foo
11105 </p>
11106 !!end
11108 !!test
11109 Templates: Template Name/Arg clash: 2. Use of named param
11110 !! wikitext
11111 {{quote|quote=foo}}
11112 !! html
11113 <p>foo
11114 </p>
11115 !!end
11117 !!test
11118 Templates: Template Name/Arg clash: 3. Use of named param with empty input
11119 !! wikitext
11120 {{quote|quote}}
11121 !! html
11122 <p>quote
11123 </p>
11124 !!end
11127 ### Parsoid-centric tests to stress Parsoid's ability to RT them unchanged
11130 !!test
11131 Templates: 1. Simple use
11132 !! wikitext
11133 {{echo|Foo}}
11134 !! html
11135 <p>Foo
11136 </p>
11137 !!end
11139 !!test
11140 Templates: 2. Inside a block tag
11141 !! wikitext
11142 <div>{{echo|Foo}}</div>
11143 <blockquote>{{echo|Foo}}</blockquote>
11144 !! html
11145 <div>Foo</div>
11146 <blockquote>Foo</blockquote>
11148 !! html+tidy
11149 <div>Foo</div>
11150 <blockquote>
11151 <p>Foo</p>
11152 </blockquote>
11153 !!end
11155 !!test
11156 Templates: P-wrapping: 1a. Templates on consecutive lines
11157 !! wikitext
11158 {{echo|Foo}}
11159 {{echo|bar}}
11160 !! html
11161 <p>Foo
11163 </p>
11164 !!end
11166 !!test
11167 Templates: P-wrapping: 1b. Templates on consecutive lines
11168 !! wikitext
11171 {{echo|bar}}
11172 {{echo|baz}}
11173 !! html
11174 <p>Foo
11175 </p><p>bar
11177 </p>
11178 !!end
11180 !!test
11181 Templates: P-wrapping: 1c. Templates on consecutive lines
11182 !! wikitext
11183 {{echo|Foo}}
11184 {{echo|bar}} <div>baz</div>
11185 !! html
11186 <p>Foo
11187 </p>
11188 bar <div>baz</div>
11190 !! html+tidy
11191 <p>Foo</p>
11192 <p>bar</p>
11193 <div>baz</div>
11194 !! end
11196 !!test
11197 Templates: P-wrapping: 1d. Template preceded by comment-only line
11198 !!options
11199 parsoid
11200 !! wikitext
11201 <!-- foo -->
11202 {{echo|Bar}}
11203 !! html
11204 <!-- foo -->
11206 <p about="#mwt223" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Bar"}},"i":0}}]}'>Bar</p>
11207 !!end
11209 !!test
11210 Templates: Inline Text: 1. Multiple template uses
11211 !! wikitext
11212 {{echo|Foo}}bar{{echo|baz}}
11213 !! html
11214 <p>Foobarbaz
11215 </p>
11216 !!end
11218 !!test
11219 Templates: Inline Text: 2. Back-to-back template uses
11220 !! wikitext
11221 {{echo|Foo}}{{echo|bar}}
11222 !! html
11223 <p>Foobar
11224 </p>
11225 !!end
11227 !!test
11228 Templates: Block Tags: 1. Multiple template uses
11229 !! wikitext
11230 {{echo|<div>Foo</div>}}<div>bar</div>{{echo|<div>baz</div>}}
11231 !! html
11232 <div>Foo</div><div>bar</div><div>baz</div>
11234 !!end
11236 !!test
11237 Templates: Block Tags: 2. Back-to-back template uses
11238 !! wikitext
11239 {{echo|<div>Foo</div>}}{{echo|<div>bar</div>}}
11240 !! html
11241 <div>Foo</div><div>bar</div>
11243 !!end
11245 # This is an edge case relating to paragraph wrapping.
11246 !!test
11247 Templates: Correctly encapsulate templates producing </p> tag without a corresponding <p> tag
11248 !! wikitext
11249 {{echo|a
11250 b</p>}}
11251 !! html/parsoid
11252 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a\nb&lt;/p>"}},"i":0}}]}'>a
11253 b</p>
11254 !!end
11256 !!test
11257 Templates: Links: 1. Simple example
11258 !! wikitext
11259 {{echo|[[Foo|bar]]}}
11260 !! html
11261 <p><a href="/wiki/Foo" title="Foo">bar</a>
11262 </p>
11263 !!end
11265 !!test
11266 Templates: Links: 2. Generation of link href
11267 !! wikitext
11268 [[{{echo|Foo}}|bar]]
11269 !! html
11270 <p><a href="/wiki/Foo" title="Foo">bar</a>
11271 </p>
11272 !!end
11274 !!test
11275 Templates: Links: 3. Generation of part of a link href
11276 !! wikitext
11277 [[Fo{{echo|o}}|bar]]
11279 [[Foo{{echo|bar}}]]
11281 [[Foo{{echo|bar}}baz]]
11283 [[Foo{{echo|bar}}|bar]]
11285 [[:Foo{{echo|bar}}]]
11287 [[:Foo{{echo|bar}}|bar]]
11288 !! html
11289 <p><a href="/wiki/Foo" title="Foo">bar</a>
11290 </p><p><a href="/index.php?title=Foobar&amp;action=edit&amp;redlink=1" class="new" title="Foobar (page does not exist)">Foobar</a>
11291 </p><p><a href="/index.php?title=Foobarbaz&amp;action=edit&amp;redlink=1" class="new" title="Foobarbaz (page does not exist)">Foobarbaz</a>
11292 </p><p><a href="/index.php?title=Foobar&amp;action=edit&amp;redlink=1" class="new" title="Foobar (page does not exist)">bar</a>
11293 </p><p><a href="/index.php?title=Foobar&amp;action=edit&amp;redlink=1" class="new" title="Foobar (page does not exist)">Foobar</a>
11294 </p><p><a href="/index.php?title=Foobar&amp;action=edit&amp;redlink=1" class="new" title="Foobar (page does not exist)">bar</a>
11295 </p>
11296 !!end
11298 !!test
11299 Templates: Links: 4. Multiple templates generating link href
11300 !! wikitext
11301 [[{{echo|F}}{{echo|o}}ob{{echo|ar}}]]
11302 !! html
11303 <p><a href="/index.php?title=Foobar&amp;action=edit&amp;redlink=1" class="new" title="Foobar (page does not exist)">Foobar</a>
11304 </p>
11305 !!end
11307 !!test
11308 Templates: Links: 5. Generation of link text
11309 !! wikitext
11310 [[Foo|{{echo|bar}}]]
11311 !! html
11312 <p><a href="/wiki/Foo" title="Foo">bar</a>
11313 </p>
11314 !!end
11316 !!test
11317 Templates: Links: 5. Nested templates (only outermost template should be marked)
11318 !! wikitext
11319 {{echo|[[{{echo|Foo}}|bar]]}}
11320 !! html
11321 <p><a href="/wiki/Foo" title="Foo">bar</a>
11322 </p>
11323 !!end
11325 !!test
11326 Templates: HTML Tag: 1. Generation of HTML attr. key
11327 !! wikitext
11328 <div {{echo|style}}="color:red;">foo</div>
11329 !! html
11330 <div style="color:red;">foo</div>
11332 !!end
11334 !!test
11335 Templates: HTML Tag: 2. Generation of HTML attr. value
11336 !! wikitext
11337 <div style={{echo|'color:red;'}}>foo</div>
11338 !! html
11339 <div style="color:red;">foo</div>
11341 !!end
11343 !!test
11344 Templates: HTML Tag: 3. Generation of HTML attr key and value
11345 !! wikitext
11346 <div {{echo|style}}={{echo|'color:red;'}}>foo</div>
11347 !! html
11348 <div style="color:red;">foo</div>
11350 !!end
11352 !!test
11353 Templates: HTML Tag: 4. Generation of starting piece of HTML attr value
11354 !! wikitext
11355 <div title="{{echo|This is a long title}} with just one piece templated">foo</div>
11356 !! html
11357 <div title="This is a long title with just one piece templated">foo</div>
11359 !!end
11361 !!test
11362 Templates: HTML Tag: 5. Generation of middle piece of HTML attr value
11363 !! wikitext
11364 <div title="This is a long title with just {{echo|one piece}} templated">foo</div>
11365 !! html
11366 <div title="This is a long title with just one piece templated">foo</div>
11368 !!end
11370 !!test
11371 Templates: HTML Tag: 6. Generation of end piece of HTML attr value
11372 !! wikitext
11373 <div title="This is a long title with just one piece {{echo|templated}}">foo</div>
11374 !! html
11375 <div title="This is a long title with just one piece templated">foo</div>
11377 !!end
11379 # SSS FIXME: While it is great we added support for all this,
11380 # do we want to make this part of the spec? Maybe we want to
11381 # deprecate this kind of usage in the future?
11382 !!test
11383 Templates: HTML Tag: 7. Generation of partial attribute key string
11384 !! wikitext
11385 <div st{{echo|yle}}="color:red;">foo</div>
11386 !! html
11387 <div style="color:red;">foo</div>
11389 !!end
11391 !! test
11392 Templates: HTML Tag: 8. Template-generated attribute (k=v)
11393 !! wikitext
11394 <div {{echo|1=id="v1"}}>bar</div>
11395 !! html
11396 <div id="v1">bar</div>
11398 !!end
11400 !! test
11401 Templates: HTML Tag: 9. Multiple template-generated attributes
11402 !! wikitext
11403 <div {{echo|1=id="v1" title="foo"}}>bar</div>
11404 !! html
11405 <div id="v1" title="foo">bar</div>
11407 !!end
11409 !! test
11410 Templates: Support for templates generating attributes and content
11411 !! wikitext
11412 {| {{mixed_attr_content_template}}
11414 |bar
11416 !! html/php
11417 <table style="color:red;" title="T48811">
11419 <tr>
11420 <td>foo
11421 </td></tr>
11422 <tr>
11423 <td>bar
11424 </td></tr></table>
11426 !! html/parsoid
11427 <table style="color:red;" title="T48811" about="#mwt1" typeof="mw:Transclusion mw:ExpandedAttrs" data-mw='{"parts":["{| ",{"template":{"target":{"wt":"mixed_attr_content_template","href":"./Template:Mixed_attr_content_template"},"params":{},"i":0}},"\n|-\n|bar\n|}"]}'>
11428 <tbody><tr>
11429 <td>foo</td></tr>
11430 <tr>
11431 <td>bar</td></tr>
11432 </tbody></table>
11433 !!end
11435 !! test
11436 1. Entities and nowikis inside templated attributes should be handled correctly
11437 !! wikitext
11438 <div {{echo|style{{=}}"background:&#35;f9f9f9;"}}>foo</div>
11439 !! html/php
11440 <div style="background:#f9f9f9;">foo</div>
11442 !! html/parsoid
11443 <div style="background:#f9f9f9;" about="#mwt3" typeof="mw:ExpandedAttrs" data-parsoid='{"stx":"html"}' data-mw='{"attribs":[[{"txt":"style","html":"&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=\"{&amp;quot;pi&amp;quot;:[[{&amp;quot;k&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;spc&amp;quot;:[&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;]}]],&amp;quot;dsr&amp;quot;:[5,49,null,null]}\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;echo&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Echo&amp;quot;},&amp;quot;params&amp;quot;:{&amp;quot;1&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;style{{=}}\\&amp;quot;background:&amp;amp;#35;f9f9f9;\\&amp;quot;&amp;quot;}},&amp;quot;i&amp;quot;:0}}]}\">style&lt;/span>&lt;span typeof=\"mw:Nowiki\" about=\"#mwt1\" data-parsoid=\"{}\">=&lt;/span>&lt;span about=\"#mwt1\" data-parsoid=\"{}\">\"background:&lt;/span>&lt;span typeof=\"mw:Entity\" about=\"#mwt1\" data-parsoid=\"{&amp;quot;src&amp;quot;:&amp;quot;&amp;amp;#35;&amp;quot;,&amp;quot;srcContent&amp;quot;:&amp;quot;#&amp;quot;}\">#&lt;/span>&lt;span about=\"#mwt1\" data-parsoid=\"{}\">f9f9f9;\"&lt;/span>"},{"html":""}]]}'>foo</div>
11444 !! end
11446 !! test
11447 2. Entities and nowikis inside templated attributes should be handled correctly
11448 !! wikitext
11450 |{{table_attribs_3}}
11452 !! html/php
11453 <table>
11454 <tr>
11455 <td style="background:#f9f9f9;">Foo
11456 </td></tr></table>
11458 !! html/parsoid
11459 <table>
11460 <tbody><tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td style="background:#f9f9f9;" typeof="mw:Transclusion" about="#mwt1" data-parsoid='{"autoInsertedEnd":true,"pi":[[]]}' data-mw='{"parts":["|",{"template":{"target":{"wt":"table_attribs_3","href":"./Template:Table_attribs_3"},"params":{},"i":0}}]}'>Foo</td></tr>
11461 </tbody></table>
11462 !! end
11464 !! test
11465 3. Entities and nowikis inside templated attributes should be handled correctly inside templated tables
11466 !! wikitext
11467 {{tbl-start}}
11468 |{{table_attribs_3}}
11469 {{tbl-end}}
11470 !! html/php
11471 <table>
11472 <tr>
11473 <td style="background:#f9f9f9;">Foo
11474 </td></tr></table>
11476 !! html/parsoid
11477 <table about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[],[],[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"tbl-start","href":"./Template:Tbl-start"},"params":{},"i":0}},"\n|",{"template":{"target":{"wt":"table_attribs_3","href":"./Template:Table_attribs_3"},"params":{},"i":1}},"\n",{"template":{"target":{"wt":"tbl-end","href":"./Template:Tbl-end"},"params":{},"i":2}}]}'>
11478 <tbody><tr><td style="background:#f9f9f9;">Foo</td></tr>
11479 </tbody></table>
11480 !! end
11482 # T107622
11483 !! test
11484 4. Entities and nowikis inside templated attributes should be handled correctly inside templated tables
11485 !! wikitext
11487 | {{table_attribs_6}} hi
11489 !! html/php
11490 <table>
11491 <tr>
11492 <td style="background: red;"> hi
11493 </td></tr></table>
11495 !! html/parsoid
11496 <table>
11497 <tbody><tr><td style="background:  red;" typeof="mw:Transclusion" about="#mwt1" data-parsoid='{"autoInsertedEnd":true,"pi":[[]]}' data-mw='{"parts":["| ",{"template":{"target":{"wt":"table_attribs_6","href":"./Template:Table_attribs_6"},"params":{},"i":0}}," hi"]}'> hi</td></tr>
11498 </tbody></table>
11499 !! end
11501 !!test
11502 Templates: HTML Tables: 1. Generating start of a HTML table
11503 !! wikitext
11504 {{echo|<table><tr><td>foo</td>}}</tr></table>
11505 !! html
11506 <table><tr><td>foo</td></tr></table>
11508 !!end
11510 !!test
11511 Templates: HTML Tables: 2a. Generating middle of a HTML table
11512 !! wikitext
11513 <table><tr>{{echo|<td>foo</td>}}</tr></table>
11514 !! html
11515 <table><tr><td>foo</td></tr></table>
11517 !!end
11519 !!test
11520 Templates: HTML Tables: 2b. Generating middle of a HTML table
11521 !! wikitext
11522 <table>{{echo|<tr><td>foo</td></tr>}}</table>
11523 !! html
11524 <table><tr><td>foo</td></tr></table>
11526 !!end
11528 !!test
11529 Templates: HTML Tables: 3. Generating end of a HTML table
11530 !! wikitext
11531 <table><tr>{{echo|<td>foo</td></tr></table>}}
11532 !! html
11533 <table><tr><td>foo</td></tr></table>
11535 !!end
11537 !!test
11538 Templates: HTML Tables: 4a. Generating a single tag of a HTML table
11539 !! wikitext
11540 {{echo|<table>}}<tr><td>foo</td></tr></table>
11541 !! html
11542 <table><tr><td>foo</td></tr></table>
11544 !!end
11546 !!test
11547 Templates: HTML Tables: 4b. Generating a single tag of a HTML table
11548 !! wikitext
11549 <table>{{echo|<tr>}}<td>foo</td></tr></table>
11550 !! html
11551 <table><tr><td>foo</td></tr></table>
11553 !!end
11555 !!test
11556 Templates: HTML Tables: 4c. Generating a single tag of a HTML table
11557 !! wikitext
11558 <table><tr>{{echo|<td>}}foo</td></tr></table>
11559 !! html
11560 <table><tr><td>foo</td></tr></table>
11562 !!end
11564 !!test
11565 Templates: HTML Tables: 4d. Generating a single tag of a HTML table
11566 !! wikitext
11567 <table><tr><td>foo{{echo|</td>}}</tr></table>
11568 !! html
11569 <table><tr><td>foo</td></tr></table>
11571 !!end
11573 !!test
11574 Templates: HTML Tables: 4e. Generating a single tag of a HTML table
11575 !! wikitext
11576 <table><tr><td>foo</td>{{echo|</tr>}}</table>
11577 !! html
11578 <table><tr><td>foo</td></tr></table>
11580 !!end
11582 !!test
11583 Templates: HTML Tables: 4f. Generating a single tag of a HTML table
11584 !! wikitext
11585 <table><tr><td>foo</td></tr>{{echo|</table>}}
11586 !! html
11587 <table><tr><td>foo</td></tr></table>
11589 !!end
11591 !!test
11592 Templates: HTML Tables: 5. Proper fostering of categories from inside
11593 !!options
11594 parsoid=wt2html,wt2wt
11595 !! wikitext
11596 <table>[[Category:foo1]]<tr><td>foo</td></tr></table>
11597 <!--Two categories (Bug 50330)-->
11598 <table>[[Category:bar1]][[Category:bar2]]<tr><td>foo</td></tr></table>
11599 !! html
11600 <link rel="mw:PageProp/Category" href="./Category:Foo1"><table><tbody><tr><td>foo</td></tr></tbody></table>
11601 <!--Two categories (Bug 50330)-->
11602 <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>
11603 !!end
11605 !!test
11606 Templates: Wiki Tables: 1a. Fostering of entire template content
11607 !! wikitext
11609 {{echo|a}}
11611 !! html
11612 <table>
11614 <tr><td></td></tr></table>
11616 !! html+tidy
11617 <p>a</p>
11618 <table>
11619 <tr>
11620 <td></td>
11621 </tr>
11622 </table>
11623 !! end
11625 !!test
11626 Templates: Wiki Tables: 1b. Fostering of entire template content
11627 !! wikitext
11629 {{echo|<div>}}
11631 {{echo|</div>}}
11633 !! html
11634 <table>
11635 <div>
11636 <p>foo
11637 </p>
11638 </div>
11639 <tr><td></td></tr></table>
11641 !! html+tidy
11642 <div>
11643 <p>foo</p>
11644 </div>
11645 <table>
11646 <tr>
11647 <td></td>
11648 </tr>
11649 </table>
11650 !! end
11652 !!test
11653 Templates: Wiki Tables: 2. Fostering of partial template content
11654 !! wikitext
11656 {{echo|a
11657 <div>b</div>}}
11659 !! html
11660 <table>
11662 <div>b</div>
11663 <tr><td></td></tr></table>
11665 !! html+tidy
11666 <p>a</p>
11667 <div>b</div>
11668 <table>
11669 <tr>
11670 <td></td>
11671 </tr>
11672 </table>
11673 !! end
11675 !!test
11676 Templates: Wiki Tables: 3. td-content via multiple templates
11677 !! wikitext
11679 {{echo|{{pipe}}a}}{{echo|b}}
11681 !! html
11682 <table>
11683 <tr>
11684 <td>ab
11685 </td></tr></table>
11687 !!end
11689 !!test
11690 Templates: Wiki Tables: 4. Templated tags, no content
11691 !! wikitext
11692 {{tbl-start}}
11693 {{tbl-end}}
11694 !! html
11695 <table>
11696 <tr><td></td></tr></table>
11698 !!end
11700 !!test
11701 Templates: Wiki Tables: 5. Templated tags, regular td-tags
11702 !! wikitext
11703 {{tbl-start}}
11704 |foo
11705 {{tbl-end}}
11706 !! html
11707 <table>
11708 <tr>
11709 <td>foo
11710 </td></tr></table>
11712 !!end
11714 !!test
11715 Templates: Wiki Tables: 6. Templated tags, templated td-tags
11716 !! wikitext
11717 {{tbl-start}}
11718 {{!}}foo
11719 {{tbl-end}}
11720 !! html
11721 <table>
11722 <tr>
11723 <td>foo
11724 </td></tr></table>
11726 !!end
11728 ## This test case is very specific to Parsoid's internals
11729 ## and is hence only tested for Parsoid's code. Parsoid uses
11730 ## a <meta> marker tag for <ref> tags and they are expanded
11731 ## much later. We are verifying that this <meta> tag usage
11732 ## doesn't prevent foster parenting.
11733 !!test
11734 Templates: Wiki Tables: 7. Fosterable <ref>s should get fostered
11735 !!wikitext
11736 {{PartialTable}}<ref>foo</ref>
11739 <references />
11740 !!html/parsoid
11741 <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Transclusion  mw:Extension/ref" data-mw='{"parts":[{"template":{"target":{"wt":"PartialTable","href":"./Template:PartialTable"},"params":{},"i":0}},"&lt;ref>foo&lt;/ref>\n|}"]}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span><table about="#mwt2">
11742 <tbody>
11743 </tbody></table>
11745 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li></ol>
11746 !!end
11748 !! test
11749 Templates: Wiki Tables: 8. Fosterable meta-tags should get fostered
11750 !! wikitext
11751 {{echo|
11752 {{{!}}
11753 {{!}}-}}
11754 <onlyinclude>
11755 |foo
11756 </onlyinclude>
11757 {{!}}}
11758 !! html/parsoid
11759 <span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"\n{{{!}}\n{{!}}-"}},"i":0}},"\n&lt;onlyinclude>\n|foo\n&lt;/onlyinclude>\n{{!}}}"]}'>
11760 </span><meta typeof="mw:Includes/OnlyInclude" about="#mwt1"/><table about="#mwt1">
11761 <tbody><tr>
11763 <td>foo
11764 <meta typeof="mw:Includes/OnlyInclude/End"/></td></tr>
11765 </tbody></table>
11766 !! end
11768 !!test
11769 Templates: Lists: Multi-line list-items via templates
11770 !! wikitext
11771 *{{echo|a {{nonexistent|
11772 unused}}}}
11773 *{{echo|b {{nonexistent|
11774 unused}}}}
11775 !! html
11776 <ul><li>a <a href="/index.php?title=Template:Nonexistent&amp;action=edit&amp;redlink=1" class="new" title="Template:Nonexistent (page does not exist)">Template:Nonexistent</a></li>
11777 <li>b <a href="/index.php?title=Template:Nonexistent&amp;action=edit&amp;redlink=1" class="new" title="Template:Nonexistent (page does not exist)">Template:Nonexistent</a></li></ul>
11779 !!end
11781 !!test
11782 Templates: Ugly nesting: 1. Quotes opened/closed across templates (echo)
11783 !! wikitext
11784 {{echo|''a}}{{echo|b''c''d}}{{echo|''e}}
11785 !! html
11786 <p><i>ab</i>c<i>d</i>e
11787 </p>
11788 !!end
11790 !!test
11791 Templates: Ugly nesting: 2. Quotes opened/closed across templates (echo_with_span)
11792 (PHP parser generates misnested html)
11793 !! wikitext
11794 {{echo_with_span|''a}}{{echo_with_span|b''c''d}}{{echo_with_span|''e}}
11795 !! html/parsoid
11796 <p><span about="#mwt1" typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo_with_span&quot;,&quot;href&quot;:&quot;./Template:Echo_with_span&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;''a&quot;}},&quot;i&quot;:0}}]}"><i>a</i></span><i about="#mwt2" typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo_with_span&quot;,&quot;href&quot;:&quot;./Template:Echo_with_span&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;b''c''d&quot;}},&quot;i&quot;:0}},{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo_with_span&quot;,&quot;href&quot;:&quot;./Template:Echo_with_span&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;''e&quot;}},&quot;i&quot;:1}}]}"><span>b</span></i><span about="#mwt2">c</span><i about="#mwt2">d<span></span></i><span about="#mwt2">e</span></p>
11797 !!end
11799 !!test
11800 Templates: Ugly nesting: 3. Quotes opened/closed across templates (echo_with_div)
11801 (PHP parser generates misnested html; Parsoid html2wt mode adds newlines between {{echo}}s)
11802 !! options
11803 parsoid=wt2html,wt2wt
11804 !! wikitext
11805 {{echo_with_div|''a}}{{echo_with_div|b''c''d}}{{echo_with_div|''e}}
11806 !! html
11807 <div about="#mwt1" typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo_with_div&quot;,&quot;href&quot;:&quot;./Template:Echo_with_div&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;''a&quot;}},&quot;i&quot;:0}}]}"><i>a</i></div>
11808 <div about="#mwt2" typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo_with_div&quot;,&quot;href&quot;:&quot;./Template:Echo_with_div&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;b''c''d&quot;}},&quot;i&quot;:0}}]}"><i>b</i>c<i>d</i></div>
11809 <div about="#mwt3" typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo_with_div&quot;,&quot;href&quot;:&quot;./Template:Echo_with_div&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;''e&quot;}},&quot;i&quot;:0}}]}">e</div>
11810 !!end
11812 !!test
11813 Templates: Ugly nesting: 4. Divs opened/closed across templates
11814 !! wikitext
11815 a<div>b{{echo|c</div>d}}e
11816 !! html
11817 a<div>bc</div>de
11819 !! html+tidy
11820 <p>a</p>
11821 <div>bc</div>
11822 <p>de</p>
11823 !! end
11825 !!test
11826 Templates: Ugly templates: 1. Navbox template parses badly leading to table misnesting
11827 (Parsoid-centric)
11828 !! options
11829 parsoid
11830 !! wikitext
11832 |{{echo|foo</table>}}
11833 |bar
11835 !! html
11836 <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|}"]}'>
11838 <tbody>
11839 <tr>
11840 <td>foo</td></tr></tbody></table><span about="#mwt1">
11841 </span><span about="#mwt1">|bar</span><span about="#mwt1">
11842 |}</span>
11843 !!end
11845 !!test
11846 Templates: Ugly templates: 2. Navbox template parses badly leading to table misnesting
11847 (Parsoid-centric)
11848 !! options
11849 parsoid
11850 !! wikitext
11851 <table>
11852   <tr>
11853     <td>
11854     <table>
11855       <tr>
11856         <td>1. {{echo|foo </table>}}</td>
11857         <td> bar </td>
11858         <td>2. {{echo|baz </table>}}</td>
11859       </tr>
11860       <tr>
11861         <td>abc</td>
11862       </tr>
11863     </table>
11864     </td>
11865   </tr>
11866   <tr>
11867     <td>xyz</td>
11868   </tr>
11869 </table>
11870 !! html
11871 <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>"]}'>
11872   <tbody><tr>
11873     <td>
11874     <table>
11875       <tbody><tr>
11876         <td>1. foo </td></tr></tbody></table></td>
11877         <td> bar </td>
11878         <td>2. baz </td></tr></tbody></table><span about="#mwt2">
11879       </span><span about="#mwt2">
11880       </span><span about="#mwt2">
11881         </span><span about="#mwt2">abc</span><span about="#mwt2">
11882       </span><span about="#mwt2">
11883     </span><span about="#mwt2">
11884     </span><span about="#mwt2">
11885   </span><span about="#mwt2">
11886   </span><span about="#mwt2">
11887     </span><span about="#mwt2">xyz</span><span about="#mwt2">
11888   </span><span about="#mwt2">
11889 </span>
11890 !!end
11892 !! test
11893 Templates: Ugly templates: 3. newline-only template parameter
11894 !! wikitext
11895 foo {{echo|
11897 !! html
11898 <p>foo 
11899 </p>
11900 !! end
11902 # This looks like a bug: a single newline triggers p/br for some reason.
11903 !! test
11904 Templates: Ugly templates: 4. newline-only template parameter inconsistency
11905 !! wikitext
11906 {{echo|
11908 !! html
11909 <p><br />
11910 </p>
11911 !! end
11913 # Bug 64017 -- ugly wikitext with fostered content generates two template ranges that
11914 # have a true overlap (T1-start - T2-start - T1-end - T2-end).
11915 !! test
11916 Templates: Ugly templates: 5. Template encapsulation test: Non-trivial overlap of template ranges is properly handled
11917 !! wikitext
11918 {{echo|<table>}}
11919 {{echo|<div>foo}}
11920 {{echo|</table>}}
11921 !! html/parsoid
11922 <div about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;table>"}},"i":0}},"\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;div>foo"}},"i":1}},"\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;/table>"}},"i":2}}]}' data-parsoid='{"stx":"html","autoInsertedEnd":true,"pi":[[{"k":"1","spc":["","","",""]}],[{"k":"1","spc":["","","",""]}],[{"k":"1","spc":["","","",""]}]]}'>foo
11923 </div><table about="#mwt1" data-parsoid='{"stx":"html"}'>
11924 </table>
11925 !! end
11927 # Bug 64017 -- ugly wikitext with fostered content generates two template ranges
11928 # that are "identical" and generate nesting cycles in the algorithm
11929 !! test
11930 Templates: Ugly templates: 6. Template encapsulation test: Cyclical nesting of template ranges is properly handled
11931 !! wikitext
11932 {{echo|<table><tr><td><table>}}
11933 {{echo|<div>}}
11934 {{echo|</div>}}
11935 !! html/parsoid
11936 <table about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;table>&lt;tr>&lt;td>&lt;table>"}},"i":0}},"\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;div>"}},"i":1}},"\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;/div>"}},"i":2}}]}' data-parsoid='{"stx":"html","autoInsertedEnd":true,"pi":[[{"k":"1","spc":["","","",""]}],[{"k":"1","spc":["","","",""]}],[{"k":"1","spc":["","","",""]}]]}'><tbody><tr data-parsoid='{"stx":"html"}'><td data-parsoid='{"stx":"html"}'><div data-parsoid='{"stx":"html"}'>
11937 </div><table about="#mwt1" data-parsoid='{"stx":"html"}'>
11938 </table></td></tr></tbody></table>
11939 !! end
11941 !! test
11942 Templates: Parameters substituted at the top-level
11943 !! wikitext
11944 {{{foo|''who'' {{echo|me}}? '''never!'''}}}
11945 !! html/php
11946 <p><i>who</i> me? <b>never!</b>
11947 </p>
11948 !! html/parsoid
11949 <p about="#mwt2" typeof="mw:Param" data-parsoid="{&quot;src&quot;:&quot;{{{foo|''who'' {{echo|me}}? '''never!'''}}}&quot;}"><i>who</i> me? <b>never!</b></p>
11950 !! end
11952 !!test
11953 Parser Functions: 1. Simple example
11954 !! wikitext
11955 {{uc:foo}}
11956 !! html
11957 <p>FOO
11958 </p>
11959 !!end
11961 !!test
11962 Parser Functions: 2. Nested use (only outermost should be marked up)
11963 !! wikitext
11964 {{uc:{{lc:FOO}}}}
11965 !! html
11966 <p>FOO
11967 </p>
11968 !!end
11971 ### Pre-save transform tests
11973 !! test
11974 pre-save transform: subst:
11975 !! options
11977 !! wikitext
11978 {{subst:test}}
11979 !! html/php
11980 This is a test template
11981 !! end
11983 !! test
11984 pre-save transform: normal template
11985 !! options
11987 !! wikitext
11988 {{test}}
11989 !! html/php
11990 {{test}}
11991 !! end
11993 !! test
11994 pre-save transform: nonexistent template
11995 !! options
11997 !! wikitext
11998 {{thistemplatedoesnotexist}}
11999 !! html/php
12000 {{thistemplatedoesnotexist}}
12001 !! end
12003 !! test
12004 pre-save transform: subst magic variables
12005 !! options
12007 !! wikitext
12008 {{subst:SITENAME}}
12009 !! html/php
12010 MediaWiki
12011 !! end
12013 # This is bug 89, which I fixed. -- wtm
12014 !! test
12015 pre-save transform: subst: templates with parameters
12016 !! options
12018 !! wikitext
12019 {{subst:paramtest|param="something else"}}
12020 !! html/php
12021 This is a test template with parameter "something else"
12022 !! end
12024 !! article
12025 Template:nowikitest
12026 !! text
12027 <nowiki>'''not wiki'''</nowiki>
12028 !! endarticle
12030 !! test
12031 pre-save transform: nowiki in subst (bug 1188)
12032 !! options
12034 !! wikitext
12035 {{subst:nowikitest}}
12036 !! html/php
12037 <nowiki>'''not wiki'''</nowiki>
12038 !! end
12040 !! article
12041 Template:commenttest
12042 !! text
12043 This template has <!-- a comment --> in it.
12044 !! endarticle
12046 !! test
12047 pre-save transform: comment in subst (bug 1936)
12048 !! options
12050 !! wikitext
12051 {{subst:commenttest}}
12052 !! html/php
12053 This template has <!-- a comment --> in it.
12054 !! end
12056 !! test
12057 pre-save transform: unclosed tag
12058 !! options
12059 pst noxml
12060 !! wikitext
12061 <nowiki>'''not wiki'''
12062 !! html/php
12063 <nowiki>'''not wiki'''
12064 !! end
12066 !! test
12067 pre-save transform: mixed tag case
12068 !! options
12069 pst noxml
12070 !! wikitext
12071 <NOwiki>'''not wiki'''</noWIKI>
12072 !! html/php
12073 <NOwiki>'''not wiki'''</noWIKI>
12074 !! end
12076 !! test
12077 pre-save transform: unclosed comment in <nowiki>
12078 !! options
12079 pst noxml
12080 !! wikitext
12081 wiki<nowiki>nowiki<!--nowiki</nowiki>wiki
12082 !! html/php
12083 wiki<nowiki>nowiki<!--nowiki</nowiki>wiki
12084 !!end
12086 # Leading @ in this template definition works around a limitation
12087 # in parsoid's parserTests which otherwise strips the <span> from the
12088 # result (confusing it for a template wrapper)
12089 !! article
12090 Template:dangerous
12091 !!text
12092 @<span onmouseover="alert('crap')">Oh no</span>
12093 !!endarticle
12095 !!test
12096 (confirming safety of fix for subst bug 1936)
12097 !! wikitext
12098 {{Template:dangerous}}
12099 !! html
12100 <p>@<span>Oh no</span>
12101 </p>
12102 !! end
12104 !! test
12105 pre-save transform: comment containing gallery (bug 5024)
12106 !! options
12108 !! wikitext
12109 <!-- <gallery>data</gallery> -->
12110 !! html/php
12111 <!-- <gallery>data</gallery> -->
12112 !!end
12114 !! test
12115 pre-save transform: comment containing extension
12116 !! options
12118 !! wikitext
12119 <!-- <tag>data</tag> -->
12120 !! html/php
12121 <!-- <tag>data</tag> -->
12122 !!end
12124 !! test
12125 pre-save transform: comment containing nowiki
12126 !! options
12128 !! wikitext
12129 <!-- <nowiki>data</nowiki> -->
12130 !! html/php
12131 <!-- <nowiki>data</nowiki> -->
12132 !!end
12134 !! test
12135 pre-save transform: <noinclude> in subst (bug 3298)
12136 !! options
12138 !! wikitext
12139 {{subst:Includes}}
12140 !! html/php
12141 Foobar
12142 !! end
12144 !! test
12145 pre-save transform: <onlyinclude> in subst (bug 3298)
12146 !! options
12148 !! wikitext
12149 {{subst:Includes2}}
12150 !! html/php
12152 !! end
12154 !! article
12155 Template:SubstTest
12156 !!text
12157 {{<includeonly>subst:</includeonly>Includes}}
12158 !! endarticle
12160 !! article
12161 Template:SafeSubstTest
12162 !! text
12163 {{<includeonly>safesubst:</includeonly>Includes}}
12164 !! endarticle
12166 !! test
12167 bug 22297: safesubst: works during PST
12168 !! options
12170 !! wikitext
12171 {{subst:SafeSubstTest}}{{safesubst:SubstTest}}
12172 !! html/php
12173 FoobarFoobar
12174 !! end
12176 !! test
12177 bug 22297: safesubst: works during normal parse
12178 !! wikitext
12179 {{SafeSubstTest}}
12180 !! html
12181 <p>Foobar
12182 </p>
12183 !! end
12185 !! test
12186 subst: does not work during normal parse
12187 !! wikitext
12188 {{SubstTest}}
12189 !! html
12190 <p>{{subst:Includes}}
12191 </p>
12192 !! end
12194 !! test
12195 pre-save transform: context links ("pipe trick")
12196 !! options
12198 !! wikitext
12199 [[Article (context)|]]
12200 [[Bar:Article|]]
12201 [[:Bar:Article|]]
12202 [[Bar:Article (context)|]]
12203 [[:Bar:Article (context)|]]
12204 [[|Article]]
12205 [[|Article (context)]]
12206 [[Bar:X (Y) Z|]]
12207 [[:Bar:X (Y) Z|]]
12208 !! html/php
12209 [[Article (context)|Article]]
12210 [[Bar:Article|Article]]
12211 [[:Bar:Article|Article]]
12212 [[Bar:Article (context)|Article]]
12213 [[:Bar:Article (context)|Article]]
12214 [[Article]]
12215 [[Article (context)]]
12216 [[Bar:X (Y) Z|X (Y) Z]]
12217 [[:Bar:X (Y) Z|X (Y) Z]]
12218 !! end
12220 !! test
12221 pre-save transform: context links ("pipe trick") with interwiki prefix
12222 !! options
12224 !! wikitext
12225 [[interwiki:Article|]]
12226 [[:interwiki:Article|]]
12227 [[interwiki:Bar:Article|]]
12228 [[:interwiki:Bar:Article|]]
12229 !! html/php
12230 [[interwiki:Article|Article]]
12231 [[:interwiki:Article|Article]]
12232 [[interwiki:Bar:Article|Bar:Article]]
12233 [[:interwiki:Bar:Article|Bar:Article]]
12234 !! end
12236 !! test
12237 pre-save transform: context links ("pipe trick") with parens in title
12238 !! options
12239 pst title=[[Somearticle (context)]]
12240 !! wikitext
12241 [[|Article]]
12242 !! html/php
12243 [[Article (context)|Article]]
12244 !! end
12246 !! test
12247 pre-save transform: context links ("pipe trick") with comma in title
12248 !! options
12249 pst title=[[Someplace, Somewhere]]
12250 !! wikitext
12251 [[|Otherplace]]
12252 [[Otherplace, Elsewhere|]]
12253 [[Otherplace, Elsewhere, Anywhere|]]
12254 !! html/php
12255 [[Otherplace, Somewhere|Otherplace]]
12256 [[Otherplace, Elsewhere|Otherplace]]
12257 [[Otherplace, Elsewhere, Anywhere|Otherplace]]
12258 !! end
12260 !! test
12261 pre-save transform: context links ("pipe trick") with parens and comma
12262 !! options
12263 pst title=[[Someplace (IGNORED), Somewhere]]
12264 !! wikitext
12265 [[|Otherplace]]
12266 [[Otherplace (place), Elsewhere|]]
12267 !! html/php
12268 [[Otherplace, Somewhere|Otherplace]]
12269 [[Otherplace (place), Elsewhere|Otherplace]]
12270 !! end
12272 !! test
12273 pre-save transform: context links ("pipe trick") with comma and parens
12274 !! options
12275 pst title=[[Who, me? (context)]]
12276 !! wikitext
12277 [[|Yes, you.]]
12278 [[Me, Myself, and I (1937 song)|]]
12279 !! html/php
12280 [[Yes, you. (context)|Yes, you.]]
12281 [[Me, Myself, and I (1937 song)|Me, Myself, and I]]
12282 !! end
12284 !! test
12285 pre-save transform: context links ("pipe trick") with namespace
12286 !! options
12287 pst title=[[Ns:Somearticle]]
12288 !! wikitext
12289 [[|Article]]
12290 !! html/php
12291 [[Ns:Article|Article]]
12292 !! end
12294 !! test
12295 pre-save transform: context links ("pipe trick") with namespace and parens
12296 !! options
12297 pst title=[[Ns:Somearticle (context)]]
12298 !! wikitext
12299 [[|Article]]
12300 !! html/php
12301 [[Ns:Article (context)|Article]]
12302 !! end
12304 !! test
12305 pre-save transform: context links ("pipe trick") with namespace and comma
12306 !! options
12307 pst title=[[Ns:Somearticle, Context, Whatever]]
12308 !! wikitext
12309 [[|Article]]
12310 !! html/php
12311 [[Ns:Article, Context, Whatever|Article]]
12312 !! end
12314 !! test
12315 pre-save transform: context links ("pipe trick") with namespace, comma and parens
12316 !! options
12317 pst title=[[Ns:Somearticle, Context (context)]]
12318 !! wikitext
12319 [[|Article]]
12320 !! html/php
12321 [[Ns:Article (context)|Article]]
12322 !! end
12324 !! test
12325 pre-save transform: context links ("pipe trick") with namespace, parens and comma
12326 !! options
12327 pst title=[[Ns:Somearticle (IGNORED), Context]]
12328 !! wikitext
12329 [[|Article]]
12330 !! html/php
12331 [[Ns:Article, Context|Article]]
12332 !! end
12334 !! test
12335 pre-save transform: context links ("pipe trick") with full-width parens and no space (Japanese and Chinese style, bug 30149)
12336 !! options
12338 !! wikitext
12339 [[Article(context)|]]
12340 [[Bar:Article(context)|]]
12341 [[:Bar:Article(context)|]]
12342 [[|Article(context)]]
12343 [[Bar:X(Y)Z|]]
12344 [[:Bar:X(Y)Z|]]
12345 !! html/php
12346 [[Article(context)|Article]]
12347 [[Bar:Article(context)|Article]]
12348 [[:Bar:Article(context)|Article]]
12349 [[Article(context)]]
12350 [[Bar:X(Y)Z|X(Y)Z]]
12351 [[:Bar:X(Y)Z|X(Y)Z]]
12352 !! end
12354 !! test
12355 pre-save transform: context links ("pipe trick") with full-width parens and space (Japanese and Chinese style, bug 30149)
12356 !! options
12358 !! wikitext
12359 [[Article (context)|]]
12360 [[Bar:Article (context)|]]
12361 [[:Bar:Article (context)|]]
12362 [[|Article (context)]]
12363 [[Bar:X (Y) Z|]]
12364 [[:Bar:X (Y) Z|]]
12365 !! html/php
12366 [[Article (context)|Article]]
12367 [[Bar:Article (context)|Article]]
12368 [[:Bar:Article (context)|Article]]
12369 [[Article (context)]]
12370 [[Bar:X (Y) Z|X (Y) Z]]
12371 [[:Bar:X (Y) Z|X (Y) Z]]
12372 !! end
12374 !! test
12375 pre-save transform: context links ("pipe trick") with parens and no space (Korean style, bug 30149)
12376 !! options
12378 !! wikitext
12379 [[Article(context)|]]
12380 [[Bar:Article(context)|]]
12381 [[:Bar:Article(context)|]]
12382 [[|Article(context)]]
12383 [[Bar:X(Y)Z|]]
12384 [[:Bar:X(Y)Z|]]
12385 !! html/php
12386 [[Article(context)|Article]]
12387 [[Bar:Article(context)|Article]]
12388 [[:Bar:Article(context)|Article]]
12389 [[Article(context)]]
12390 [[Bar:X(Y)Z|X(Y)Z]]
12391 [[:Bar:X(Y)Z|X(Y)Z]]
12392 !! end
12394 !! test
12395 pre-save transform: context links ("pipe trick") with commas (bug 21660)
12396 !! options
12398 !! wikitext
12399 [[Article (context), context|]]
12400 [[Article (context),context|]]
12401 [[Bar:Article (context), context|]]
12402 [[Bar:Article (context),context|]]
12403 [[:Bar:Article (context), context|]]
12404 [[:Bar:Article (context),context|]]
12405 !! html/php
12406 [[Article (context), context|Article]]
12407 [[Article (context),context|Article]]
12408 [[Bar:Article (context), context|Article]]
12409 [[Bar:Article (context),context|Article]]
12410 [[:Bar:Article (context), context|Article]]
12411 [[:Bar:Article (context),context|Article]]
12412 !! end
12414 !! test
12415 pre-save transform: trim trailing empty lines
12416 !! options
12418 !! wikitext
12419 Empty lines are trimmed
12424 !! html/php
12425 Empty lines are trimmed
12426 !! end
12428 !! test
12429 pre-save transform: Signature expansion
12430 !! options
12432 !! wikitext
12433 * ~~~
12434 * <noinclude>~~~</noinclude>
12435 * <includeonly>~~~</includeonly>
12436 * <onlyinclude>~~~</onlyinclude>
12437 !! html/php
12438 * [[Special:Contributions/127.0.0.1|127.0.0.1]]
12439 * <noinclude>[[Special:Contributions/127.0.0.1|127.0.0.1]]</noinclude>
12440 * <includeonly>[[Special:Contributions/127.0.0.1|127.0.0.1]]</includeonly>
12441 * <onlyinclude>[[Special:Contributions/127.0.0.1|127.0.0.1]]</onlyinclude>
12442 !! end
12445 !! test
12446 pre-save transform: Signature expansion in nowiki tags (bug 93)
12447 !! options
12448 pst disabled
12449 !! wikitext
12450 Shall not expand:
12452 <nowiki>~~~~</nowiki>
12454 <includeonly><nowiki>~~~~</nowiki></includeonly>
12456 <noinclude><nowiki>~~~~</nowiki></noinclude>
12458 <onlyinclude><nowiki>~~~~</nowiki></onlyinclude>
12460 {{subst:Foo}} shall be converted to FOO
12462 As well as inside noinclude/onlyinclude
12463 <noinclude>{{subst:Foo}}</noinclude>
12464 <onlyinclude>{{subst:Foo}}</onlyinclude>
12466 But not inside includeonly
12467 <includeonly>{{subst:Foo}}</includeonly>
12468 !! html/php
12469 Shall not expand:
12471 <nowiki>~~~~</nowiki>
12473 <includeonly><nowiki>~~~~</nowiki></includeonly>
12475 <noinclude><nowiki>~~~~</nowiki></noinclude>
12477 <onlyinclude><nowiki>~~~~</nowiki></onlyinclude>
12479 FOO shall be converted to FOO
12481 As well as inside noinclude/onlyinclude
12482 <noinclude>FOO</noinclude>
12483 <onlyinclude>FOO</onlyinclude>
12485 But not inside includeonly
12486 <includeonly>{{subst:Foo}}</includeonly>
12487 !! end
12489 !! test
12490 Parsoid: Recognize nowiki with trailing space in tags
12491 !! options
12492 parsoid=wt2html
12493 !! wikitext
12494 <nowiki ><div>[[foo]]</nowiki >
12496 a<nowiki / >b
12498 c<nowiki />d
12500 e<nowiki/ >f
12501 !! html
12502 <p><span typeof="mw:Nowiki">&lt;div&gt;[[foo]]</span></p>
12503 <p>ab</p>
12504 <p>cd</p>
12505 <p>ef</p>
12506 !! end
12508 !! test
12509 Parsoid: Recognize nowiki with odd capitalization
12510 !! options
12511 parsoid=wt2html
12512 !! wikitext
12513 <noWikI ><div>[[foo]]</Nowiki >
12514 !! html
12515 <p><span typeof="mw:Nowiki">&lt;div&gt;[[foo]]</span></p>
12516 !! end
12519 !! test
12520 Parsoid: Escape nowiki with trailing space in tags
12521 !! options
12522 parsoid=html2wt
12523 !! html/parsoid
12524 <p>&lt;nowiki &gt; foo &lt/nowiki ></p>
12525 <p>a&lt;nowiki /&gt;b</p>
12526 <p>c&lt;nowiki/ &gt;d</p>
12527 !! wikitext
12528 &lt;nowiki &gt; foo &lt;/nowiki &gt;
12530 a&lt;nowiki /&gt;b
12532 c&lt;nowiki/ &gt;d
12533 !! end
12535 !! test
12536 Parsoid: Escape weird noWikI capitalizations
12537 !! options
12538 parsoid=html2wt
12539 !! html/parsoid
12540 <p>&lt;noWikI &gt; foo &lt/NoWikI ></p>
12541 !! wikitext
12542 &lt;noWikI &gt; foo &lt;/NoWikI &gt;
12543 !! end
12546 ### Message transform tests
12548 !! test
12549 message transform: magic variables
12550 !! options
12552 !! wikitext
12553 {{SITENAME}}
12554 !! html
12555 MediaWiki
12556 !! end
12558 !! test
12559 message transform: should not transform wiki markup
12560 !! options
12562 !! wikitext
12563 ''test''
12564 !! html
12565 ''test''
12566 !! end
12568 !! test
12569 message transform: <noinclude> in transcluded template (bug 4926)
12570 !! options
12572 !! wikitext
12573 {{Includes}}
12574 !! html
12575 Foobar
12576 !! end
12578 !! test
12579 message transform: <onlyinclude> in transcluded template (bug 4926)
12580 !! options
12582 !! wikitext
12583 {{Includes2}}
12584 !! html
12586 !! end
12588 !! test
12589 {{#special:}} page name, known
12590 !! options
12592 !! wikitext
12593 {{#special:Recentchanges}}
12594 !! html
12595 Special:RecentChanges
12596 !! end
12598 !! test
12599 {{#special:}} page name with subpage, known
12600 !! options
12602 !! wikitext
12603 {{#special:Recentchanges/param}}
12604 !! html
12605 Special:RecentChanges/param
12606 !! end
12608 !! test
12609 {{#special:}} page name, unknown
12610 !! options
12612 !! wikitext
12613 {{#special:foobar nonexistent}}
12614 !! html
12615 Special:Foobar nonexistent
12616 !! end
12618 !! test
12619 {{#speciale:}} page name, known
12620 !! options
12622 !! wikitext
12623 {{#speciale:Recentchanges}}
12624 !! html
12625 Special:RecentChanges
12626 !! end
12628 !! test
12629 {{#speciale:}} page name with subpage, known
12630 !! options
12632 !! wikitext
12633 {{#speciale:Recentchanges/param}}
12634 !! html
12635 Special:RecentChanges/param
12636 !! end
12638 !! test
12639 {{#speciale:}} page name, unknown
12640 !! options
12642 !! wikitext
12643 {{#speciale:foobar nonexistent}}
12644 !! html
12645 Special:Foobar_nonexistent
12646 !! end
12649 ### Images
12651 ### For Parsoid-specific tests, see
12652 #### https://www.mediawiki.org/wiki/Parsoid/MediaWiki_DOM_spec#Images
12654 !! test
12655 Simple image
12656 !! options
12657 parsoid=wt2html,wt2wt,html2html
12658 !! wikitext
12659 [[Image:foobar.jpg]]
12660 !! html/php
12661 <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>
12662 </p>
12663 !! html/parsoid
12664 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
12665 !! end
12667 !! test
12668 Simple image (using File: namespace, now canonical)
12669 !! wikitext
12670 [[File:Foobar.jpg]]
12671 !! html/php
12672 <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>
12673 </p>
12674 !! html/parsoid
12675 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
12676 !! end
12678 !! test
12679 Right-aligned image
12680 !! wikitext
12681 [[File:Foobar.jpg|right]]
12682 !! html/php
12683 <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>
12685 !! html/parsoid
12686 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
12687 !! end
12689 !! test
12690 Image with caption
12691 !! wikitext
12692 [[File:Foobar.jpg|right|Caption text]]
12693 !! html/php
12694 <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>
12696 !! html/parsoid
12697 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption text</figcaption></figure>
12698 !! end
12700 !! test
12701 Image with caption, bug 53312 #1
12702 !! wikitext
12703 [[File:Foobar.jpg|right|Caption page stuff]]
12704 !! html/php
12705 <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>
12707 !! html/parsoid
12708 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption page stuff</figcaption></figure>
12709 !! end
12711 !! test
12712 Image with caption, bug 53312 #2
12713 !! wikitext
12714 [[File:Foobar.jpg|right|Caption page=]]
12715 !! html/php
12716 <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>
12718 !! html/parsoid
12719 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption page=</figcaption></figure>
12720 !! end
12722 !! test
12723 Image with caption, bug 53312 #3
12724 !! wikitext
12725 [[File:Foobar.jpg|right|Caption page=stuff]]
12726 !! html/php
12727 <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>
12729 !! html/parsoid
12730 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption page=stuff</figcaption></figure>
12731 !! end
12733 !! test
12734 Allow empty links in image captions (Bug 60753)
12735 !! options
12736 thumbsize=220
12737 !! wikitext
12738 [[File:Foobar.jpg|thumb|Caption [[Link1]]
12739 [[]]
12740 [[Link2]]
12742 !! html/php
12743 <div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Caption <a href="/index.php?title=Link1&amp;action=edit&amp;redlink=1" class="new" title="Link1 (page does not exist)">Link1</a> [[]] <a href="/index.php?title=Link2&amp;action=edit&amp;redlink=1" class="new" title="Link2 (page does not exist)">Link2</a></div></div></div>
12745 !! html/parsoid
12746 <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"}]}'><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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>Caption <a rel="mw:WikiLink" href="./Link1" title="Link1" data-parsoid='{"stx":"simple","a":{"href":"./Link1"},"sa":{"href":"Link1"}}'>Link1</a>
12747 [[]]
12748 <a rel="mw:WikiLink" href="./Link2" title="Link2" data-parsoid='{"stx":"simple","a":{"href":"./Link2"},"sa":{"href":"Link2"}}'>Link2</a>
12749 </figcaption></figure>
12750 !! end
12752 !! test
12753 Titles in unlinked images (T23454)
12754 !! wikitext
12755 [[File:Foobar.jpg|link=|stuff]]
12756 !! html/php
12757 <p><img alt="stuff" src="http://example.com/images/3/3a/Foobar.jpg" title="stuff" width="1941" height="220" />
12758 </p>
12759 !! end
12761 !! test
12762 Link with empty target
12763 !! wikitext
12764 [[]]
12765 !! html
12766 <p>[[]]
12767 </p>
12768 !! end
12770 !! test
12771 Image with link trail
12772 !! wikitext
12773 Linktrails should not work for images: [[File:Foobar.jpg]]s
12774 !! html/php
12775 <p>Linktrails should not work for images: <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>s
12776 </p>
12777 !! html/parsoid
12778 <p>Linktrails should not work for images: <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span>s</p>
12779 !! end
12781 !! test
12782 Image with empty attribute
12783 !! options
12784 parsoid=wt2html,wt2wt,html2html
12785 !! wikitext
12786 [[File:Foobar.jpg|right||Caption text]]
12787 !! html/php
12788 <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>
12790 !! html/parsoid
12791 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption text</figcaption></figure>
12792 !! end
12794 !! test
12795 1. Block image with individual attributes from templates
12796 !! wikitext
12797 [[File:Foobar.jpg|thumb|{{echo|137px}}|This is a caption]]
12798 !! html/php
12799 <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"></a></div>This is a caption</div></div></div>
12801 !! html/parsoid
12802 <figure typeof="mw:Image/Thumb mw:ExpandedAttrs" about="#mwt2" data-mw='{"attribs":[["thumbnail",{"html":"thumb"}],["width",{"html":"&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=\"{&amp;quot;pi&amp;quot;:[[{&amp;quot;k&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;spc&amp;quot;:[&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;]}]],&amp;quot;dsr&amp;quot;:[24,38,null,null]}\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;echo&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Echo&amp;quot;},&amp;quot;params&amp;quot;:{&amp;quot;1&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;137px&amp;quot;}},&amp;quot;i&amp;quot;:0}}]}\">137px&lt;/span>"}]]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="16" width="137"/></a><figcaption>This is a caption</figcaption></figure>
12803 !! end
12805 !! test
12806 2. Block Image with individual attributes from templates
12807 !! wikitext
12808 [[File:Foobar.jpg|{{echo|thumb}}|{{echo|137px}}|This is a caption]]
12809 !! html/php
12810 <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"></a></div>This is a caption</div></div></div>
12812 !! html/parsoid
12813 <figure typeof="mw:Image/Thumb mw:ExpandedAttrs" about="#mwt3" data-mw='{"attribs":[["thumbnail",{"html":"&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=\"{&amp;quot;pi&amp;quot;:[[{&amp;quot;k&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;spc&amp;quot;:[&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;]}]],&amp;quot;dsr&amp;quot;:[18,32,null,null]}\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;echo&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Echo&amp;quot;},&amp;quot;params&amp;quot;:{&amp;quot;1&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;thumb&amp;quot;}},&amp;quot;i&amp;quot;:0}}]}\">thumb&lt;/span>"}],["width",{"html":"&lt;span about=\"#mwt2\" typeof=\"mw:Transclusion\" data-parsoid=\"{&amp;quot;pi&amp;quot;:[[{&amp;quot;k&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;spc&amp;quot;:[&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;]}]],&amp;quot;dsr&amp;quot;:[33,47,null,null]}\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;echo&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Echo&amp;quot;},&amp;quot;params&amp;quot;:{&amp;quot;1&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;137px&amp;quot;}},&amp;quot;i&amp;quot;:0}}]}\">137px&lt;/span>"}]]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="16" width="137"/></a><figcaption>This is a caption</figcaption></figure>
12814 !! end
12816 !! test
12817 3. Inline image with individual attributes from templates
12818 !! wikitext
12819 [[File:Foobar.jpg|{{echo|50px}}]]
12820 !! html/php
12821 <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>
12822 </p>
12823 !! html/parsoid
12824 <p><span typeof="mw:Image mw:ExpandedAttrs" about="#mwt2" data-parsoid='{"optList":[{"ck":"width","ak":"{{echo|50px}}"}]}' data-mw='{"attribs":[["width",{"html":"&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=\"{&amp;quot;pi&amp;quot;:[[{&amp;quot;k&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;spc&amp;quot;:[&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;]}]],&amp;quot;dsr&amp;quot;:[18,31,null,null]}\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;echo&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Echo&amp;quot;},&amp;quot;params&amp;quot;:{&amp;quot;1&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;50px&amp;quot;}},&amp;quot;i&amp;quot;:0}}]}\">50px&lt;/span>"}]]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50"/></a></span></p>
12825 !! end
12827 ## Parsoid does not provide editing support for images where templates produce multiple image attributes.
12828 ## To signal this, we add a 'mw:Placeholder' type to such images. This could change in the future.
12829 !! test
12830 Image with multiple attributes from the same template
12831 !! wikitext
12832 [[File:Foobar.jpg|{{image_attribs}}]]
12833 !! html/php
12834 <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>
12836 !! html/parsoid
12837 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption text</figcaption></figure>
12838 !! end
12840 !! test
12841 Image with link tails
12842 !! options
12843 thumbsize=220
12844 !! wikitext
12845 123[[File:Foobar.jpg]]456
12846 123[[File:Foobar.jpg|right]]456
12847 123[[File:Foobar.jpg|thumb]]456
12848 !! html/php
12849 <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
12850 </p>
12851 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
12852 123<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div>456
12854 !! html/php+tidy
12855 <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>
12856 <p>123</p>
12857 <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>
12858 <p>456 123</p>
12859 <div class="thumb tright">
12860 <div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>
12861 <div class="thumbcaption">
12862 <div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>
12863 </div>
12864 </div>
12865 </div>
12866 <p>456</p>
12867 !! html/parsoid
12868 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span>456</p>
12869 <p>123</p><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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure><p>456</p>
12870 <p>123</p><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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a></figure><p>456</p>
12871 !! end
12873 !! test
12874 Image with multiple captions -- only last one is accepted
12875 !! wikitext
12876 [[File:Foobar.jpg|right|Caption1 - ignored|[[Caption2]] - ignored|Caption3 - accepted]]
12877 !! html/php
12878 <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>
12880 !! html/parsoid
12881 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption3 - accepted</figcaption></figure>
12882 !! end
12884 !! test
12885 Image with multiple widths -- use last
12886 !! wikitext
12887 [[File:Foobar.jpg|200px|300px|caption]]
12888 !! html/php
12889 <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>
12890 </p>
12891 !! html/parsoid
12892 <p><span typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="34" width="300"/></a></span></p>
12893 !! end
12895 !! test
12896 Image with multiple alignments -- use first (bug 48664)
12897 !! options
12898 thumbsize=220
12899 !! wikitext
12900 [[File:Foobar.jpg|thumb|left|right|center|caption]]
12902 [[File:Foobar.jpg|middle|text-top|caption]]
12903 !! html/php
12904 <div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
12905 <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>
12906 </p>
12907 !! html/parsoid
12908 <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/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
12909 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
12910 !! end
12912 !! test
12913 Image with width attribute at different positions
12914 !! wikitext
12915 [[File:Foobar.jpg|200px|right|Caption]]
12916 [[File:Foobar.jpg|right|200px|Caption]]
12917 [[File:Foobar.jpg|right|Caption|200px]]
12918 !! html/php
12919 <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>
12920 <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>
12921 <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>
12923 !! html/parsoid
12924 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption>Caption</figcaption></figure>
12925 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption>Caption</figcaption></figure>
12926 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption>Caption</figcaption></figure>
12927 !! end
12929 # a sad bit of backward-compatibility
12930 !! test
12931 Image with size specified with pxpx (bug 13500, 51628)
12932 !! options
12933 parsoid=wt2html,wt2wt,html2html
12934 !! wikitext
12935 [[File:Foobar.jpg|20pxpx]]
12936 [[File:Foobar.jpg|200x20pxpx]]
12937 !! html/php
12938 <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>
12939 <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>
12940 </p>
12941 !! html/parsoid
12942 <p><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="2" width="20"/></a></span> <span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/177px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="20" width="177"/></a></span></p>
12943 !! end
12945 !! test
12946 Image with link parameter, wiki target
12947 !! wikitext
12948 [[File:Foobar.jpg|link=Main Page]]
12949 !! html/php
12950 <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>
12951 </p>
12952 !! html/parsoid
12953 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
12954 !! end
12956 # parsoid bug 49293 (part 1)
12957 !! test
12958 Image with link parameter, URL target
12959 !! wikitext
12960 [[File:Foobar.jpg|link=http://example.com/]]
12961 !! html/php
12962 <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>
12963 </p>
12964 !! html/parsoid
12965 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
12966 !! end
12968 # parsoid bug 49293 (part 2)
12969 !! test
12970 Image with link parameter, protocol-less URL target
12971 !! wikitext
12972 [[File:Foobar.jpg|link=//example.com/]]
12973 !! html/php
12974 <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>
12975 </p>
12976 !! html/parsoid
12977 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
12978 !! end
12980 !! test
12981 Escaping non-block captions (T107435)
12982 !! options
12983 parsoid={
12984   "modes": ["wt2wt"],
12985   "changes": [
12986     ["[typeof~='mw:Image']", "attr", "data-mw", "{\"caption\": \"|\"}"]
12987   ]
12989 !! wikitext
12990 [[Image:Foobar.jpg|caption]]
12991 !! wikitext/edited
12992 [[Image:Foobar.jpg|<nowiki>|</nowiki>]]
12993 !! end
12995 # wgExternalLinkTarget not supported by Parsoid
12996 !! test
12997 Image with link parameter, wgExternalLinkTarget
12998 !! wikitext
12999 [[Image:foobar.jpg|link=http://example.com/]]
13000 !! config
13001 wgExternalLinkTarget='foobar'
13002 !! html/php
13003 <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>
13004 </p>
13005 !! end
13007 !! test
13008 Image with link parameter, wgNoFollowLinks set to false
13009 !! wikitext
13010 [[Image:foobar.jpg|link=http://example.com/]]
13011 !! config
13012 wgNoFollowLinks=false
13013 !! html
13014 <p><a href="http://example.com/"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
13015 </p>
13016 !! end
13018 !! test
13019 Image with link parameter, wgNoFollowDomainExceptions
13020 !! wikitext
13021 [[Image:foobar.jpg|link=http://example.com/]]
13022 !! config
13023 wgNoFollowDomainExceptions='example.com'
13024 !! html
13025 <p><a href="http://example.com/"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
13026 </p>
13027 !! end
13029 # wgExternalLinkTarget not supported by Parsoid
13030 !! test
13031 Image with link parameter, wgExternalLinkTarget, unnamed parameter
13032 !! wikitext
13033 [[Image:foobar.jpg|link=http://example.com/|Title]]
13034 !! config
13035 wgExternalLinkTarget='foobar'
13036 !! html/php
13037 <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>
13038 </p>
13039 !! end
13041 !! test
13042 Image with empty link parameter
13043 !! wikitext
13044 [[File:Foobar.jpg|link=]]
13045 !! html/php
13046 <p><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" />
13047 </p>
13048 !! html/parsoid
13049 <p><span class="mw-default-size" typeof="mw:Image"><span><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></span></span></p>
13050 !! end
13052 !! test
13053 Image with link parameter (wiki target) and unnamed parameter
13054 !! wikitext
13055 [[File:Foobar.jpg|link=Main_Page|Title]]
13056 !! html/php
13057 <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>
13058 </p>
13059 !! html/parsoid
13060 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
13061 !! end
13063 !! test
13064 Image with link parameter (URL target) and unnamed parameter
13065 !! wikitext
13066 [[File:Foobar.jpg|link=http://example.com/|Title]]
13067 !! html/php
13068 <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>
13069 </p>
13070 !! html/parsoid
13071 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
13072 !! end
13074 !! test
13075 Thumbnail image with link parameter
13076 !! options
13077 thumbsize=220
13078 parsoid=wt2html,wt2wt,html2html
13079 !! wikitext
13080 [[File:Foobar.jpg|thumb|link=http://example.com/|Title]]
13081 !! html/php
13082 <div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="http://example.com/"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
13084 !! html/parsoid
13085 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="http://example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>Title</figcaption></figure>
13086 !! end
13088 !! test
13089 Manually-specified thumbnail image
13090 !! options
13091 thumbsize=220
13092 !! wikitext
13093 [[File:Foobar.jpg|thumb=Thumb.png|Title]]
13094 !! html/php
13095 <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"></a></div>Title</div></div></div>
13097 !! html/parsoid
13098 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a><figcaption>Title</figcaption></figure>
13099 !! end
13101 !! test
13102 Manually-specified thumbnail image with explicit link to wiki page
13103 !! options
13104 thumbsize=220
13105 parsoid=wt2html,wt2wt,html2html
13106 !! wikitext
13107 [[File:Foobar.jpg|thumb=Thumb.png|link=Main_Page|Title]]
13108 !! html/php
13109 <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"></a></div>Title</div></div></div>
13111 !! html/parsoid
13112 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><a href="Main_Page"><img resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a><figcaption>Title</figcaption></figure>
13113 !! end
13115 !! test
13116 Manually-specified thumbnail image with explicit link to url
13117 !! options
13118 thumbsize=220
13119 parsoid=wt2html,wt2wt,html2html
13120 !! wikitext
13121 [[File:Foobar.jpg|thumb=Thumb.png|link=http://example.com|Title]]
13122 !! html/php
13123 <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"></a></div>Title</div></div></div>
13125 !! html/parsoid
13126 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><a href="http://example.com"><img resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a><figcaption>Title</figcaption></figure>
13127 !! end
13129 !! test
13130 Manually-specified thumbnail image with explicit no link
13131 !! options
13132 thumbsize=220
13133 parsoid=wt2html,wt2wt,html2html
13134 !! wikitext
13135 [[File:Foobar.jpg|thumb=Thumb.png|link=|Title]]
13136 !! html/php
13137 <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"></a></div>Title</div></div></div>
13139 !! html/parsoid
13140 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><span><img resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></span><figcaption>Title</figcaption></figure>
13141 !! end
13143 !! test
13144 Manually-specified thumbnail image with explicit link and alt text
13145 !! options
13146 thumbsize=220
13147 parsoid=wt2html,wt2wt,html2html
13148 !! wikitext
13149 [[File:Foobar.jpg|thumb=Thumb.png|link=Main_Page|alt=alttext|Title]]
13150 !! html/php
13151 <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"></a></div>Title</div></div></div>
13153 !! html/parsoid
13154 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><a href="Main_Page"><img alt="alttext" resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a><figcaption>Title</figcaption></figure>
13155 !! end
13157 !! test
13158 Image with frame and link
13159 !! options
13160 parsoid=wt2html,wt2wt,html2html
13161 !! wikitext
13162 [[File:Foobar.jpg|frame|left|This is a test image [[Main Page]]]]
13163 !! html/php
13164 <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>
13166 !! html/parsoid
13167 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>This is a test image <a rel="mw:WikiLink" href="Main_Page" title="Main Page">Main Page</a></figcaption></figure>
13168 !! end
13170 !! test
13171 Image with frame and link and explicit alt
13172 !! options
13173 parsoid=wt2html,wt2wt,html2html
13174 !! wikitext
13175 [[Image:Foobar.jpg|frame|left|This is a test image [[Main Page]]|alt=Altitude]]
13176 !! html/php
13177 <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>
13179 !! html/parsoid
13180 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>This is a test image <a rel="mw:WikiLink" href="Main_Page" title="Main Page">Main Page</a></figcaption></figure>
13181 !! end
13183 !! test
13184 Image with wiki markup in implicit alt
13185 !! wikitext
13186 [[Image:Foobar.jpg|testing '''bold''' in alt]]
13188 [[Image:Foobar.jpg|alt=testing '''bold''' in alt]]
13189 !! html/php
13190 <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>
13191 </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>
13192 </p>
13193 !! html/parsoid
13194 <p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"testing &lt;b data-parsoid=\"{&amp;quot;dsr&amp;quot;:[27,37,3,3]}\">bold&lt;/b> in alt"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"Image:Foobar.jpg"}}'/></a></span></p>
13195 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"alt":"testing bold in alt","resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"alt":"alt=testing &#39;&#39;&#39;bold&#39;&#39;&#39; in alt","resource":"Image:Foobar.jpg"}}'/></a></span></p>
13196 !! end
13198 !! test
13199 Alt image option should handle most kinds of wikitext without barfing
13200 !! wikitext
13201 [[Image:Foobar.jpg|thumb|This is the image caption|alt=This is a [[link]] and a {{echo|''bold template''}}.]]
13202 !! html/php
13203 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="This is a link and a bold template." 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"></a></div>This is the image caption</div></div></div>
13205 !! html/parsoid
13206 <figure class="mw-default-size" typeof="mw:Image/Thumb mw:ExpandedAttrs" about="#mwt2" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"This is the image caption"},{"ck":"alt","ak":"alt=This is a [[link]] and a {{echo|&#39;&#39;bold template&#39;&#39;}}."}]}' data-mw='{"attribs":[["thumbnail",{"html":"thumb"}],["alt",{"html":"alt=This is a &lt;a rel=\"mw:WikiLink\" href=\"./Link\" title=\"Link\" data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;simple&amp;quot;,&amp;quot;a&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;./Link&amp;quot;},&amp;quot;sa&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;link&amp;quot;},&amp;quot;dsr&amp;quot;:[65,73,2,2]}\">link&lt;/a> and a &lt;i about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=\"{&amp;quot;dsr&amp;quot;:[80,106,null,null],&amp;quot;pi&amp;quot;:[[{&amp;quot;k&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;spc&amp;quot;:[&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;]}]]}\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;echo&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Echo&amp;quot;},&amp;quot;params&amp;quot;:{&amp;quot;1&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;&#39;&#39;bold template&#39;&#39;&amp;quot;}},&amp;quot;i&amp;quot;:0}}]}\">bold template&lt;/i>."}]]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img alt="This is a link and a bold template." resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"alt":"This is a link and a bold template.","resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"alt":"alt=This is a [[link]] and a {{echo|&#39;&#39;bold template&#39;&#39;}}.","resource":"Image:Foobar.jpg"}}'/></a><figcaption>This is the image caption</figcaption></figure>
13207 !! end
13209 ###################
13210 # Conflicting image format options.
13211 # First option specified should 'win'.
13212 # All three cases in each test should be identical.
13214 !! test
13215 Image with 'frameless' first.
13216 !! options
13217 parsoid=wt2html,wt2wt,html2html
13218 !! wikitext
13219 [[File:Foobar.jpg|frameless|caption]]
13221 [[File:Foobar.jpg|frameless|frame|caption]]
13223 [[File:Foobar.jpg|frameless|thumb|caption]]
13224 !! html/php
13225 <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" 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>
13226 </p><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" 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>
13227 </p><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" 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>
13228 </p>
13229 !! html/parsoid
13230 <p><span class="mw-default-size" typeof="mw:Image/Frameless" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a></span></p>
13231 <p><span class="mw-default-size" typeof="mw:Image/Frameless" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a></span></p>
13232 <p><span class="mw-default-size" typeof="mw:Image/Frameless" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a></span></p>
13233 !! end
13235 !! test
13236 Image with 'frame' first.
13237 !! options
13238 parsoid=wt2html,wt2wt,html2html
13239 !! wikitext
13240 [[File:Foobar.jpg|frame|caption]]
13241 [[File:Foobar.jpg|frame|frameless|caption]]
13242 [[File:Foobar.jpg|frame|thumb|caption]]
13243 !! html/php
13244 <div class="thumb tright"><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">caption</div></div></div>
13245 <div class="thumb tright"><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">caption</div></div></div>
13246 <div class="thumb tright"><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">caption</div></div></div>
13248 !! html/parsoid
13249 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>caption</figcaption></figure>
13250 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>caption</figcaption></figure>
13251 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>caption</figcaption></figure>
13252 !! end
13254 !! test
13255 Image with 'thumb' first.
13256 !! options
13257 parsoid=wt2html,wt2wt,html2html
13258 !! wikitext
13259 [[File:Foobar.jpg|thumb|caption]]
13260 [[File:Foobar.jpg|thumb|frameless|caption]]
13261 [[File:Foobar.jpg|thumb|frame|caption]]
13262 !! html/php
13263 <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"></a></div>caption</div></div></div>
13264 <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"></a></div>caption</div></div></div>
13265 <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"></a></div>caption</div></div></div>
13267 !! html/parsoid
13268 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
13269 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
13270 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
13271 !! end
13273 ###################
13274 # Image sizing.
13275 # See https://www.mediawiki.org/wiki/Help:Images#Size_and_frame
13276 # and https://phabricator.wikimedia.org/T64258
13277 # Foobar has actual size of 1941x220
13278 # 1. Thumbs & frameless always reduce, can't be enlarged unless it's
13279 #    a scalable format.
13280 # 2. Framed images always ignore size options; always render at default size.
13281 # 3. "Unspecified format" and border are the only types which can be
13282 #    enlarged.
13284 !! test
13285 Image: "unspecified format" and border enlarge
13286 !! options
13287 parsoid=wt2html,wt2wt,html2html
13288 !! wikitext
13289 [[File:Foobar.jpg|2000px]]
13291 [[File:Foobar.jpg|border|2000px]]
13292 !! html/php
13293 <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>
13294 </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>
13295 </p>
13296 !! html/parsoid
13297 <p><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="227" width="2000"/></a></span></p>
13298 <p><span class="mw-image-border" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="227" width="2000"/></a></span></p>
13299 !! end
13301 !! test
13302 Image: "unspecified format" and border reduce
13303 !! options
13304 parsoid=wt2html,wt2wt,html2html
13305 !! wikitext
13306 [[File:Foobar.jpg|1000px]]
13308 [[File:Foobar.jpg|border|1000px]]
13309 !! html/php
13310 <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>
13311 </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>
13312 </p>
13313 !! html/parsoid
13314 <p><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="113" width="1000"/></a></span></p>
13315 <p><span class="mw-image-border" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="113" width="1000"/></a></span></p>
13316 !! end
13318 !! test
13319 Image: thumbs reduce
13320 !! options
13321 parsoid=wt2html,wt2wt,html2html
13322 !! wikitext
13323 [[File:Foobar.jpg|thumb|50px]]
13324 !! html/php
13325 <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"></a></div></div></div></div>
13327 !! html/parsoid
13328 <figure 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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50"/></a></figure>
13329 !! end
13331 !! test
13332 Image: bitmap thumbs can't be enlarged past original size, but vector can.
13333 !! options
13334 parsoid=wt2html,wt2wt,html2html
13335 !! wikitext
13336 [[File:Foobar.jpg|thumb|2000px]]
13338 [[File:Foobar.svg|thumb|2000px]]
13339 !! html/php
13340 <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"></a></div></div></div></div>
13341 <div class="thumb tright"><div class="thumbinner" style="width:2002px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" width="2000" height="1500" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div></div></div></div>
13343 !! html/parsoid
13344 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
13345 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/240px-Foobar.svg" data-file-width="240" data-file-height="180" data-file-type="drawing" height="1500" width="2000"/></a></figure>
13346 !! end
13348 !! test
13349 Image: frameless can reduce in size
13350 !! options
13351 parsoid=wt2html,wt2wt,html2html
13352 !! wikitext
13353 [[File:Foobar.jpg|frameless|50px]]
13354 !! html/php
13355 <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>
13356 </p>
13357 !! html/parsoid
13358 <p><span typeof="mw:Image/Frameless"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50"/></a></span></p>
13359 !! end
13361 !! test
13362 Image: bitmap frameless can't be enlarged past original size, but vector can
13363 !! options
13364 parsoid=wt2html,wt2wt,html2html
13365 !! wikitext
13366 [[File:Foobar.jpg|frameless|2000px]]
13368 [[File:Foobar.svg|frameless|2000px]]
13369 !! html/php
13370 <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>
13371 </p><p><a href="/wiki/File:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" width="2000" height="1500" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png 2x" /></a>
13372 </p>
13373 !! html/parsoid
13374 <p><span typeof="mw:Image/Frameless"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
13375 <p><span typeof="mw:Image/Frameless"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/240px-Foobar.svg" data-file-width="240" data-file-height="180" data-file-type="drawing" height="1500" width="2000"/></a></span></p>
13376 !! end
13378 !! test
13379 Image: framed images are always unscaled.
13380 !! options
13381 parsoid=wt2html,wt2wt,html2html
13382 !! wikitext
13383 [[File:Foobar.jpg|frame]]
13385 [[File:Foobar.jpg|frame|50px]]
13387 [[File:Foobar.jpg|frame|50x50px]]
13389 [[File:Foobar.jpg|frame|2000px]]
13390 !! html/php
13391 <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>
13392 <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>
13393 <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>
13394 <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>
13396 !! html/parsoid
13397 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
13398 <figure typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
13399 <figure typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
13400 <figure typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
13401 !! end
13403 ###################
13405 !! test
13406 Link to image page- image page normally doesn't exists, hence edit link
13407 Add test with existing image page
13408 #<p><a href="/wiki/File:Test" title="Image:Test">Image:test</a>
13409 !! wikitext
13410 [[:Image:test]]
13411 !! html
13412 <p><a href="/index.php?title=File:Test&amp;action=edit&amp;redlink=1" class="new" title="File:Test (page does not exist)">Image:test</a>
13413 </p>
13414 !! end
13416 !! test
13417 bug 18784  Link to non-existent image page with caption should use caption as link text
13418 !! wikitext
13419 [[:Image:test|caption]]
13420 !! html
13421 <p><a href="/index.php?title=File:Test&amp;action=edit&amp;redlink=1" class="new" title="File:Test (page does not exist)">caption</a>
13422 </p>
13423 !! end
13425 !! test
13426 Frameless image caption with a free URL
13427 !! wikitext
13428 [[File:Foobar.jpg|http://example.com]]
13429 !! html/php
13430 <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>
13431 </p>
13432 !! html/parsoid
13433 <p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"&lt;a rel=\"mw:ExtLink\" href=\"http://example.com\" data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;url&amp;quot;,&amp;quot;dsr&amp;quot;:[18,36,0,0]}\">http://example.com&lt;/a>"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
13434 !! end
13436 !! test
13437 Thumbnail image caption with a free URL
13438 !! options
13439 thumbsize=220
13440 !! wikitext
13441 [[File:Foobar.jpg|thumb|http://example.com]]
13442 !! html/php
13443 <div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
13445 !! html/parsoid
13446 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" href="http://example.com">http://example.com</a></figcaption></figure>
13447 !! end
13449 !! test
13450 Thumbnail image caption with a free URL and explicit alt
13451 !! options
13452 thumbsize=220
13453 parsoid=wt2html,wt2wt,html2html
13454 !! wikitext
13455 [[File:Foobar.jpg|thumb|http://example.com|alt=Alteration]]
13456 !! html/php
13457 <div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Alteration" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
13459 !! html/parsoid
13460 <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/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" href="http://example.com">http://example.com</a></figcaption></figure>
13461 !! end
13463 !! test
13464 SVG thumbnails with no language set
13465 !! options
13466 !! wikitext
13467 [[File:Foobar.svg|thumb|caption]]
13468 !! html/php
13469 <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="135" 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"></a></div>caption</div></div></div>
13471 !! html/parsoid
13472 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/220px-Foobar.svg" data-file-width="240" data-file-height="180" data-file-type="drawing" height="165" width="220"/></a><figcaption>caption</figcaption></figure>
13473 !! end
13475 !! test
13476 SVG thumbnails with language de
13477 !! options
13478 parsoid=wt2html,wt2wt,html2html
13479 !! wikitext
13480 [[File:Foobar.svg|thumb|caption|lang=de]]
13481 !! html/php
13482 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=File:Foobar.svg&amp;lang=de" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png" width="180" height="135" 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"></a></div>caption</div></div></div>
13484 !! html/parsoid
13485 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/220px-Foobar.svg" lang="de" data-file-width="240" data-file-height="180" data-file-type="drawing" height="165" width="220"/></a><figcaption>caption</figcaption></figure>
13486 !! end
13488 !! test
13489 SVG thumbnails with invalid language code
13490 !! options
13491 parsoid=wt2html,wt2wt,html2html
13492 !! wikitext
13493 [[File:Foobar.svg|thumb|caption|lang=invalid.language.code]]
13494 !! html/php
13495 <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="135" 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"></a></div>lang=invalid.language.code</div></div></div>
13497 !! html/parsoid
13498 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/f/ff/Foobar.svg" data-file-width="240" data-file-height="180" data-file-type="drawing" height="165" width="220"/></a><figcaption>lang=invalid.language.code</figcaption></figure>
13499 !! end
13501 !! test
13502 BUG 1887: A ISBN with a thumbnail
13503 !! wikitext
13504 [[File:Foobar.jpg|thumb|ISBN 1235467890]]
13505 !! html/php
13506 <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"></a></div><a href="/wiki/Special:BookSources/1235467890" class="internal mw-magiclink-isbn">ISBN 1235467890</a></div></div></div>
13508 !! html/parsoid
13509 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="./Special:BookSources/1235467890" rel="mw:WikiLink">ISBN 1235467890</a></figcaption></figure>
13510 !! end
13512 !! test
13513 BUG 1887: A RFC with a thumbnail
13514 !! wikitext
13515 [[File:Foobar.jpg|thumb|This is RFC 12354]]
13516 !! html/php
13517 <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"></a></div>This is <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc12354">RFC 12354</a></div></div></div>
13519 !! html/parsoid
13520 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>This is <a href="//tools.ietf.org/html/rfc12354" rel="mw:ExtLink">RFC 12354</a></figcaption></figure>
13521 !! end
13523 !! test
13524 BUG 1887: A mailto link with a thumbnail
13525 !! wikitext
13526 [[File:Foobar.jpg|thumb|Please mailto:nobody@example.com]]
13527 !! html/php
13528 <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"></a></div>Please <a rel="nofollow" class="external free" href="mailto:nobody@example.com">mailto:nobody@example.com</a></div></div></div>
13530 !! html/parsoid
13531 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>Please <a rel="mw:ExtLink" href="mailto:nobody@example.com">mailto:nobody@example.com</a></figcaption></figure>
13532 !! end
13534 # Pending resolution to bug 368
13535 !! test
13536 BUG 648: Frameless image caption with a link
13537 !! wikitext
13538 [[File:Foobar.jpg|text with a [[link]] in it]]
13539 !! html/php
13540 <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>
13541 </p>
13542 !! html/parsoid
13543 <p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"text with a &lt;a rel=\"mw:WikiLink\" href=\"./Link\" title=\"Link\" data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;simple&amp;quot;,&amp;quot;a&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;./Link&amp;quot;},&amp;quot;sa&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;link&amp;quot;},&amp;quot;dsr&amp;quot;:[30,38,2,2]}\">link&lt;/a> in it"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
13544 !! end
13546 !! test
13547 BUG 648: Frameless image caption with a link (suffix)
13548 !! wikitext
13549 [[File:Foobar.jpg|text with a [[link]]foo in it]]
13550 !! html/php
13551 <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>
13552 </p>
13553 !! html/parsoid
13554 <p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"text with a &lt;a rel=\"mw:WikiLink\" href=\"./Link\" title=\"Link\" data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;simple&amp;quot;,&amp;quot;a&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;./Link&amp;quot;},&amp;quot;sa&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;link&amp;quot;},&amp;quot;dsr&amp;quot;:[30,41,2,5],&amp;quot;tail&amp;quot;:&amp;quot;foo&amp;quot;}\">linkfoo&lt;/a> in it"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
13555 !! end
13557 !! test
13558 BUG 648: Frameless image caption with an interwiki link
13559 !! wikitext
13560 [[File:Foobar.jpg|text with a [[MeatBall:Link]] in it]]
13561 !! html/php
13562 <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>
13563 </p>
13564 !! html/parsoid
13565 <p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"text with a &lt;a rel=\"mw:ExtLink\" href=\"http://www.usemod.com/cgi-bin/mb.pl?Link\" title=\"meatball:Link\" data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;simple&amp;quot;,&amp;quot;a&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;http://www.usemod.com/cgi-bin/mb.pl?Link&amp;quot;},&amp;quot;sa&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;MeatBall:Link&amp;quot;},&amp;quot;isIW&amp;quot;:true,&amp;quot;dsr&amp;quot;:[30,47,2,2]}\">MeatBall:Link&lt;/a> in it"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
13566 !! end
13568 !! test
13569 BUG 648: Frameless image caption with a piped interwiki link
13570 !! wikitext
13571 [[File:Foobar.jpg|text with a [[MeatBall:Link|link]] in it]]
13572 !! html/php
13573 <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>
13574 </p>
13575 !! html/parsoid
13576 <p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"text with a &lt;a rel=\"mw:ExtLink\" href=\"http://www.usemod.com/cgi-bin/mb.pl?Link\" title=\"meatball:Link\" data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;piped&amp;quot;,&amp;quot;a&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;http://www.usemod.com/cgi-bin/mb.pl?Link&amp;quot;},&amp;quot;sa&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;MeatBall:Link&amp;quot;},&amp;quot;isIW&amp;quot;:true,&amp;quot;dsr&amp;quot;:[30,52,16,2]}\">link&lt;/a> in it"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
13577 !! end
13579 !! test
13580 T107474: Frameless image caption with <nowiki>
13581 !! wikitext
13582 [[File:Foobar.jpg|<nowiki>text with a [[MeatBall:Link|link]] in it</nowiki>]]
13583 !! html/parsoid
13584 <p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"&lt;span typeof=\"mw:Nowiki\" data-parsoid=\"{&amp;quot;dsr&amp;quot;:[18,75,8,9]}\">text with a [[MeatBall:Link|link]] in it&lt;/span>"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
13585 !! end
13587 !! test
13588 Escape HTML special chars in image alt text
13589 !! wikitext
13590 [[File:Foobar.jpg|& < > "]]
13591 !! html/php
13592 <p><a href="/wiki/File:Foobar.jpg" class="image" title="&amp; &lt; &gt; &quot;"><img alt="&amp; &lt; &gt; &quot;" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
13593 </p>
13594 !! html/parsoid
13595 <p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"&amp;amp; &amp;lt; &amp;gt; \""}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
13596 !! end
13598 !! test
13599 BUG 499: Alt text should have &#1234;, not &amp;1234;
13600 !! wikitext
13601 [[File:Foobar.jpg|&#9792;]]
13602 !! html/php
13603 <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>
13604 </p>
13605 !! html/parsoid
13606 <p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"&lt;span typeof=\"mw:Entity\" data-parsoid=\"{&amp;quot;src&amp;quot;:&amp;quot;&amp;amp;#9792;&amp;quot;,&amp;quot;srcContent&amp;quot;:&amp;quot;♀&amp;quot;,&amp;quot;dsr&amp;quot;:[18,25,null,null]}\">♀&lt;/span>"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
13607 !! end
13609 !! test
13610 Broken image caption with link
13611 !! options
13612 parsoid=wt2html,wt2wt,html2html
13613 !! wikitext
13614 [[Image:Foobar.jpg|thumb|This is a broken caption. But [[Main Page|this]] is just an ordinary link.
13615 !! html/php
13616 <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.
13617 </p>
13618 !! html/parsoid
13619 <p>[[Image:Foobar.jpg|thumb|This is a broken caption. But <a rel="mw:WikiLink" href="Main_Page" title="Main Page">this</a> is just an ordinary link.</p>
13620 !! end
13622 !! test
13623 Image caption containing another image
13624 !! wikitext
13625 [[File:Foobar.jpg|thumb|This is a caption with another [[File:Thumb.png|image]] inside it!]]
13626 !! html/php
13627 <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"></a></div>This is a caption with another <a href="/wiki/File:Thumb.png" class="image" title="image"><img alt="image" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" /></a> inside it!</div></div></div>
13629 !! html/parsoid
13630 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>This is a caption with another <span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"image"}'><a href="./File:Thumb.png"><img resource="./File:Thumb.png" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a></span> inside it!</figcaption></figure>
13631 !! end
13633 !! test
13634 Image: caption containing a newline
13635 !! wikitext
13636 [[File:Foobar.jpg|This
13637 *is some text]]
13638 !! html/php
13639 <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>
13640 </p>
13641 !! html/parsoid
13642 <p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"This\n*is some text"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
13643 !!end
13645 !!test
13646 Image: caption containing leading space
13647 (The leading space should not trigger nowiki escaping in wt2wt mode)
13648 !! wikitext
13649 [[File:Foobar.jpg|thumb| bar]]
13650 !! html/php
13651 <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"></a></div>bar</div></div></div>
13653 !! html/parsoid
13654 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption> bar</figcaption></figure>
13655 !!end
13657 !! test
13658 Image: caption containing a table
13659 !! options
13660 parsoid=wt2html,wt2wt,html2html
13661 !! wikitext
13662 [[Image:Foobar.jpg|thumb|200px|This is an example image thumbnail caption with a table
13664 ! Foo !! Bar
13666 | Foo1 || Bar1
13668 and some more text.]]
13669 !! html/php
13670 <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"></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>
13672 !! html/parsoid
13673 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption>This is an example image thumbnail caption with a table
13674 <table>
13675 <tbody>
13676 <tr><th>Foo </th><th>Bar</th></tr>
13677 <tr>
13678 <td>Foo1 </td>
13679 <td>Bar1</td></tr></tbody></table>and some more text.</figcaption></figure>
13680 !! end
13682 !! test
13683 Bug 3090: External links other than http: in image captions
13684 !! wikitext
13685 [[File:Foobar.jpg|thumb|200x200px|This caption has [irc://example.net irc] and [https://example.com Secure] ext links in it.]]
13686 !! html/php
13687 <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"></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>
13689 !! html/parsoid
13690 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" 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>
13691 !! end
13693 !! test
13694 Custom class
13695 !! options
13696 parsoid=wt2html,wt2wt,html2html
13697 !! wikitext
13698 [[Image:foobar.jpg|a|class=b]]
13699 !! html/php
13700 <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>
13701 </p>
13702 !! html/parsoid
13703 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
13704 !! end
13706 !! test
13707 Localized image handling (1).
13708 !! options
13709 parsoid=wt2html,wt2wt,html2html
13710 language=es
13711 !! wikitext
13712 [[Archivo:Foobar.jpg|izquierda|enlace=foo|caption]]
13713 !! html/php
13714 <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>
13716 !! html/parsoid
13717 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>caption</figcaption></figure>
13718 !! end
13720 !! test
13721 Localized image handling (2).
13722 !! options
13723 thumbsize=220
13724 parsoid=wt2html,wt2wt,html2html
13725 language=es
13726 !! wikitext
13727 [[Archivo:Foobar.jpg|miniatura|izquierda|enlace=foo|caption]]
13728 !! html/php
13729 <div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/Foo" title="Foo"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/Archivo:Foobar.jpg" class="internal" title="Aumentar"></a></div>caption</div></div></div>
13731 !! html/parsoid
13732 <figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="Foo"><img resource="./Archivo:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
13733 !! end
13735 !! test
13736 "border", "frameless" and "class" attributes on an image.
13737 !! options
13738 thumbsize=220
13739 parsoid=wt2html,wt2wt,html2html
13740 !! wikitext
13741 [[File:Foobar.jpg|frameless|border|class=extra|caption]]
13742 !! html/php
13743 <p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="extra thumbborder" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>
13744 </p>
13745 !! html/parsoid
13746 <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/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a></span></p>
13747 !! end
13749 # Note that 'right' is the default alignment, despite the misspelled 'righ' below
13750 !! test
13751 Invalid image attributes (bug 62500)
13752 !! options
13753 thumbsize=220
13754 parsoid=wt2html,wt2wt,html2html
13755 !! wikitext
13756 [[File:Foobar.jpg|thumb|float|left|caption]]
13758 [[File:Foobar.jpg|thumb|righ|caption]]
13760 [[File:Foobar.jpg|bogus1|thumb|bogus2|left|bogus3|caption]]
13761 !! html/php
13762 <div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
13763 <div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
13764 <div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
13766 !! html/parsoid
13767 <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/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
13768 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
13769 <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/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
13770 !! end
13772 !! article
13773 File:Barfoo.jpg
13774 !! text
13775 #REDIRECT [[File:Barfoo.jpg]]
13776 !! endarticle
13778 # FIXME: Parsoid should run this test -- but we'd need to teach the
13779 # mockAPI about the redirected Barfoo.jpg image.
13780 !! test
13781 Redirected image
13782 !! wikitext
13783 [[Image:Barfoo.jpg]]
13784 !! html/php
13785 <p><a href="/wiki/File:Barfoo.jpg" title="File:Barfoo.jpg">File:Barfoo.jpg</a>
13786 </p>
13787 !! end
13789 !! test
13790 Missing image with uploads disabled
13791 !! options
13792 wgEnableUploads=0
13793 !! wikitext
13794 [[File:Foobaz.jpg]]
13795 !! html/php
13796 <p><a href="/wiki/File:Foobaz.jpg" title="File:Foobaz.jpg">File:Foobaz.jpg</a>
13797 </p>
13798 !! html/parsoid
13799 <p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}]}'><a href="./File:Foobaz.jpg"><img resource="./File:Foobaz.jpg" src="./Special:FilePath/Foobaz.jpg" height="220" width="220"/></a></span></p>
13800 !! end
13802 # Parsoid-specific testing for images
13803 # https://www.mediawiki.org/wiki/Parsoid/MediaWiki_DOM_spec#Images
13804 # Currently imperfect due to a flaw in the Parsoid testrunner
13805 # Work in progress
13806 # THESE TESTS SHOULD BE MOVED UP and merged with the php-specific
13807 # image tests.
13809 !! test
13810 Parsoid-specific image handling - simple image with size and middle alignment
13811 !! wikitext
13812 [[File:Foobar.jpg|middle|50px]]
13813 !! html/parsoid
13814 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50"/></a></span></p>
13815 !! end
13817 !! test
13818 Parsoid-specific image handling - simple image with size, middle alignment,
13819 non-standard namespace alias
13820 !! options
13821 parsoid=wt2wt,wt2html,html2html
13822 !! wikitext
13823 [[Image:Foobar.jpg|middle|50px]]
13824 !! html/parsoid
13825 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50"/></a></span></p>
13826 !! end
13828 !! test
13829 Parsoid-specific image handling - simple image with size and middle alignment
13830 (existing content)
13831 !! wikitext
13832 [[File:Foobar.jpg|50px|middle]]
13833 !! html/parsoid
13834 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"6","width":"50"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></span></p>
13835 !! end
13837 !! test
13838 Parsoid-specific image handling - simple image with size and middle alignment
13839 and non-standard namespace name
13840 !! options
13841 parsoid=wt2html,wt2wt,html2html
13842 !! wikitext
13843 [[Image:Foobar.jpg|50px|middle]]
13844 !! html/parsoid
13845 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50"/></a></span></p>
13846 !! end
13848 !! test
13849 Parsoid-specific image handling - simple image with both sizes, a baseline alignment, and a caption
13850 !! wikitext
13851 [[File:Foobar.jpg|500x10px|baseline|caption]]
13852 !! html/parsoid
13853 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="10" width="89" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"10","width":"89"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></span></p>
13854 !! end
13856 !! test
13857 Parsoid-specific image handling - simple image with border and size spec
13858 !! wikitext
13859 [[File:Foobar.jpg|50px|border|caption]]
13860 !! html/parsoid
13861 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"6","width":"50"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></span></p>
13862 !! end
13864 !! test
13865 Parsoid-specific image handling - thumbnail with halign, valign, and caption
13866 !! wikitext
13867 [[File:Foobar.jpg|left|baseline|thumb|caption content]]
13868 !! html/parsoid
13869 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption content</figcaption></figure>
13870 !! end
13872 !! test
13873 Parsoid-specific image handling - thumbnail with halign, valign, and caption
13874 (existing content)
13875 !! wikitext
13876 [[File:Foobar.jpg|thumb|left|baseline|caption content]]
13877 !! html/parsoid
13878 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" 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>
13879 !! end
13881 !! test
13882 Parsoid-specific image handling - thumbnail with specific size, halign, valign, and caption
13883 !! wikitext
13884 [[Image:Foobar.jpg|right|middle|thumb|50x50px|caption]]
13885 !! html/parsoid
13886 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50"/></a><figcaption>caption</figcaption></figure>
13887 !! end
13889 !! test
13890 Parsoid-specific image handling - thumbnail with specific size, halign,
13891 valign, and caption (existing content)
13892 !! wikitext
13893 [[File:Foobar.jpg|thumb|50x50px|right|middle|caption]]
13894 !! html/parsoid
13895 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" 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>
13896 !! end
13898 !! test
13899 Parsoid-specific image handling - framed image with specific size and caption
13900 (size is ignored)
13901 !! options
13902 parsoid=wt2html,wt2wt,html2html
13903 !! wikitext
13904 [[File:Foobar.jpg|frame|500x50px|caption]]
13905 !! html/parsoid
13906 <figure typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>caption</figcaption></figure>
13907 !! end
13909 !! test
13910 Parsoid-specific image handling - framed image with specific size, halign, valign, and caption
13911 (size is ignored)
13912 !! options
13913 parsoid=wt2html,wt2wt,html2html
13914 !! wikitext
13915 [[File:Foobar.jpg|left|baseline|frame|500x50px|caption]]
13916 !! html/parsoid
13917 <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/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>caption</figcaption></figure>
13918 !! end
13920 !! test
13921 Parsoid-specific image handling - frameless image with specific size, border, and caption
13922 !! wikitext
13923 [[File:Foobar.jpg|frameless|442x50px|border|caption]]
13924 !! html/parsoid
13925 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="50" width="442" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"50","width":"442"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></span></p>
13926 !! end
13928 !! test
13929 Parsoid-specific image handling - simple image with a formatted caption
13930 !! wikitext
13931 [[File:Foobar.jpg|<table><tr><td>a</td><td>b</td></tr><tr><td>c</td></tr></table>]]
13932 !! html/parsoid
13933 <p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"&lt;table data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;html&amp;quot;,&amp;quot;dsr&amp;quot;:[18,81,7,8]}\">&lt;tbody data-parsoid=\"{&amp;quot;dsr&amp;quot;:[25,73,0,0]}\">&lt;tr data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;html&amp;quot;,&amp;quot;dsr&amp;quot;:[25,54,4,5]}\">&lt;td data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;html&amp;quot;,&amp;quot;dsr&amp;quot;:[29,39,4,5]}\">a&lt;/td>&lt;td data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;html&amp;quot;,&amp;quot;dsr&amp;quot;:[39,49,4,5]}\">b&lt;/td>&lt;/tr>&lt;tr data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;html&amp;quot;,&amp;quot;dsr&amp;quot;:[54,73,4,5]}\">&lt;td data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;html&amp;quot;,&amp;quot;dsr&amp;quot;:[58,68,4,5]}\">c&lt;/td>&lt;/tr>&lt;/tbody>&lt;/table>"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
13934 !! end
13936 !! test
13937 Parsoid-specific image handling - caption with a template in it
13938 !! wikitext
13939 [[File:Foobar.jpg|thumb|200x23px|This caption has a {{echo|transclusion}} in it.]]
13940 !! html/parsoid
13941 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"></a><figcaption>This caption has a <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;transclusion&quot;}},&quot;i&quot;:0}}]}">transclusion</span> in it.</figcaption></figure>
13942 !! end
13944 !! test
13945 Parsoid-specific image handling - caption with unbalanced tags in it
13946 !! options
13947 parsoid=wt2html,wt2wt,html2html
13948 !! wikitext
13950 [[File:Foobar.jpg|thumb|200x200px|This caption has a <center>unbalanced tag in it.]]
13952 !! html/parsoid
13953 <p>foo</p>
13954 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption>This caption has a <center>unbalanced tag in it.</center></figcaption></figure>
13955 <p>bar</p>
13956 !! end
13958 !! test
13959 Parsoid-specific image handling - empty caption (1)
13960 !! options
13961 parsoid=wt2html,wt2wt
13962 !! wikitext
13963 [[File:Foobar.jpg|thumb|]]
13964 !! html/parsoid
13965 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption></figcaption></figure>
13966 !! end
13968 # empty captions don't get serialized unless we're in the "round trip" case
13969 !! test
13970 Parsoid-specific image handling - empty caption (2)
13971 !! options
13972 parsoid=html2wt
13973 !! html/parsoid
13974 <figure class="mw-default-size" typeof="mw:Image/Thumb">
13975   <a href="./File:Foobar.jpg">
13976     <img resource="./File:Foobar.jpg"
13977          src="//example.com/images/3/3a/Foobar.jpg"
13978          data-file-width="1941" data-file-height="220" data-file-type="bitmap"
13979          height="25" width="220"/>
13980   </a>
13981   <figcaption></figcaption>
13982 </figure>
13983 !! wikitext
13984 [[File:Foobar.jpg|thumb]]
13985 !! end
13987 !! test
13988 Parsoid-specific image handling - whitespace caption
13989 !! wikitext
13990 [[File:Foobar.jpg|thumb| ]]
13991 !! html/parsoid
13992 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption> </figcaption></figure>
13993 !! end
13995 !! test
13996 Parsoid-specific image handling - lang option
13997 !! wikitext
13999 [[File:Foobar.svg|lang=de|caption]]
14001 !! html/parsoid
14002 <p>foo
14003 <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" data-file-width="240" data-file-height="180" data-file-type="drawing" height="180" width="240"/></a></span>
14004 bar</p>
14005 !! end
14007 ## Edge case bugs in Parsoid from T93580
14008 !! test
14009 T93580: 1. Templated <ref> inside block images
14010 !! wikitext
14011 [[File:Foobar.jpg|thumb|Caption with templated ref: {{echo|<ref>foo</ref>}}]]
14013 <references />
14014 !! html/parsoid
14015 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"Caption with templated ref: {{echo|&lt;ref>foo&lt;/ref>}}"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>Caption with templated ref: <span about="#mwt5" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Transclusion  mw:Extension/ref" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;ref>foo&lt;/ref>"}},"i":0}}]}'><a href="#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></span></figcaption></figure>
14017 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">foo</span></li></ol>
14018 !! end
14020 !! test
14021 T93580: 2. <ref> inside inline images
14022 !! wikitext
14023 [[File:Foobar.jpg|Undisplayed caption in inline image with ref: <ref>foo</ref>]]
14025 <references />
14026 !! html/parsoid
14027 <p><span class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"Undisplayed caption in inline image with ref: &lt;ref>foo&lt;/ref>"}]}' data-mw='{"caption":"Undisplayed caption in inline image with ref: &lt;span about=\"#mwt2\" class=\"mw-ref\" id=\"cite_ref-1\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid=\"{&amp;quot;dsr&amp;quot;:[64,78,5,6]}\" data-mw=\"{&amp;quot;name&amp;quot;:&amp;quot;ref&amp;quot;,&amp;quot;body&amp;quot;:{&amp;quot;id&amp;quot;:&amp;quot;mw-reference-text-cite_note-1&amp;quot;},&amp;quot;attrs&amp;quot;:{}}\">&lt;a href=\"#cite_note-1\" style=\"counter-reset: mw-Ref 1;\">&lt;span class=\"mw-reflink-text\">[1]&lt;/span>&lt;/a>&lt;/span>&lt;meta typeof=\"mw:Extension/ref/Marker\" about=\"#mwt2\" data-parsoid=\"{&amp;quot;group&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;foo&amp;quot;,&amp;quot;hasRefInRef&amp;quot;:false,&amp;quot;dsr&amp;quot;:[64,78,5,6],&amp;quot;tmp&amp;quot;:{}}\" data-mw=\"{}\">"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></span></p>
14029 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">foo</span></li></ol>
14030 !! end
14032 !! test
14033 T93580: 3. Templated <ref> inside inline images
14034 !! wikitext
14035 [[File:Foobar.jpg|Undisplayed caption in inline image with ref: {{echo|<ref>{{echo|foo}}</ref>}}]]
14037 <references />
14038 !! html/parsoid
14039 <p><span class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"Undisplayed caption in inline image with ref: {{echo|&lt;ref>{{echo|foo}}&lt;/ref>}}"}]}' data-mw='{"caption":"Undisplayed caption in inline image with ref: &lt;span about=\"#mwt2\" class=\"mw-ref\" id=\"cite_ref-1\" rel=\"dc:references\" typeof=\"mw:Transclusion  mw:Extension/ref\" data-parsoid=\"{&amp;quot;dsr&amp;quot;:[64,96,null,null],&amp;quot;pi&amp;quot;:[[{&amp;quot;k&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;spc&amp;quot;:[&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;]}]]}\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;echo&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Echo&amp;quot;},&amp;quot;params&amp;quot;:{&amp;quot;1&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;&lt;ref>{{echo|foo}}&lt;/ref>&amp;quot;}},&amp;quot;i&amp;quot;:0}}]}\">&lt;a href=\"#cite_note-1\" style=\"counter-reset: mw-Ref 1;\">&lt;span class=\"mw-reflink-text\">[1]&lt;/span>&lt;/a>&lt;/span>&lt;meta typeof=\"mw:Transclusion mw:Extension/ref/Marker\" about=\"#mwt2\" data-parsoid=\"{&amp;quot;group&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;foo&amp;quot;,&amp;quot;hasRefInRef&amp;quot;:false,&amp;quot;dsr&amp;quot;:[64,96,null,null],&amp;quot;pi&amp;quot;:[[{&amp;quot;k&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;spc&amp;quot;:[&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;]}]],&amp;quot;tmp&amp;quot;:{}}\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;echo&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Echo&amp;quot;},&amp;quot;params&amp;quot;:{&amp;quot;1&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;&lt;ref>{{echo|foo}}&lt;/ref>&amp;quot;}},&amp;quot;i&amp;quot;:0}}]}\">"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></span></p>
14041 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">foo</span></li></ol>
14042 !! end
14045 ### Subpages
14047 !! article
14048 Subpage test/subpage
14049 !! text
14051 !! endarticle
14053 !! test
14054 Subpage link
14055 !! options
14056 subpage title=[[Subpage test]]
14057 !! wikitext
14058 [[/subpage]]
14059 !! html
14060 <p><a href="/wiki/Subpage_test/subpage" title="Subpage test/subpage">/subpage</a>
14061 </p>
14062 !! end
14064 !! test
14065 Subpage noslash link
14066 !! options
14067 subpage title=[[Subpage test]]
14068 !! wikitext
14069 [[/subpage/]]
14070 !! html
14071 <p><a href="/wiki/Subpage_test/subpage" title="Subpage test/subpage">subpage</a>
14072 </p>
14073 !! end
14075 !! article
14076 Subpage test/1/2/subpage
14077 !! text
14078 blah
14079 !! endarticle
14081 !! test
14082 Relative subpage noslash link
14083 !! options
14084 parsoid=wt2wt,wt2html,html2html
14085 subpage title=[[Subpage test/1/2/3/4]]
14086 !! wikitext
14087 [[../../subpage/]]
14089 [[../../subpage]]
14090 !! html/php
14091 <p><a href="/wiki/Subpage_test/1/2/subpage" title="Subpage test/1/2/subpage">subpage</a>
14092 </p><p><a href="/wiki/Subpage_test/1/2/subpage" title="Subpage test/1/2/subpage">Subpage test/1/2/subpage</a>
14093 </p>
14094 !! html/parsoid
14095 <p><a rel="mw:WikiLink" href="Subpage_test/1/2/subpage" title="Subpage test/1/2/subpage">subpage</a></p>
14096 <p><a rel="mw:WikiLink" href="Subpage_test/1/2/subpage" title="Subpage test/1/2/subpage">Subpage_test/1/2/subpage</a></p>
14097 !! end
14099 !! test
14100 Parsoid: dot-slash prefixed wikilinks
14101 !! wikitext
14102 [[./foo]]
14104 [[././bar]]
14106 [[././baz/]]
14107 !! html/php
14108 <p>[[./foo]]
14109 </p><p>[[././bar]]
14110 </p><p>[[././baz/]]
14111 </p>
14112 !! html/parsoid
14113 <p>[[./foo]]
14114 </p><p>[[././bar]]
14115 </p><p>[[././baz/]]
14116 </p>
14117 !! end
14119 !! test
14120 Render invalid page names as plain text (bug 51090)
14121 !! wikitext
14122 [[./../foo|bar]]
14123 [[foo�|bar]]
14124 [[foo/.|bar]]
14125 [[foo/..|bar]]
14126 [[foo~~~bar]]
14127 [[foo>bar]]
14128 [[foo[bar]]
14129 [[.]]
14130 [[..]]
14131 [[foo././bar]]
14133 [[{{echo|./../foo}}|bar]]
14134 [[{{echo|foo/.}}|bar]]
14135 [[{{echo|foo/..}}|bar]]
14136 [[{{echo|foo~~~~bar}}]]
14137 [[{{echo|foo>bar}}]]
14138 [[{{echo|foo././bar}}]]
14139 [[{{echo|foo{bar}}]]
14140 [[{{echo|foo}bar}}]]
14141 [[{{echo|foo[bar}}]]
14142 [[{{echo|foo]bar}}]]
14143 [[{{echo|foo<bar}}]]
14144 !!html/php
14145 <p>[[./../foo|bar]]
14146 [[foo�|bar]]
14147 [[foo/.|bar]]
14148 [[foo/..|bar]]
14149 [[foo~~~bar]]
14150 [[foo&gt;bar]]
14151 [[foo[bar]]
14152 [[.]]
14153 [[..]]
14154 [[foo././bar]]
14155 </p><p>[[./../foo|bar]]
14156 [[foo/.|bar]]
14157 [[foo/..|bar]]
14158 [[foo~~~~bar]]
14159 [[foo&gt;bar]]
14160 [[foo././bar]]
14161 [[foo{bar]]
14162 [[foo}bar]]
14163 [[foo[bar]]
14164 [[foo]bar]]
14165 [[foo&lt;bar]]
14166 </p>
14167 !!html/parsoid
14168 <p>[[./../foo|bar]]
14169 [[foo�|bar]]
14170 [[foo/.|bar]]
14171 [[foo/..|bar]]
14172 [[foo~~~bar]]
14173 [[foo>bar]]
14174 [[foo[bar]]
14175 [[.]]
14176 [[..]]
14177 [[foo././bar]]</p>
14179 <p>[[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"./../foo"}},"i":0}}]}'>./../foo</span>|bar]]
14180 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo/."}},"i":0}}]}'>foo/.</span>|bar]]
14181 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo/.."}},"i":0}}]}'>foo/..</span>|bar]]
14182 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo~~~~bar"}},"i":0}}]}'>foo~~~~bar</span>]]
14183 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo>bar"}},"i":0}}]}'>foo>bar</span>]]
14184 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo././bar"}},"i":0}}]}'>foo././bar</span>]]
14185 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo{bar"}},"i":0}}]}'>foo{bar</span>]]
14186 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo}bar"}},"i":0}}]}'>foo}bar</span>]]
14187 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo[bar"}},"i":0}}]}'>foo[bar</span>]]
14188 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo]bar"}},"i":0}}]}'>foo]bar</span>]]
14189 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo&lt;bar"}},"i":0}}]}'>foo&lt;bar</span>]]</p>
14190 !!end
14192 !! test
14193 Disabled subpages
14194 !! wikitext
14195 [[/subpage]]
14196 !! html
14197 <p><a href="/index.php?title=/subpage&amp;action=edit&amp;redlink=1" class="new" title="/subpage (page does not exist)">/subpage</a>
14198 </p>
14199 !! end
14201 !! test
14202 BUG 561: {{/Subpage}}
14203 !! options
14204 subpage title=[[Page]]
14205 !! wikitext
14206 {{/Subpage}}
14207 !! html
14208 <p><a href="/index.php?title=Page/Subpage&amp;action=edit&amp;redlink=1" class="new" title="Page/Subpage (page does not exist)">Page/Subpage</a>
14209 </p>
14210 !! end
14213 ### Categories
14215 !! article
14216 Category:MediaWiki User's Guide
14217 !! text
14218 blah
14219 !! endarticle
14221 !! test
14222 Link to category
14223 !! wikitext
14224 [[:Category:MediaWiki User's Guide]]
14225 !! html
14226 <p><a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User's Guide">Category:MediaWiki User's Guide</a>
14227 </p>
14228 !! end
14230 !! test
14231 Simple category
14232 !! options
14234 !! wikitext
14235 [[Category:MediaWiki User's Guide]]
14236 !! html
14237 <a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User's Guide">MediaWiki User's Guide</a>
14238 !! end
14240 !! test
14241 PAGESINCATEGORY invalid title fatal (r33546 fix)
14242 !! wikitext
14243 {{PAGESINCATEGORY:<bogus>}}
14244 !! html
14245 <p>0
14246 </p>
14247 !! end
14249 !! test
14250 Category with different sort key
14251 !! options
14253 !! wikitext
14254 [[Category:MediaWiki User's Guide|Foo]]
14255 !! html
14256 <a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User's Guide">MediaWiki User's Guide</a>
14257 !! end
14259 !! test
14260 Category with identical sort key
14261 !! options
14263 !! wikitext
14264 [[Category:MediaWiki User's Guide|MediaWiki User's Guide]]
14265 !! html
14266 <a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User's Guide">MediaWiki User's Guide</a>
14267 !! end
14269 !! test
14270 Category with empty sort key
14271 !! options
14274 !! wikitext
14275 [[Category:MediaWiki User's Guide|]]
14276 !! html/php
14277 [[Category:MediaWiki User's Guide|MediaWiki User's Guide]]
14278 !! end
14280 !! test
14281 Category with empty sort key and parentheses
14282 !! options
14285 !! wikitext
14286 [[Category:Foo (bar)|]]
14287 !! html/php
14288 [[Category:Foo (bar)|Foo]]
14289 !! end
14291 ## We used to, but no longer wt2wt this test since the default serializer
14292 ## will normalize all categories to serialize on their own line.
14293 ## This wikitext usage is going to be fairly uncommon in production and
14294 ## selser will take care of preserving formatting in those scenarios.
14295 !! test
14296 Category with link tail
14297 !! options
14300 parsoid=wt2html
14301 !! wikitext
14302 123[[Category:Foo]]456
14303 !! html/php
14304 123[[Category:Foo]]456
14305 !! html/parsoid
14306 <p>123<link rel="mw:PageProp/Category" href="Category:Foo"/>456</p>
14307 !! end
14309 !! test
14310 Category with template
14311 !! options
14314 !! wikitext
14315 [[Category:{{echo|Foo}}]]
14316 !! html/php
14317 [[Category:{{echo|Foo}}]]
14318 !! end
14320 !! test
14321 Category with template in sort key
14322 !! options
14325 !! wikitext
14326 [[Category:Foo|{{echo|Bar}}]]
14327 !! html/php
14328 [[Category:Foo|{{echo|Bar}}]]
14329 !! end
14331 !! test
14332 Category with template in sort key and title
14333 !! options
14336 !! wikitext
14337 [[Category:{{echo|Foo}}|{{echo|Bar}}]]
14338 !! html/php
14339 [[Category:{{echo|Foo}}|{{echo|Bar}}]]
14340 !! end
14342 ## We used to, but no longer wt2wt this test since the default serializer
14343 ## will normalize all categories to serialize on their own line.
14344 ## This wikitext usage is going to be fairly uncommon in production and
14345 ## selser will take care of preserving formatting in those scenarios.
14346 !! test
14347 Category / paragraph interactions
14348 !! options
14349 parsoid=wt2html
14350 !! wikitext
14351 Foo [[Category:Baz]] Bar
14353 Foo [[Category:Baz]]
14357 [[Category:Baz]]
14361 [[Category:Baz]] Bar
14364 [[Category:Baz]]
14365  [[Category:Baz]]
14366 [[Category:Baz]]
14369 [[Category:Baz]]
14370  [[Category:Baz]]
14371 [[Category:Baz]]
14373 [[Category:Baz]]
14374  {{echo|[[Category:Baz]]}}
14375 [[Category:Baz]]
14376 !! html/php
14377 <p>Foo Bar
14378 </p><p>Foo
14380 </p><p>Foo
14382 </p><p>Foo Bar
14383 </p><p>Foo
14385 </p>
14386 !! html/parsoid
14387 <p>Foo <link rel="mw:PageProp/Category" href="Category:Baz"/> Bar</p>
14388 <p>Foo <link rel="mw:PageProp/Category" href="Category:Baz"/> Bar</p>
14389 <p>Foo <link rel="mw:PageProp/Category" href="Category:Baz"/> Bar</p>
14390 <p>Foo <link rel="mw:PageProp/Category" href="Category:Baz"/> Bar</p>
14391 <p>Foo <link rel="mw:PageProp/Category" href="Category:Baz"/> <link rel="mw:PageProp/Category" href="Category:Baz"/> <link rel="mw:PageProp/Category" href="Category:Baz"/> Bar <link rel="mw:PageProp/Category" href="Category:Baz"/> <link rel="mw:PageProp/Category" href="Category:Baz"/> <link rel="mw:PageProp/Category" href="Category:Baz"/> <link rel="mw:PageProp/Category" href="Category:Baz"/> <link rel="mw:PageProp/Category" href="Category:Baz" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Category:Baz]]"}},"i":0}}]}'/></p>
14392 <link rel="mw:PageProp/Category" href="Category:Baz"/>
14393 !! end
14395 ## We used to, but no longer wt2wt this test since the default serializer
14396 ## will normalize all categories to serialize on their own line.
14397 ## This wikitext usage is going to be fairly uncommon in production and
14398 ## selser will take care of preserving formatting in those scenarios.
14400 ## The whitespace on the empty line is part of the test. Please do not delete
14401 !! test
14402 1. Categories and newlines: All preceding newlines should be suppressed (courtesy bug 87)
14403 !! options
14404 parsoid=wt2html
14405 !! wikitext
14406 This
14407    
14408 [[Category:Foo]] and this should be part of same paragraph (not an indent-pre)
14409    
14410 {{echo|[[Category:Foo]] and so should this!}}
14411 !! html/php
14412 <p>This and this should be part of same paragraph (not an indent-pre) and so should this!
14413 </p>
14414 !! html/parsoid
14415 <p>This
14416    
14417 <link rel="mw:PageProp/Category" href="./Category:Foo"/> and this should be part of same paragraph (not an indent-pre)
14418    
14419 <link rel="mw:PageProp/Category" href="./Category:Foo" about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Category:Foo]] and so should this!"}},"i":0}}]}'/><span about="#mwt1"> and so should this!</span></p>
14420 !! end
14422 ## Parsoid will not try to wt2wt this while preserving newlines because
14423 ## it suppresses excess newlines within list items -- and we don't want to
14424 ## introduce a special case just for categories, which is, in reality somewhat
14425 ## odd behavior -- categories are unlikely to be used in list items like this
14426 ## in top-level pages and are only likely to show up in template-generated
14427 ## list items where this RT-ing is a non-issue.
14429 ## The whitespace on the empty line is part of the test. Please do not delete
14430 !! test
14431 2. Categories and newlines: All preceding newlines should be suppressed (courtesy bug 87)
14432 !! options
14433 parsoid=wt2html
14434 !! wikitext
14435 * This
14436    
14437 [[Category:Foo]] and this should be part of the same list item
14438 * So should this
14440 {{echo|[[Category:Foo]] and this should be part of the same list item}}
14441 !! html
14442 <ul><li>This and this should be part of the same list item</li>
14443 <li>So should this and this should be part of the same list item</li></ul>
14444 !! html/parsoid
14445 <ul>
14446 <li>This <link rel="mw:PageProp/Category" href="./Category:Foo"/> and this should be part of the same list item</li>
14447 <li>So should this <link rel="mw:PageProp/Category" href="./Category:Foo" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Category:Foo]] and this should be part of the same list item"}},"i":0}}]}'/><span> and this should be part of the same list item</span></li>
14448 </ul>
14449 !! end
14451 ## Newlines and categories that follow the last item of a list
14452 ## are treated differently because this (list followed by categories)
14453 ## is an extremely common pattern on wikis.
14454 !! test
14455 3. Categories and newlines: newline suppression for last list item should RT properly
14456 !! wikitext
14457 * a
14458 * b 
14459    
14460 [[Category:Foo]]
14461    
14462 [[Category:Bar]]
14463 [[Category:Baz]]
14464 !! html/parsoid
14465 <ul><li> a</li>
14466 <li> b</li></ul> 
14467    
14468 <link rel="mw:PageProp/Category" href="./Category:Foo" data-parsoid='{"stx":"simple","a":{"href":"./Category:Foo"},"sa":{"href":"Category:Foo"}}'/>
14469    
14470 <link rel="mw:PageProp/Category" href="./Category:Bar" data-parsoid='{"stx":"simple","a":{"href":"./Category:Bar"},"sa":{"href":"Category:Bar"}}'/>
14471 <link rel="mw:PageProp/Category" href="./Category:Baz" data-parsoid='{"stx":"simple","a":{"href":"./Category:Baz"},"sa":{"href":"Category:Baz"}}'/>
14472 !! end
14474 !! test
14475 4. Categories and newlines: newline suppression for last list item should RT properly
14476 !! wikitext
14477 * a
14478 **** b
14480 [[Category:Foo]]
14481 !! html/parsoid
14482 <ul><li> a
14483 <ul><li><ul><li><ul><li> b</li></ul></li></ul></li></ul></li></ul>
14485 <link rel="mw:PageProp/Category" href="./Category:Foo" data-parsoid='{"stx":"simple","a":{"href":"./Category:Foo"},"sa":{"href":"Category:Foo"}}'/>
14486 !! end
14488 ## only wt2html for this to make sure the algo only applies to the rightmost path
14489 !! test
14490 5. Categories and newlines: migrateTrailingCategories dom pass should only run on the rightmost path of nested lists
14491 !! options
14492 parsoid=wt2html
14493 !! wikitext
14494 * a
14495 ** b
14496 [[Category:Foo]]
14497 * c
14498 ** d
14499 [[Category:Foo]]
14500 !! html/parsoid
14501 <ul><li> a
14502 <ul><li> b
14503 <link rel="mw:PageProp/Category" href="./Category:Foo" data-parsoid='{"stx":"simple","a":{"href":"./Category:Foo"},"sa":{"href":"Category:Foo"}}'/></li></ul></li>
14504 <li> c
14505 <ul><li> d</li></ul></li></ul>
14506 <link rel="mw:PageProp/Category" href="./Category:Foo" data-parsoid='{"stx":"simple","a":{"href":"./Category:Foo"},"sa":{"href":"Category:Foo"}}'/>
14507 !! end
14509 ## We used to, but no longer wt2wt this test since the default serializer
14510 ## will normalize all categories to serialize on their own line.
14511 ## This wikitext usage is going to be fairly uncommon in production and
14512 ## selser will take care of preserving formatting in those scenarios.
14513 !! test
14514 6. Categories and newlines: migrateTrailingCategories dom pass should not migrate categories not preceded by newlines
14515 !! options
14516 parsoid=wt2html
14517 !! wikitext
14518 * a [[Category:Foo]]
14519 !! html/parsoid
14520 <ul><li>a <link rel="mw:PageProp/Category" href="./Category:Foo" data-parsoid='{"stx":"simple","a":{"href":"./Category:Foo"},"sa":{"href":"Category:Foo"}}'/></li></ul>
14521 !! end
14523 # This test also demonstrates because of newline+category tunneling
14524 # through the list hander, template wrapping doesn't expand to the
14525 # containing list when the list item swallows the category.
14526 !! test
14527 7. Categories and newlines: migrateTrailingCategories dom pass should leave template content alone
14528 !! wikitext
14529 * {{echo|a
14530 [[Category:Foo]]}}
14531 !! html/parsoid
14532 <ul><li> <span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a\n[[Category:Foo]]"}},"i":0}}]}'>a
14533 </span><link rel="mw:PageProp/Category" href="./Category:Foo" about="#mwt1" data-parsoid='{"stx":"simple","a":{"href":"./Category:Foo"},"sa":{"href":"Category:Foo"}}'/></li></ul>
14534 !! end
14536 !! test
14537 8. Categories and newlines: migrateTrailingCategories dom pass should not get tripped by intervening templates
14538 !! wikitext
14539 * a
14541 {{echo|[[Category:Foo]]
14542 [[Category:Bar]]}}
14543 [[Category:Baz]]
14544 !! html/parsoid
14545 <ul><li> a</li></ul>
14547 <link rel="mw:PageProp/Category" href="./Category:Foo" about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"simple","a":{"href":"./Category:Foo"},"sa":{"href":"Category:Foo"},"pi":[[{"k":"1","spc":["","","",""]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Category:Foo]]\n[[Category:Bar]]"}},"i":0}}]}'/><span about="#mwt1">
14548 </span><link rel="mw:PageProp/Category" href="./Category:Bar" about="#mwt1" data-parsoid='{"stx":"simple","a":{"href":"./Category:Bar"},"sa":{"href":"Category:Bar"}}'/>
14549 <link rel="mw:PageProp/Category" href="./Category:Baz" data-parsoid='{"stx":"simple","a":{"href":"./Category:Baz"},"sa":{"href":"Category:Baz"}}'/>
14550 !! end
14552 !! test
14553 Parsoid: Serialize link to category page with colon escape
14554 !! options
14555 parsoid
14556 !! wikitext
14558 [[:Category:Foo]]
14559 [[:Category:Foo|Bar]]
14560 !! html
14562 <a rel="mw:WikiLink" href="./Category:Foo" title="Category:Foo">Category:Foo</a>
14563 <a rel="mw:WikiLink" href="./Category:Foo" title="Category:Foo">Bar</a>
14564 </p>
14565 !! end
14567 # We used to, but no longer wt2wt this test since the default serializer
14568 # will normalize all categories to serialize on their own line.
14569 # This wikitext usage is going to be fairly uncommon in production and
14570 # selser will take care of preventing whitespace insertion if this
14571 # occurs in an article.
14573 # html2html disabled for the same reason (whitespace insertion between
14574 # x and y).
14576 # html2wt disabled because it localizes the "Category" namespace.
14577 !! test
14578 Link prefix/suffixes aren't applied to category links
14579 !! options
14580 parsoid=wt2html
14581 language=is
14582 !! wikitext
14583 x[[Category:Foo]]y
14584 !! html/php
14585 <p>xy
14586 </p>
14587 !! html/parsoid
14588 <p>x<link rel="mw:PageProp/Category" href="./Flokkur:Foo" data-parsoid=""/>y</p>
14589 !! end
14591 !! test
14592 Parsoid: Serialize link to file page with colon escape
14593 !! options
14594 parsoid
14595 !! wikitext
14597 [[:File:Foo.png]]
14598 [[:File:Foo.png|Bar]]
14599 !! html
14601 <a rel="mw:WikiLink" href="./File:Foo.png" title="File:Foo.png">File:Foo.png</a>
14602 <a rel="mw:WikiLink" href="./File:Foo.png" title="File:Foo.png">Bar</a>
14603 </p>
14604 !! end
14606 !! test
14607 Parsoid: Serialize a genuine category link without colon escape
14608 !! options
14609 parsoid
14610 !! wikitext
14611 [[Category:Foo]]
14612 [[Category:Foo|Bar]]
14613 !! html
14614 <link rel="mw:PageProp/Category" href="./Category:Foo">
14615 <link rel="mw:PageProp/Category" href="./Category:Foo#Bar">
14616 !! end
14618 !! test
14619 Normalize hrefs properly before testing for invalid link targets (bug 70894)
14620 !! options
14621 parsoid=html2wt
14622 !! html/parsoid
14623 <link rel="mw:PageProp/Category" href="./Category:Toxine_bactérienne"/>
14624 !! wikitext
14625 [[Category:Toxine bactérienne]]
14626 !! end
14628 !! test
14629 Parsoid: Defaultsort
14630 !! wikitext
14631 {{DEFAULTSORT:Foo}}
14632 !! html/parsoid
14633 <meta property="mw:PageProp/categorydefaultsort" content="Foo"/>
14634 !! end
14636 !! test
14637 Parsoid: Defaultsort (template-generated)
14638 !! wikitext
14639 {{{{echo|DEFAULTSORT}}:Foo}}
14640 !! html/parsoid
14641 <meta property="mw:PageProp/categorydefaultsort" content="Foo" about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"dsr":[0,28,null,null],"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"{{echo|DEFAULTSORT}}:Foo"},"params":{},"i":0}}]}'/>
14642 !! end
14645 ### Inter-language links
14647 !! test
14648 Interlanguage links
14649 !! options
14651 !! wikitext
14652 [[es:Alimento]]
14653 [[fr:Nourriture]]
14654 [[zh:食品]]
14655 !! html/php
14656 es:Alimento fr:Nourriture zh:食品
14657 !! html/parsoid
14658 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Alimento"/>
14659 <link rel="mw:PageProp/Language" href="http://fr.wikipedia.org/wiki/Nourriture"/>
14660 <link rel="mw:PageProp/Language" href="http://zh.wikipedia.org/wiki/食品"/>
14661 !! end
14663 !! test
14664 Duplicate interlanguage links (bug 24502)
14665 !! options
14667 !! wikitext
14668 [[es:1]]
14669 [[es:2]]
14670 [[fr:1]]
14671 [[fr:2]]
14672 !! html/php
14673 es:1 fr:1
14674 !! html/parsoid
14675 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/1"/>
14676 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/2"/>
14677 <link rel="mw:PageProp/Language" href="http://fr.wikipedia.org/wiki/1"/>
14678 <link rel="mw:PageProp/Language" href="http://fr.wikipedia.org/wiki/2"/>
14679 !! end
14682 ### Sections
14684 !! test
14685 Basic section headings
14686 !! wikitext
14687 == Headline 1 ==
14688 Some text
14690 ==Headline 2==
14691 More
14692 ===Smaller headline===
14693 Blah blah
14694 !! html
14695 <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&amp;action=edit&amp;section=1" title="Edit section: Headline 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14696 <p>Some text
14697 </p>
14698 <h2><span class="mw-headline" id="Headline_2">Headline 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Headline 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14699 <p>More
14700 </p>
14701 <h3><span class="mw-headline" id="Smaller_headline">Smaller headline</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: Smaller headline">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
14702 <p>Blah blah
14703 </p>
14704 !! end
14706 !! test
14707 Section headings with TOC
14708 !! wikitext
14709 == Headline 1 ==
14710 === Subheadline 1 ===
14711 ===== Skipping a level =====
14712 ====== Skipping a level ======
14714 == Headline 2 ==
14715 Some text
14716 ===Another headline===
14717 !! html
14718 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
14719 <ul>
14720 <li class="toclevel-1 tocsection-1"><a href="#Headline_1"><span class="tocnumber">1</span> <span class="toctext">Headline 1</span></a>
14721 <ul>
14722 <li class="toclevel-2 tocsection-2"><a href="#Subheadline_1"><span class="tocnumber">1.1</span> <span class="toctext">Subheadline 1</span></a>
14723 <ul>
14724 <li class="toclevel-3 tocsection-3"><a href="#Skipping_a_level"><span class="tocnumber">1.1.1</span> <span class="toctext">Skipping a level</span></a>
14725 <ul>
14726 <li class="toclevel-4 tocsection-4"><a href="#Skipping_a_level_2"><span class="tocnumber">1.1.1.1</span> <span class="toctext">Skipping a level</span></a></li>
14727 </ul>
14728 </li>
14729 </ul>
14730 </li>
14731 </ul>
14732 </li>
14733 <li class="toclevel-1 tocsection-5"><a href="#Headline_2"><span class="tocnumber">2</span> <span class="toctext">Headline 2</span></a>
14734 <ul>
14735 <li class="toclevel-2 tocsection-6"><a href="#Another_headline"><span class="tocnumber">2.1</span> <span class="toctext">Another headline</span></a></li>
14736 </ul>
14737 </li>
14738 </ul>
14739 </div>
14741 <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&amp;action=edit&amp;section=1" title="Edit section: Headline 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14742 <h3><span class="mw-headline" id="Subheadline_1">Subheadline 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Subheadline 1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
14743 <h5><span class="mw-headline" id="Skipping_a_level">Skipping a level</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: Skipping a level">edit</a><span class="mw-editsection-bracket">]</span></span></h5>
14744 <h6><span class="mw-headline" id="Skipping_a_level_2">Skipping a level</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: Skipping a level">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
14745 <h2><span class="mw-headline" id="Headline_2">Headline 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: Headline 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14746 <p>Some text
14747 </p>
14748 <h3><span class="mw-headline" id="Another_headline">Another headline</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=6" title="Edit section: Another headline">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
14750 !! end
14752 !! test
14753 TOC anchors don't collide
14754 !! wikitext
14755 __FORCETOC__
14756 == Headline 2 ==
14757 == Headline ==
14758 == Headline 2 ==
14759 == Headline ==
14760 !! html/php
14761 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
14762 <ul>
14763 <li class="toclevel-1 tocsection-1"><a href="#Headline_2"><span class="tocnumber">1</span> <span class="toctext">Headline 2</span></a></li>
14764 <li class="toclevel-1 tocsection-2"><a href="#Headline"><span class="tocnumber">2</span> <span class="toctext">Headline</span></a></li>
14765 <li class="toclevel-1 tocsection-3"><a href="#Headline_2_2"><span class="tocnumber">3</span> <span class="toctext">Headline 2</span></a></li>
14766 <li class="toclevel-1 tocsection-4"><a href="#Headline_3"><span class="tocnumber">4</span> <span class="toctext">Headline</span></a></li>
14767 </ul>
14768 </div>
14770 <h2><span class="mw-headline" id="Headline_2">Headline 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Headline 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14771 <h2><span class="mw-headline" id="Headline">Headline</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Headline">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14772 <h2><span class="mw-headline" id="Headline_2_2">Headline 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: Headline 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14773 <h2><span class="mw-headline" id="Headline_3">Headline</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: Headline">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14775 !! end
14777 # perl -e 'print "="x$_," Level $_ heading","="x$_,"\n" for 1..10'
14778 !! test
14779 Handling of sections up to level 6 and beyond
14780 !! wikitext
14781 = Level 1 Heading=
14782 == Level 2 Heading==
14783 === Level 3 Heading===
14784 ==== Level 4 Heading====
14785 ===== Level 5 Heading=====
14786 ====== Level 6 Heading======
14787 ======= Level 7 Heading=======
14788 ======== Level 8 Heading========
14789 ========= Level 9 Heading=========
14790 ========== Level 10 Heading==========
14791 !! html
14792 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
14793 <ul>
14794 <li class="toclevel-1 tocsection-1"><a href="#Level_1_Heading"><span class="tocnumber">1</span> <span class="toctext">Level 1 Heading</span></a>
14795 <ul>
14796 <li class="toclevel-2 tocsection-2"><a href="#Level_2_Heading"><span class="tocnumber">1.1</span> <span class="toctext">Level 2 Heading</span></a>
14797 <ul>
14798 <li class="toclevel-3 tocsection-3"><a href="#Level_3_Heading"><span class="tocnumber">1.1.1</span> <span class="toctext">Level 3 Heading</span></a>
14799 <ul>
14800 <li class="toclevel-4 tocsection-4"><a href="#Level_4_Heading"><span class="tocnumber">1.1.1.1</span> <span class="toctext">Level 4 Heading</span></a>
14801 <ul>
14802 <li class="toclevel-5 tocsection-5"><a href="#Level_5_Heading"><span class="tocnumber">1.1.1.1.1</span> <span class="toctext">Level 5 Heading</span></a>
14803 <ul>
14804 <li class="toclevel-6 tocsection-6"><a href="#Level_6_Heading"><span class="tocnumber">1.1.1.1.1.1</span> <span class="toctext">Level 6 Heading</span></a></li>
14805 <li class="toclevel-6 tocsection-7"><a href="#.3D_Level_7_Heading.3D"><span class="tocnumber">1.1.1.1.1.2</span> <span class="toctext">= Level 7 Heading=</span></a></li>
14806 <li class="toclevel-6 tocsection-8"><a href="#.3D.3D_Level_8_Heading.3D.3D"><span class="tocnumber">1.1.1.1.1.3</span> <span class="toctext">== Level 8 Heading==</span></a></li>
14807 <li class="toclevel-6 tocsection-9"><a href="#.3D.3D.3D_Level_9_Heading.3D.3D.3D"><span class="tocnumber">1.1.1.1.1.4</span> <span class="toctext">=== Level 9 Heading===</span></a></li>
14808 <li class="toclevel-6 tocsection-10"><a href="#.3D.3D.3D.3D_Level_10_Heading.3D.3D.3D.3D"><span class="tocnumber">1.1.1.1.1.5</span> <span class="toctext">==== Level 10 Heading====</span></a></li>
14809 </ul>
14810 </li>
14811 </ul>
14812 </li>
14813 </ul>
14814 </li>
14815 </ul>
14816 </li>
14817 </ul>
14818 </li>
14819 </ul>
14820 </div>
14822 <h1><span class="mw-headline" id="Level_1_Heading">Level 1 Heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Level 1 Heading">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
14823 <h2><span class="mw-headline" id="Level_2_Heading">Level 2 Heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Level 2 Heading">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14824 <h3><span class="mw-headline" id="Level_3_Heading">Level 3 Heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: Level 3 Heading">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
14825 <h4><span class="mw-headline" id="Level_4_Heading">Level 4 Heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: Level 4 Heading">edit</a><span class="mw-editsection-bracket">]</span></span></h4>
14826 <h5><span class="mw-headline" id="Level_5_Heading">Level 5 Heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: Level 5 Heading">edit</a><span class="mw-editsection-bracket">]</span></span></h5>
14827 <h6><span class="mw-headline" id="Level_6_Heading">Level 6 Heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=6" title="Edit section: Level 6 Heading">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
14828 <h6><span class="mw-headline" id=".3D_Level_7_Heading.3D">= Level 7 Heading=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=7" title="Edit section: = Level 7 Heading=">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
14829 <h6><span class="mw-headline" id=".3D.3D_Level_8_Heading.3D.3D">== Level 8 Heading==</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=8" title="Edit section: == Level 8 Heading==">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
14830 <h6><span class="mw-headline" id=".3D.3D.3D_Level_9_Heading.3D.3D.3D">=== Level 9 Heading===</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=9" title="Edit section: === Level 9 Heading===">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
14831 <h6><span class="mw-headline" id=".3D.3D.3D.3D_Level_10_Heading.3D.3D.3D.3D">==== Level 10 Heading====</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=10" title="Edit section: ==== Level 10 Heading====">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
14833 !! end
14835 !! test
14836 TOC regression (T11764)
14837 !! wikitext
14838 == title 1 ==
14839 === title 1.1 ===
14840 ==== title 1.1.1 ====
14841 === title 1.2 ===
14842 == title 2 ==
14843 === title 2.1 ===
14844 !! html
14845 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
14846 <ul>
14847 <li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
14848 <ul>
14849 <li class="toclevel-2 tocsection-2"><a href="#title_1.1"><span class="tocnumber">1.1</span> <span class="toctext">title 1.1</span></a>
14850 <ul>
14851 <li class="toclevel-3 tocsection-3"><a href="#title_1.1.1"><span class="tocnumber">1.1.1</span> <span class="toctext">title 1.1.1</span></a></li>
14852 </ul>
14853 </li>
14854 <li class="toclevel-2 tocsection-4"><a href="#title_1.2"><span class="tocnumber">1.2</span> <span class="toctext">title 1.2</span></a></li>
14855 </ul>
14856 </li>
14857 <li class="toclevel-1 tocsection-5"><a href="#title_2"><span class="tocnumber">2</span> <span class="toctext">title 2</span></a>
14858 <ul>
14859 <li class="toclevel-2 tocsection-6"><a href="#title_2.1"><span class="tocnumber">2.1</span> <span class="toctext">title 2.1</span></a></li>
14860 </ul>
14861 </li>
14862 </ul>
14863 </div>
14865 <h2><span class="mw-headline" id="title_1">title 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: title 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14866 <h3><span class="mw-headline" id="title_1.1">title 1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: title 1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
14867 <h4><span class="mw-headline" id="title_1.1.1">title 1.1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: title 1.1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h4>
14868 <h3><span class="mw-headline" id="title_1.2">title 1.2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: title 1.2">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
14869 <h2><span class="mw-headline" id="title_2">title 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: title 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14870 <h3><span class="mw-headline" id="title_2.1">title 2.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=6" title="Edit section: title 2.1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
14872 !! end
14874 !! test
14875 TOC for heading containing <span id="..."></span> (T96153)
14876 !! wikitext
14877 __FORCETOC__
14878 ==<span id="old-anchor"></span>New title==
14879 !! html/php
14880 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
14881 <ul>
14882 <li class="toclevel-1 tocsection-1"><a href="#New_title"><span class="tocnumber">1</span> <span class="toctext">New title</span></a></li>
14883 </ul>
14884 </div>
14886 <h2><span class="mw-headline" id="New_title"><span id="old-anchor"></span>New title</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: New title">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14888 !! end
14890 !! test
14891 TOC with wgMaxTocLevel=3 (bug 6204)
14892 !! options
14893 wgMaxTocLevel=3
14894 !! wikitext
14895 == title 1 ==
14896 === title 1.1 ===
14897 ==== title 1.1.1 ====
14898 === title 1.2 ===
14899 == title 2 ==
14900 === title 2.1 ===
14901 !! html
14902 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
14903 <ul>
14904 <li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
14905 <ul>
14906 <li class="toclevel-2 tocsection-2"><a href="#title_1.1"><span class="tocnumber">1.1</span> <span class="toctext">title 1.1</span></a></li>
14907 <li class="toclevel-2 tocsection-4"><a href="#title_1.2"><span class="tocnumber">1.2</span> <span class="toctext">title 1.2</span></a></li>
14908 </ul>
14909 </li>
14910 <li class="toclevel-1 tocsection-5"><a href="#title_2"><span class="tocnumber">2</span> <span class="toctext">title 2</span></a>
14911 <ul>
14912 <li class="toclevel-2 tocsection-6"><a href="#title_2.1"><span class="tocnumber">2.1</span> <span class="toctext">title 2.1</span></a></li>
14913 </ul>
14914 </li>
14915 </ul>
14916 </div>
14918 <h2><span class="mw-headline" id="title_1">title 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: title 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14919 <h3><span class="mw-headline" id="title_1.1">title 1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: title 1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
14920 <h4><span class="mw-headline" id="title_1.1.1">title 1.1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: title 1.1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h4>
14921 <h3><span class="mw-headline" id="title_1.2">title 1.2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: title 1.2">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
14922 <h2><span class="mw-headline" id="title_2">title 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: title 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14923 <h3><span class="mw-headline" id="title_2.1">title 2.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=6" title="Edit section: title 2.1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
14925 !! end
14927 !! test
14928 TOC with wgMaxTocLevel=3 and two level four headings (bug 6204)
14929 !! options
14930 wgMaxTocLevel=3
14931 !! wikitext
14932 ==Section 1==
14933 ===Section 1.1===
14934 ====Section 1.1.1====
14935 ====Section 1.1.1.1====
14936 ==Section 2==
14937 !! html
14938 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
14939 <ul>
14940 <li class="toclevel-1 tocsection-1"><a href="#Section_1"><span class="tocnumber">1</span> <span class="toctext">Section 1</span></a>
14941 <ul>
14942 <li class="toclevel-2 tocsection-2"><a href="#Section_1.1"><span class="tocnumber">1.1</span> <span class="toctext">Section 1.1</span></a></li>
14943 </ul>
14944 </li>
14945 <li class="toclevel-1 tocsection-5"><a href="#Section_2"><span class="tocnumber">2</span> <span class="toctext">Section 2</span></a></li>
14946 </ul>
14947 </div>
14949 <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&amp;action=edit&amp;section=1" title="Edit section: Section 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14950 <h3><span class="mw-headline" id="Section_1.1">Section 1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Section 1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
14951 <h4><span class="mw-headline" id="Section_1.1.1">Section 1.1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: Section 1.1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h4>
14952 <h4><span class="mw-headline" id="Section_1.1.1.1">Section 1.1.1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: Section 1.1.1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h4>
14953 <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=Parser_test&amp;action=edit&amp;section=5" title="Edit section: Section 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14955 !! end
14958 !! test
14959 Resolving duplicate section names
14960 !! wikitext
14961 == Foo bar ==
14962 == Foo bar ==
14963 !! html
14964 <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&amp;action=edit&amp;section=1" title="Edit section: Foo bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14965 <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&amp;action=edit&amp;section=2" title="Edit section: Foo bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14967 !! end
14969 !! test
14970 Resolving duplicate section names with differing case (bug 10721)
14971 !! wikitext
14972 == Foo bar ==
14973 == Foo Bar ==
14974 !! html
14975 <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&amp;action=edit&amp;section=1" title="Edit section: Foo bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14976 <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&amp;action=edit&amp;section=2" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14978 !! end
14980 !! article
14981 Template:sections
14982 !! text
14983 ===Section 1===
14984 ==Section 2==
14985 !! endarticle
14987 !! test
14988 Template with sections, __NOTOC__
14989 !! wikitext
14990 __NOTOC__
14991 ==Section 0==
14992 {{sections}}
14993 ==Section 4==
14994 !! html
14995 <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&amp;action=edit&amp;section=1" title="Edit section: Section 0">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14996 <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&amp;action=edit&amp;section=T-1" title="Template:Sections">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
14997 <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&amp;action=edit&amp;section=T-2" title="Template:Sections">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
14998 <h2><span class="mw-headline" id="Section_4">Section 4</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Section 4">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
15000 !! end
15002 !! test
15003 __NOEDITSECTION__ keyword
15004 !! wikitext
15005 __NOEDITSECTION__
15006 ==Section 1==
15007 ==Section 2==
15008 !! html
15009 <h2><span class="mw-headline" id="Section_1">Section 1</span></h2>
15010 <h2><span class="mw-headline" id="Section_2">Section 2</span></h2>
15012 !! end
15014 !! test
15015 Link inside a section heading
15016 !! wikitext
15017 ==Section with a [[Main Page|link]] in it==
15018 !! html
15019 <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&amp;action=edit&amp;section=1" title="Edit section: Section with a link in it">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
15021 !! end
15023 !! test
15024 TOC regression (T14077)
15025 !! wikitext
15026 __TOC__
15027 == title 1 ==
15028 === title 1.1 ===
15029 == title 2 ==
15030 !! html
15031 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
15032 <ul>
15033 <li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
15034 <ul>
15035 <li class="toclevel-2 tocsection-2"><a href="#title_1.1"><span class="tocnumber">1.1</span> <span class="toctext">title 1.1</span></a></li>
15036 </ul>
15037 </li>
15038 <li class="toclevel-1 tocsection-3"><a href="#title_2"><span class="tocnumber">2</span> <span class="toctext">title 2</span></a></li>
15039 </ul>
15040 </div>
15042 <h2><span class="mw-headline" id="title_1">title 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: title 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
15043 <h3><span class="mw-headline" id="title_1.1">title 1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: title 1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
15044 <h2><span class="mw-headline" id="title_2">title 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: title 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
15046 !! end
15048 !! test
15049 BUG 1219 URL next to image (good)
15050 !! wikitext
15051 http://example.com [[File:Foobar.jpg]]
15052 !! html/php
15053 <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>
15054 </p>
15055 !! html/parsoid
15056 <p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a> <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
15057 !!end
15059 !! test
15060 Short headings with trailing space should match behavior of Parser::doHeadings (bug 19910)
15061 !! wikitext
15062 === 
15063 The line above must have a trailing space!
15064 === <!--
15065 --> <!-- -->
15066 But just in case it doesn't...
15067 !! html
15068 <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&amp;action=edit&amp;section=1" title="Edit section: =">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
15069 <p>The line above must have a trailing space!
15070 </p>
15071 <h1><span class="mw-headline" id=".3D_2">=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: =">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
15072 <p>But just in case it doesn't...
15073 </p>
15074 !! end
15076 !! test
15077 Header with special characters (bug 25462)
15078 !! wikitext
15079 The tooltips shall not show entities to the user (ie. be double escaped)
15081 == text > text ==
15082 section 1
15084 == text < text ==
15085 section 2
15087 == text & text ==
15088 section 3
15090 == text ' text ==
15091 section 4
15093 == text " text ==
15094 section 5
15095 !! html
15096 <p>The tooltips shall not show entities to the user (ie. be double escaped)
15097 </p>
15098 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
15099 <ul>
15100 <li class="toclevel-1 tocsection-1"><a href="#text_.3E_text"><span class="tocnumber">1</span> <span class="toctext">text &gt; text</span></a></li>
15101 <li class="toclevel-1 tocsection-2"><a href="#text_.3C_text"><span class="tocnumber">2</span> <span class="toctext">text &lt; text</span></a></li>
15102 <li class="toclevel-1 tocsection-3"><a href="#text_.26_text"><span class="tocnumber">3</span> <span class="toctext">text &amp; text</span></a></li>
15103 <li class="toclevel-1 tocsection-4"><a href="#text_.27_text"><span class="tocnumber">4</span> <span class="toctext">text ' text</span></a></li>
15104 <li class="toclevel-1 tocsection-5"><a href="#text_.22_text"><span class="tocnumber">5</span> <span class="toctext">text " text</span></a></li>
15105 </ul>
15106 </div>
15108 <h2><span class="mw-headline" id="text_.3E_text">text &gt; text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: text &gt; text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
15109 <p>section 1
15110 </p>
15111 <h2><span class="mw-headline" id="text_.3C_text">text &lt; text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: text &lt; text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
15112 <p>section 2
15113 </p>
15114 <h2><span class="mw-headline" id="text_.26_text">text &amp; text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: text &amp; text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
15115 <p>section 3
15116 </p>
15117 <h2><span class="mw-headline" id="text_.27_text">text ' text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: text ' text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
15118 <p>section 4
15119 </p>
15120 <h2><span class="mw-headline" id="text_.22_text">text " text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: text &quot; text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
15121 <p>section 5
15122 </p>
15123 !! end
15125 !! test
15126 Header with space, plus and underscore as entity
15127 !! wikitext
15128 Id should not contain + for spaces
15130 == Space between Text ==
15131 section 1
15133 == Space-Entity&#32;between&#32;Text ==
15134 section 2
15136 == Plus+between+Text ==
15137 section 3
15139 == Plus-Entity&#43;between&#43;Text ==
15140 section 4
15142 == Underscore_between_Text ==
15143 section 5
15145 == Underscore-Entity&#95;between&#95;Text ==
15146 section 6
15148 [[#Space between Text]]
15149 [[#Space-Entity&#32;between&#32;Text]]
15150 [[#Plus+between+Text]]
15151 [[#Plus-Entity&#43;between&#43;Text]]
15152 [[#Underscore_between_Text]]
15153 [[#Underscore-Entity&#95;between&#95;Text]]
15154 !! html
15155 <p>Id should not contain + for spaces
15156 </p>
15157 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
15158 <ul>
15159 <li class="toclevel-1 tocsection-1"><a href="#Space_between_Text"><span class="tocnumber">1</span> <span class="toctext">Space between Text</span></a></li>
15160 <li class="toclevel-1 tocsection-2"><a href="#Space-Entity_between_Text"><span class="tocnumber">2</span> <span class="toctext">Space-Entity&#32;between&#32;Text</span></a></li>
15161 <li class="toclevel-1 tocsection-3"><a href="#Plus.2Bbetween.2BText"><span class="tocnumber">3</span> <span class="toctext">Plus+between+Text</span></a></li>
15162 <li class="toclevel-1 tocsection-4"><a href="#Plus-Entity.2Bbetween.2BText"><span class="tocnumber">4</span> <span class="toctext">Plus-Entity&#43;between&#43;Text</span></a></li>
15163 <li class="toclevel-1 tocsection-5"><a href="#Underscore_between_Text"><span class="tocnumber">5</span> <span class="toctext">Underscore_between_Text</span></a></li>
15164 <li class="toclevel-1 tocsection-6"><a href="#Underscore-Entity_between_Text"><span class="tocnumber">6</span> <span class="toctext">Underscore-Entity&#95;between&#95;Text</span></a></li>
15165 </ul>
15166 </div>
15168 <h2><span class="mw-headline" id="Space_between_Text">Space between Text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Space between Text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
15169 <p>section 1
15170 </p>
15171 <h2><span class="mw-headline" id="Space-Entity_between_Text">Space-Entity&#32;between&#32;Text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Space-Entity between Text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
15172 <p>section 2
15173 </p>
15174 <h2><span class="mw-headline" id="Plus.2Bbetween.2BText">Plus+between+Text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: Plus+between+Text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
15175 <p>section 3
15176 </p>
15177 <h2><span class="mw-headline" id="Plus-Entity.2Bbetween.2BText">Plus-Entity&#43;between&#43;Text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: Plus-Entity+between+Text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
15178 <p>section 4
15179 </p>
15180 <h2><span class="mw-headline" id="Underscore_between_Text">Underscore_between_Text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: Underscore between Text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
15181 <p>section 5
15182 </p>
15183 <h2><span class="mw-headline" id="Underscore-Entity_between_Text">Underscore-Entity&#95;between&#95;Text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=6" title="Edit section: Underscore-Entity_between_Text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
15184 <p>section 6
15185 </p><p><a href="#Space_between_Text">#Space between Text</a>
15186 <a href="#Space-Entity_between_Text">#Space-Entity&#32;between&#32;Text</a>
15187 <a href="#Plus.2Bbetween.2BText">#Plus+between+Text</a>
15188 <a href="#Plus-Entity.2Bbetween.2BText">#Plus-Entity&#43;between&#43;Text</a>
15189 <a href="#Underscore_between_Text">#Underscore_between_Text</a>
15190 <a href="#Underscore-Entity_between_Text">#Underscore-Entity&#95;between&#95;Text</a>
15191 </p>
15192 !! end
15194 !! test
15195 Headers with excess '=' characters
15196 (Are similar tests necessary beyond the 1st level?)
15197 !! wikitext
15198 =foo==
15199 ==foo=
15200 =''italic'' heading==
15201 ==''italic'' heading=
15202 !! html
15203 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
15204 <ul>
15205 <li class="toclevel-1 tocsection-1"><a href="#foo.3D"><span class="tocnumber">1</span> <span class="toctext">foo=</span></a></li>
15206 <li class="toclevel-1 tocsection-2"><a href="#.3Dfoo"><span class="tocnumber">2</span> <span class="toctext">=foo</span></a></li>
15207 <li class="toclevel-1 tocsection-3"><a href="#italic_heading.3D"><span class="tocnumber">3</span> <span class="toctext"><i>italic</i> heading=</span></a></li>
15208 <li class="toclevel-1 tocsection-4"><a href="#.3Ditalic_heading"><span class="tocnumber">4</span> <span class="toctext">=<i>italic</i> heading</span></a></li>
15209 </ul>
15210 </div>
15212 <h1><span class="mw-headline" id="foo.3D">foo=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: foo=">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
15213 <h1><span class="mw-headline" id=".3Dfoo">=foo</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: =foo">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
15214 <h1><span class="mw-headline" id="italic_heading.3D"><i>italic</i> heading=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: italic heading=">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
15215 <h1><span class="mw-headline" id=".3Ditalic_heading">=<i>italic</i> heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: =italic heading">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
15217 !! end
15219 !! test
15220 HTML headers vs TOC (bug 23393)
15221 (__NOEDITSECTION__ for clearer output, doesn't matter here)
15222 !! wikitext
15223 <h1>Header 1</h1>
15224 == Header 1.1 ==
15225 == Header 1.2 ==
15227 <h1>Header 2
15228 </h1>
15229 == Header 2.1 ==
15230 == Header 2.2 ==
15231 __NOEDITSECTION__
15232 !! html
15233 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
15234 <ul>
15235 <li class="toclevel-1"><a href="#Header_1"><span class="tocnumber">1</span> <span class="toctext">Header 1</span></a>
15236 <ul>
15237 <li class="toclevel-2 tocsection-1"><a href="#Header_1.1"><span class="tocnumber">1.1</span> <span class="toctext">Header 1.1</span></a></li>
15238 <li class="toclevel-2 tocsection-2"><a href="#Header_1.2"><span class="tocnumber">1.2</span> <span class="toctext">Header 1.2</span></a></li>
15239 </ul>
15240 </li>
15241 <li class="toclevel-1"><a href="#Header_2"><span class="tocnumber">2</span> <span class="toctext">Header 2</span></a>
15242 <ul>
15243 <li class="toclevel-2 tocsection-3"><a href="#Header_2.1"><span class="tocnumber">2.1</span> <span class="toctext">Header 2.1</span></a></li>
15244 <li class="toclevel-2 tocsection-4"><a href="#Header_2.2"><span class="tocnumber">2.2</span> <span class="toctext">Header 2.2</span></a></li>
15245 </ul>
15246 </li>
15247 </ul>
15248 </div>
15250 <h1><span class="mw-headline" id="Header_1">Header 1</span></h1>
15251 <h2><span class="mw-headline" id="Header_1.1">Header 1.1</span></h2>
15252 <h2><span class="mw-headline" id="Header_1.2">Header 1.2</span></h2>
15253 <h1><span class="mw-headline" id="Header_2">Header 2</span></h1>
15254 <h2><span class="mw-headline" id="Header_2.1">Header 2.1</span></h2>
15255 <h2><span class="mw-headline" id="Header_2.2">Header 2.2</span></h2>
15257 !! end
15259 !! test
15260 Single-line or multiline-comments can follow headings
15261 !! options
15262 parsoid=wt2html,wt2wt
15263 !! wikitext
15264 ==foo==<!---->
15265 ==bar==<!--c1-->
15266 ==baz==<!--
15268 c3-->
15269 !! html
15270 <h2><span class="mw-headline" id="foo">foo</span></h2>
15271 <h2><span class="mw-headline" id="bar">bar</span></h2>
15272 <h2><span class="mw-headline" id="baz">baz</span></h2>
15274 !! end
15276 !! test
15277 BUG 1219 URL next to image (broken)
15278 !! wikitext
15279 http://example.com[[File:Foobar.jpg]]
15280 !! html/php
15281 <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>
15282 </p>
15283 !! html/parsoid
15284 <p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a><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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
15285 !!end
15287 !! test
15288 Bug 1186 news: in the middle of text
15289 !! wikitext
15290 http://en.wikinews.org/wiki/Wikinews:Workplace
15291 !! html
15292 <p><a rel="nofollow" class="external free" href="http://en.wikinews.org/wiki/Wikinews:Workplace">http://en.wikinews.org/wiki/Wikinews:Workplace</a>
15293 </p>
15294 !!end
15297 !! test
15298 Namespaced link must have a title
15299 !! wikitext
15300 [[Project:]]
15301 !! html
15302 <p>[[Project:]]
15303 </p>
15304 !!end
15306 !! test
15307 Namespaced link must have a title (bad fragment version)
15308 !! wikitext
15309 [[Project:#fragment]]
15310 !! html
15311 <p>[[Project:#fragment]]
15312 </p>
15313 !!end
15317 ### HTML tags and HTML attributes
15320 !! test
15321 div with no attributes
15322 !! wikitext
15323 <div>HTML rocks</div>
15324 !! html
15325 <div>HTML rocks</div>
15327 !! end
15329 !! test
15330 div with double-quoted attribute
15331 !! wikitext
15332 <div id="rock">HTML rocks</div>
15333 !! html
15334 <div id="rock">HTML rocks</div>
15336 !! end
15338 !! test
15339 div with single-quoted attribute
15340 !! wikitext
15341 <div id='rock'>HTML rocks</div>
15342 !! html
15343 <div id="rock">HTML rocks</div>
15345 !! end
15347 !! test
15348 div with unquoted attribute
15349 !! wikitext
15350 <div id=rock>HTML rocks</div>
15351 !! html
15352 <div id="rock">HTML rocks</div>
15354 !! end
15356 !! test
15357 div with illegal double attributes
15358 !! wikitext
15359 <div id="a" id="b">HTML rocks</div>
15360 !! html
15361 <div id="b">HTML rocks</div>
15363 !!end
15365 # FIXME: produce empty string instead of "class" in the PHP parser, following
15366 # the HTML5 spec.
15367 !! test
15368 div with empty attribute value, space before equals
15369 !! options
15370 parsoid
15371 !! wikitext
15372 <div class =>HTML rocks</div>
15373 !! html
15374 <div class="">HTML rocks</div>
15376 !! end
15378 !! test
15379 div with multiple empty attribute values
15380 !! options
15381 parsoid
15382 !! wikitext
15383 <div id= title=>HTML rocks</div>
15384 !! html
15385 <div id="" title="">HTML rocks</div>
15387 !! end
15389 !! test
15390 table with multiple empty attribute values
15391 !! options
15392 parsoid
15393 !! wikitext
15394 {| title= id=
15395 | hi
15397 !! html
15398 <table title="" id="">
15399 <tbody><tr><td> hi</td></tr>
15400 </tbody></table>
15401 !! end
15403 !! test
15404 div with braces in attribute value
15405 !! wikitext
15406 <div title="{}">Foo</div>
15407 !! html/php
15408 <div title="&#123;}">Foo</div>
15410 !! html/parsoid
15411 <div title="{}">Foo</div>
15412 !! end
15414 # This it very inconsistent in the PHP parser: it returns 
15415 # class="class" if there is a space between the name and the equal sign (see
15416 # 'div with empty attribute value, space before equals'), but strips the
15417 # attribute completely if the space is missing. We hope that not much content
15418 # depends on this, so are implementing the behavior below in Parsoid for
15419 # consistencies' sake.
15420 # FIXME: fix this behavior in the PHP parser?
15421 !! test
15422 div with empty attribute value, no space before equals
15423 !! options
15424 parsoid=wt2html,html2html
15425 !! wikitext
15426 <div class=>HTML rocks</div>
15427 !! html/php
15428 <div>HTML rocks</div>
15430 !! html/parsoid
15431 <div class="">HTML rocks</div>
15432 !! end
15434 !! test
15435 HTML multiple attributes correction
15436 !! wikitext
15437 <p class="error" class="awesome">Awesome!</p>
15438 !! html
15439 <p class="awesome">Awesome!</p>
15441 !!end
15443 !! test
15444 Table multiple attributes correction
15445 !! wikitext
15447 !+ class="error" class="awesome"| status
15449 !! html
15450 <table>
15451 <tr>
15452 <th class="awesome"> status
15453 </th></tr></table>
15455 !!end
15457 !! test
15458 DIV IN UPPERCASE
15459 !! wikitext
15460 <DIV ID="x">HTML ROCKS</DIV>
15461 !! html
15462 <div id="x">HTML ROCKS</div>
15464 !!end
15466 !! test
15467 Non-ASCII pseudo-tags are rendered as text
15468 !! wikitext
15469 <khyô>
15470 !! html
15471 <p>&lt;khyô&gt;
15472 </p>
15473 !! end
15475 !! test
15476 Pseudo-tag with URL 'name' renders as url link
15477 !! wikitext
15478 <http://example.com/>
15479 !! html
15480 <p>&lt;<a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a>&gt;
15481 </p>
15482 !! end
15484 !! test
15485 text with amp in the middle of nowhere
15486 !! wikitext
15487 Remember AT&T?
15488 !! html
15489 <p>Remember AT&amp;T?
15490 </p>
15491 !! end
15493 !! test
15494 text with character entity: eacute
15495 !! wikitext
15496 I always thought &eacute; was a cute letter.
15497 !! html
15498 <p>I always thought &#233; was a cute letter.
15499 </p>
15500 !! html+tidy
15501 <p>I always thought é was a cute letter.</p>
15502 !! end
15504 !! test
15505 text with entity-escaped character entity-like string: eacute
15506 !! wikitext
15507 I always thought &amp;eacute; was a cute letter.
15508 !! html
15509 <p>I always thought &amp;eacute; was a cute letter.
15510 </p>
15511 !! end
15513 !! test
15514 text with undefined character entity: xacute
15515 !! wikitext
15516 I always thought &xacute; was a cute letter.
15517 !! html
15518 <p>I always thought &amp;xacute; was a cute letter.
15519 </p>
15520 !! end
15522 !! test
15523 HTML5 tags
15524 !! wikitext
15525 <data value="5">five</data>
15526 <time datetime="2000-01-01T00:00Z">The new millenium started</time>
15527 <mark>This highlighted text</mark>
15528 !! html
15529 <p><data value="5">five</data>
15530 <time datetime="2000-01-01T00:00Z">The new millenium started</time>
15531 <mark>This highlighted text</mark>
15532 </p>
15533 !! end
15535 !! test
15536 HTML tag with leading space is parsed as text
15537 !! wikitext
15538 < div>foo< /div>
15539 !! html
15540 <p>&lt; div&gt;foo&lt; /div&gt;
15541 </p>
15542 !! end
15545 ### Nesting tests (see bug 41545, 50604, 51081)
15548 # This test case is fixed in Parsoid by domino 1.0.12. (bug 50604)
15549 # Note that html2wt is considerably more difficult if we use <b> in
15550 # the test case, instead of <big>
15551 !! test
15552 Ensure that HTML adoption agency algorithm is properly implemented.
15553 !! wikitext
15554 <big>X<big>Y</big>Z</big>
15555 !! html
15556 <p><big>X<big>Y</big>Z</big>
15557 </p>
15558 !! end
15560 # This was bug 41545 in the PHP parser.
15561 # Note that tidy doesn't handle this correctly.
15562 !! test
15563 Nesting of <kbd>
15564 !! wikitext
15565 <kbd>X<kbd>Y</kbd>Z</kbd>
15566 !! html
15567 <p><kbd>X<kbd>Y</kbd>Z</kbd>
15568 </p>
15569 !! end
15571 # The following cases were bug 51081 in the PHP parser.
15572 # Note that there are some other nestable tags (b, i, etc) which are
15573 # not covered; see bug 51081 for discussion.
15575 # Note that tidy doesn't handle this correctly.
15576 !! test
15577 Nesting of <em>
15578 !! wikitext
15579 <em>X<em>Y</em>Z</em>
15580 !! html
15581 <p><em>X<em>Y</em>Z</em>
15582 </p>
15583 !! end
15585 # Note that tidy doesn't handle this correctly.
15586 !! test
15587 Nesting of <strong>
15588 !! wikitext
15589 <strong>X<strong>Y</strong>Z</strong>
15590 !! html
15591 <p><strong>X<strong>Y</strong>Z</strong>
15592 </p>
15593 !! end
15595 !! test
15596 Nesting of <q>
15597 !! wikitext
15598 <q>X<q>Y</q>Z</q>
15599 !! html+tidy
15600 <p><q>X<q>Y</q>Z</q></p>
15601 !! end
15603 # Note that tidy doesn't handle this correctly.
15604 !! test
15605 Nesting of <ruby>
15606 !! wikitext
15607 <ruby>X<ruby>Y</ruby>Z</ruby>
15608 !! html
15609 <p><ruby>X<ruby>Y</ruby>Z</ruby>
15610 </p>
15611 !! end
15613 # Note that tidy doesn't handle this correctly.
15614 !! test
15615 Nesting of <bdo>
15616 !! wikitext
15617 <bdo>X<bdo>Y</bdo>Z</bdo>
15618 !! html
15619 <p><bdo>X<bdo>Y</bdo>Z</bdo>
15620 </p>
15621 !! end
15625 ### Media links
15628 !! test
15629 Media link
15630 !! wikitext
15631 [[Media:Foobar.jpg]]
15632 !! html
15633 <p><a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">Media:Foobar.jpg</a>
15634 </p>
15635 !! end
15637 !! test
15638 Media link with text
15639 !! wikitext
15640 [[Media:Foobar.jpg|A neat file to look at]]
15641 !! html
15642 <p><a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">A neat file to look at</a>
15643 </p>
15644 !! end
15646 # FIXME: this is still bad HTML tag nesting
15647 # FIXME: doBlockLevels won't wrap this in a paragraph because it contains a div
15648 !! test
15649 Media link with nasty text
15650 !! wikitext
15651 [[Media:Foobar.jpg|Safe Link<div style=display:none>" onmouseover="alert(document.cookie)" onfoo="</div>]]
15652 !! html
15653 <a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">Safe Link&lt;div style="display:none"&gt;" onmouseover="alert(document.cookie)" onfoo="&lt;/div&gt;</a>
15655 !! html+tidy
15656 <p><a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">Safe Link</a></p>
15657 <div style="display:none">" onmouseover="alert(document.cookie)" onfoo="</div>
15658 !! end
15660 !! test
15661 Media link to nonexistent file (bug 1702)
15662 !! wikitext
15663 [[Media:No such.jpg]]
15664 !! html
15665 <p><a href="/index.php?title=Special:Upload&amp;wpDestFile=No_such.jpg" class="new" title="No such.jpg">Media:No such.jpg</a>
15666 </p>
15667 !! end
15669 !! test
15670 Image link to nonexistent file (bug 1850 - good)
15671 !! wikitext
15672 [[File:No_such.jpg]]
15673 !! html/php
15674 <p><a href="/index.php?title=Special:Upload&amp;wpDestFile=No_such.jpg" class="new" title="File:No such.jpg">File:No such.jpg</a>
15675 </p>
15676 !! html/parsoid
15677 <p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}]}'><a href="./File:No_such.jpg"><img resource="./File:No_such.jpg" src="./Special:FilePath/No_such.jpg" height="220" width="220"/></a></span></p>
15678 !! end
15680 !! test
15681 :Image link to nonexistent file (bug 1850 - bad)
15682 !! wikitext
15683 [[:Image:No such.jpg]]
15684 !! html/php
15685 <p><a href="/index.php?title=File:No_such.jpg&amp;action=edit&amp;redlink=1" class="new" title="File:No such.jpg (page does not exist)">Image:No such.jpg</a>
15686 </p>
15687 !! html/parsoid
15688 <p><a rel="mw:WikiLink" href="./File:No_such.jpg" title="File:No such.jpg">Image:No such.jpg</a></p>
15689 !! end
15693 !! test
15694 Character reference normalization in link text (bug 1938)
15695 !! wikitext
15696 [[Main Page|this&that]]
15697 !! html
15698 <p><a href="/wiki/Main_Page" title="Main Page">this&amp;that</a>
15699 </p>
15700 !!end
15702 !! article
15703 אַ
15704 !! text
15705 Test for unicode normalization
15707 The page's name is U+05d0 U+05b7, with non-canonical form U+FB2E
15708 !! endarticle
15710 !! test
15711 (bug 19451) Links should refer to the normalized form.
15712 !! wikitext
15713 [[&#xFB2E;]]
15714 [[&#x5d0;&#x5b7;]]
15715 [[&#x5d0;ַ]]
15716 [[א&#x5b7;]]
15717 [[אַ]]
15718 !! html
15719 <p><a href="/wiki/%D7%90%D6%B7" title="אַ">&#xfb2e;</a>
15720 <a href="/wiki/%D7%90%D6%B7" title="אַ">&#x5d0;&#x5b7;</a>
15721 <a href="/wiki/%D7%90%D6%B7" title="אַ">&#x5d0;ַ</a>
15722 <a href="/wiki/%D7%90%D6%B7" title="אַ">א&#x5b7;</a>
15723 <a href="/wiki/%D7%90%D6%B7" title="אַ">אַ</a>
15724 </p>
15725 !! end
15727 !! test
15728 Empty attribute crash test (bug 2067)
15729 !! wikitext
15730 <font color="">foo</font>
15731 !! html
15732 <p><font color="">foo</font>
15733 </p>
15734 !! end
15736 !! test
15737 Empty attribute crash test single-quotes (bug 2067)
15738 !! wikitext
15739 <font color=''>foo</font>
15740 !! html
15741 <p><font color="">foo</font>
15742 </p>
15743 !! end
15745 !! test
15746 Attribute test: equals, then nothing
15747 !! wikitext
15748 <font color=>foo</font>
15749 !! html
15750 <p><font>foo</font>
15751 </p>
15752 !! end
15754 !! test
15755 Attribute test: unquoted value
15756 !! wikitext
15757 <font color=x>foo</font>
15758 !! html
15759 <p><font color="x">foo</font>
15760 </p>
15761 !! end
15763 !! test
15764 Attribute test: unquoted but illegal value (hash)
15765 !! wikitext
15766 <font color=#x>foo</font>
15767 !! html
15768 <p><font color="#x">foo</font>
15769 </p>
15770 !! end
15772 # Parsoid does not serialize to empty attribute syntax,
15773 # so wt2wt and html2wt cases are skipped
15774 !! test
15775 Attribute test: no value (T54330)
15776 !! options
15777 parsoid=wt2html,html2html
15778 !! wikitext
15779 <font color>foo</font>
15780 !! html/php
15781 <p><font color="">foo</font>
15782 </p>
15783 !! html/parsoid
15784 <p><font color="">foo</font></p>
15785 !! end
15787 !! test
15788 Bug 2095: link with three closing brackets
15789 !! wikitext
15790 [[Main Page]]]
15791 !! html/php
15792 <p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>]
15793 </p>
15794 !! html/parsoid
15795 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a>]</p>
15796 !! end
15798 !! test
15799 Bug 2095: link with pipe and three closing brackets
15800 !! wikitext
15801 [[Main Page|link]]]
15802 !! html/php
15803 <p><a href="/wiki/Main_Page" title="Main Page">link</a>]
15804 </p>
15805 !! html/parsoid
15806 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">link</a>]</p>
15807 !! end
15809 !! test
15810 Bug 2095: link with pipe and three closing brackets, version 2
15811 !! wikitext
15812 [[Main Page|[http://example.com/]]]
15813 !! html/php
15814 <p><a href="/wiki/Main_Page" title="Main Page">[http://example.com/]</a>
15815 </p>
15816 !! html/parsoid
15817 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">[http://example.com/]</a></p>
15818 !! end
15822 ### Safety
15825 !! article
15826 Template:Dangerous attribute
15827 !! text
15828 " onmouseover="alert(document.cookie)
15829 !! endarticle
15831 !! article
15832 Template:Dangerous style attribute
15833 !! text
15834 border-size: expression(alert(document.cookie))
15835 !! endarticle
15837 !! article
15838 Template:Div style
15839 !! text
15840 <div style="float: right; {{{1}}}">Magic div</div>
15841 !! endarticle
15843 !! test
15844 Bug 2304: HTML attribute safety (safe template; regression bug 2309)
15845 !! wikitext
15846 <div title="{{test}}"></div>
15847 !! html
15848 <div title="This is a test template"></div>
15850 !! end
15852 # Parsoid has enough context to handle this case
15853 !! test
15854 Bug 2304: HTML attribute safety (dangerous template; 2309)
15855 !! wikitext
15856 <div title="{{dangerous attribute}}"></div>
15857 !! html/php
15858 <div title=""></div>
15860 !! html/parsoid
15861 <div title='" onmouseover="alert(document.cookie)' about="#mwt2" typeof="mw:ExpandedAttrs" data-parsoid='{"stx":"html","a":{"title":"\" onmouseover=\"alert(document.cookie)"},"sa":{"title":"{{dangerous attribute}}"}}' data-mw='{"attribs":[[{"txt":"title"},{"html":"&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=\"{&amp;quot;pi&amp;quot;:[[]],&amp;quot;dsr&amp;quot;:[12,35,null,null]}\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;dangerous attribute&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Dangerous_attribute&amp;quot;},&amp;quot;params&amp;quot;:{},&amp;quot;i&amp;quot;:0}}]}\">\" onmouseover=\"alert(document.cookie)&lt;/span>"}]]}'></div>
15862 !! end
15864 !! test
15865 Bug 2304: HTML attribute safety (dangerous style template; 2309)
15866 !! wikitext
15867 <div style="{{dangerous style attribute}}"></div>
15868 !! html
15869 <div style="/* insecure input */"></div>
15871 !! end
15873 !! test
15874 Bug 2304: HTML attribute safety (safe parameter; 2309)
15875 !! wikitext
15876 {{div style|width: 200px}}
15877 !! html
15878 <div style="float: right; width: 200px">Magic div</div>
15880 !! end
15882 !! test
15883 Bug 2304: HTML attribute safety (unsafe parameter; 2309)
15884 !! wikitext
15885 {{div style|width: expression(alert(document.cookie))}}
15886 !! html
15887 <div style="/* insecure input */">Magic div</div>
15889 !! end
15891 !! test
15892 Bug 2304: HTML attribute safety (unsafe breakout parameter; 2309)
15893 !! wikitext
15894 {{div style|"><script>alert(document.cookie)</script>}}
15895 !! html
15896 <div style="float: right;">&lt;script&gt;alert(document.cookie)&lt;/script&gt;"&gt;Magic div</div>
15898 !! end
15900 !! test
15901 Bug 2304: HTML attribute safety (unsafe breakout parameter 2; 2309)
15902 !! wikitext
15903 {{div style|" ><script>alert(document.cookie)</script>}}
15904 !! html
15905 <div style="float: right;">&lt;script&gt;alert(document.cookie)&lt;/script&gt;"&gt;Magic div</div>
15907 !! end
15909 !! test
15910 Bug 2304: HTML attribute safety (link)
15911 !! wikitext
15912 <div title="[[Main Page]]"></div>
15913 !! html
15914 <div title="&#91;&#91;Main Page]]"></div>
15916 !! end
15918 !! test
15919 Bug 2304: HTML attribute safety (italics)
15920 !! wikitext
15921 <div title="''foobar''"></div>
15922 !! html
15923 <div title="&#39;&#39;foobar&#39;&#39;"></div>
15925 !! end
15927 !! test
15928 Bug 2304: HTML attribute safety (bold)
15929 !! wikitext
15930 <div title="'''foobar'''"></div>
15931 !! html
15932 <div title="&#39;&#39;&#39;foobar&#39;&#39;&#39;"></div>
15934 !! end
15937 !! test
15938 Bug 2304: HTML attribute safety (ISBN)
15939 !! wikitext
15940 <div title="ISBN 1234567890"></div>
15941 !! html
15942 <div title="&#73;SBN 1234567890"></div>
15944 !! end
15946 !! test
15947 Bug 2304: HTML attribute safety (RFC)
15948 !! wikitext
15949 <div title="RFC 1234"></div>
15950 !! html
15951 <div title="&#82;FC 1234"></div>
15953 !! end
15955 !! test
15956 Bug 2304: HTML attribute safety (PMID)
15957 !! wikitext
15958 <div title="PMID 1234567890"></div>
15959 !! html
15960 <div title="&#80;MID 1234567890"></div>
15962 !! end
15964 !! test
15965 Bug 2304: HTML attribute safety (web link)
15966 !! wikitext
15967 <div title="http://example.com/"></div>
15968 !! html
15969 <div title="http&#58;//example.com/"></div>
15971 !! end
15973 !! test
15974 Bug 2304: HTML attribute safety (named web link)
15975 !! wikitext
15976 <div title="[http://example.com/ link]"></div>
15977 !! html
15978 <div title="&#91;http&#58;//example.com/ link]"></div>
15980 !! end
15982 !! test
15983 Bug 3244: HTML attribute safety (extension; safe)
15984 !! wikitext
15985 <div style="<nowiki>background:blue</nowiki>"></div>
15986 !! html
15987 <div style="background:blue"></div>
15989 !! end
15991 !! test
15992 Bug 3244: HTML attribute safety (extension; unsafe)
15993 !! wikitext
15994 <div style="<nowiki>border-left:expression(alert(document.cookie))</nowiki>"></div>
15995 !! html
15996 <div style="/* insecure input */"></div>
15998 !! end
16000 # More MSIE fun discovered by Tom Gilder
16002 !! test
16003 MSIE CSS safety test: spurious slash
16004 !! wikitext
16005 <div style="background-image:u\rl(javascript:alert('boo'))">evil</div>
16006 !! html
16007 <div style="/* insecure input */">evil</div>
16009 !! end
16011 !! test
16012 MSIE CSS safety test: hex code
16013 !! wikitext
16014 <div style="background-image:u\72l(javascript:alert('boo'))">evil</div>
16015 !! html
16016 <div style="/* insecure input */">evil</div>
16018 !! end
16020 !! test
16021 MSIE CSS safety test: comment in url
16022 !! wikitext
16023 <div style="background-image:u/**/rl(javascript:alert('boo'))">evil</div>
16024 !! html
16025 <div style="background-image:u rl(javascript:alert(&#39;boo&#39;))">evil</div>
16027 !! end
16029 !! test
16030 MSIE CSS safety test: comment in expression
16031 !! wikitext
16032 <div style="background-image:expres/**/sion(alert('boo4'))">evil4</div>
16033 !! html
16034 <div style="background-image:expres sion(alert(&#39;boo4&#39;))">evil4</div>
16036 !! end
16038 !! test
16039 CSS safety test (all browsers): vertical tab (bug 55332 / CVE-2013-4567)
16040 !! wikitext
16041 <p style="font-size: 100px; background-image:url\b(https://www.google.com/images/srpr/logo6w.png)">A</p>
16042 !! html
16043 <p style="/* invalid control char */">A</p>
16045 !! end
16047 !! test
16048 MSIE 6 CSS safety test: Fullwidth (bug 55332)
16049 !! wikitext
16050 <p style="font-size: 100px; color: expression((title='XSSed'),'red')">A</p>
16051 <div style="top:EXPRESSION(alert())">B</div>
16052 !! html
16053 <p style="/* insecure input */">A</p>
16054 <div style="/* insecure input */">B</div>
16056 !! end
16058 !! test
16059 MSIE 6 CSS safety test: IPA extensions (bug 55332)
16060 !! wikitext
16061 <div style="background-image:uʀʟ(javascript:alert())">A</div>
16062 <p style="font-size: 100px; color: expʀessɪoɴ((title='XSSed'),'red')">B</p>
16063 !! html
16064 <div style="/* insecure input */">A</div>
16065 <p style="/* insecure input */">B</p>
16067 !! end
16069 !! test
16070 MSIE 6 CSS safety test: sup/sub script (bug 55332)
16071 !! wikitext
16072 <div style="background-image:url⁽javascript:alert())">A</div>
16073 <div style="background-image:url₍javascript:alert())">B</div>
16074 <p style="font-size: 100px; color: expressioⁿ((title='XSSed'),'red')">C</p>
16075 !! html
16076 <div style="/* insecure input */">A</div>
16077 <div style="/* insecure input */">B</div>
16078 <p style="/* insecure input */">C</p>
16080 !! end
16082 # FIXME: Parsoid fails to sanitize this! See T58846.
16083 !! test
16084 Opera -o-link CSS
16085 !! wikitext
16086 <div
16087 title="&#100;&#97;&#116;&#97;&#58;&#116;&#101;&#120;&#116;&#47;&#104;&#116;&#109;&#108;&#44;&#60;&#105;&#109;&#103;&#32;&#115;&#114;&#99;&#61;&#49;&#32;&#111;&#110;&#101;&#114;&#114;&#111;&#114;&#61;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;&#62;"
16088 style="-o-link:attr(title);-o-link-source:current">X</div>
16089 !! html
16090 <div title="data:text/html,&lt;img src=1 onerror=alert(1)&gt;" style="/* insecure input */">X</div>
16092 !! end
16094 !! test
16095 MSIE 6 CSS safety test: Repetition markers (bug 55332)
16096 !! wikitext
16097 <p style="font-size: 100px; color: expres〱ion((title='XSSed'),'red')">A</p>
16098 <p style="font-size: 100px; color: expresゝion((title='XSSed'),'red')">B</p>
16099 <p style="font-size: 100px; color: expresーion((title='XSSed'),'red')">C</p>
16100 <p style="font-size: 100px; color: expresヽion((title='XSSed'),'red')">D</p>
16101 <p style="font-size: 100px; color: expresﹽion((title='XSSed'),'red')">E</p>
16102 <p style="font-size: 100px; color: expresﹼion((title='XSSed'),'red')">F</p>
16103 <p style="font-size: 100px; color: expresーion((title='XSSed'),'red')">G</p>
16104 !! html
16105 <p style="/* insecure input */">A</p>
16106 <p style="/* insecure input */">B</p>
16107 <p style="/* insecure input */">C</p>
16108 <p style="/* insecure input */">D</p>
16109 <p style="/* insecure input */">E</p>
16110 <p style="/* insecure input */">F</p>
16111 <p style="/* insecure input */">G</p>
16113 !! end
16115 !! test
16116 Table attribute legitimate extension
16117 !! wikitext
16119 !+ style="<nowiki>color:blue</nowiki>"| status
16121 !! html
16122 <table>
16123 <tr>
16124 <th style="color:blue"> status
16125 </th></tr></table>
16127 !!end
16129 !! test
16130 Table attribute safety
16131 !! wikitext
16133 !+ style="<nowiki>border-width:expression(0+alert(document.cookie))</nowiki>"| status
16135 !! html
16136 <table>
16137 <tr>
16138 <th style="/* insecure input */"> status
16139 </th></tr></table>
16141 !! end
16143 !! test
16144 CSS line continuation 1
16145 !! wikitext
16146 <div style="background-image: u\&#10;rl(test.jpg);"></div>
16147 !! html
16148 <div style="/* insecure input */"></div>
16150 !! end
16152 !! test
16153 CSS line continuation 2
16154 !! wikitext
16155 <div style="background-image: u\&#13;rl(test.jpg); "></div>
16156 !! html
16157 <div style="/* invalid control char */"></div>
16159 !! end
16161 !! article
16162 Template:Identity
16163 !! text
16164 {{{1}}}
16165 !! endarticle
16167 !! test
16168 Expansion of multi-line templates in attribute values (bug 6255)
16169 !! wikitext
16170 <div style="background: {{identity|#00FF00}}">-</div>
16171 !! html
16172 <div style="background: #00FF00">-</div>
16174 !! end
16177 !! test
16178 Expansion of multi-line templates in attribute values (bug 6255 sanity check)
16179 !! wikitext
16180 <div style="background: 
16181 #00FF00">-</div>
16182 !! html/php
16183 <div style="background: #00FF00">-</div>
16185 !! html/parsoid
16186 <div style="background: 
16187 #00FF00">-</div>
16188 !! end
16190 !! test
16191 Expansion of multi-line templates in attribute values (bug 6255 sanity check 2)
16192 !! wikitext
16193 <div style="background: &#10;#00FF00">-</div>
16194 !! html
16195 <div style="background: &#10;#00FF00">-</div>
16197 !! end
16199 !! test
16200 evil <math>-wiki-tags without Extension:Math enabled
16201 !! wikitext
16202 <math><img src="some evil external link"><script>some_evil_javascript();</script></math>
16203 !! html+tidy
16204 <p>&lt;math&gt;&lt;img src="some evil external link"&gt;&lt;script&gt;some_evil_javascript();&lt;/script&gt;&lt;/math&gt;</p>
16205 !! end
16208 ### Parser hooks (see tests/parser/parserTestsParserHook.php for the <tag> extension)
16210 !! test
16211 Parser hook: empty input
16212 !! wikitext
16213 <tag></tag>
16214 !! html/php
16215 <pre>
16217 array (
16219 </pre>
16221 !! html/parsoid
16222 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{},"body":{"extsrc":""}}' data-parsoid='{}' about="#mwt2"></pre>
16223 !! end
16225 ## Don't expect parsoid to rt this form.
16226 !! test
16227 Parser hook: empty input using terminated empty elements
16228 !! options
16229 parsoid=wt2html,html2html
16230 !! wikitext
16231 <tag/>
16232 !! html/php
16233 <pre>
16234 NULL
16235 array (
16237 </pre>
16239 !! html/parsoid
16240 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{},"body":null}' data-parsoid='{}' about="#mwt2"></pre>
16241 !! end
16243 !! test
16244 Parser hook: empty input using terminated empty elements (space before)
16245 !! wikitext
16246 <tag />
16247 !! html/php
16248 <pre>
16249 NULL
16250 array (
16252 </pre>
16254 !! html/parsoid
16255 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{},"body":null}' data-parsoid='{}' about="#mwt2"></pre>
16256 !! end
16258 !! test
16259 Parser hook: basic input
16260 !! wikitext
16261 <tag>input</tag>
16262 !! html/php
16263 <pre>
16264 'input'
16265 array (
16267 </pre>
16269 !! html/parsoid
16270 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{},"body":{"extsrc":"input"}}' data-parsoid='{}' about="#mwt2"></pre>
16271 !! end
16273 ## Don't expect parsoid to rt this form.
16274 !! test
16275 Parser hook: case insensitive
16276 !! options
16277 parsoid=wt2html,html2html
16278 !! wikitext
16279 <TAG>input</TAG>
16280 !! html/php
16281 <pre>
16282 'input'
16283 array (
16285 </pre>
16287 !! html/parsoid
16288 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{},"body":{"extsrc":"input"}}' data-parsoid='{}' about="#mwt2"></pre>
16289 !! end
16291 ## Don't expect parsoid to rt this form.
16292 !! test
16293 Parser hook: case insensitive, redux
16294 !! options
16295 parsoid=wt2html,html2html
16296 !! wikitext
16297 <TaG>input</TAg>
16298 !! html/php
16299 <pre>
16300 'input'
16301 array (
16303 </pre>
16305 !! html/parsoid
16306 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{},"body":{"extsrc":"input"}}' data-parsoid='{}' about="#mwt2"></pre>
16307 !! end
16309 !! test
16310 Parser hook: nested tags
16311 !! options
16312 noxml
16313 !! wikitext
16314 <tag><tag></tag></tag>
16315 !! html/php
16316 <pre>
16317 '<tag>'
16318 array (
16320 </pre>&lt;/tag&gt;
16322 !! html/parsoid
16323 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{},"body":{"extsrc":"&lt;tag>"}}' data-parsoid='{}' about="#mwt2"></pre>&lt;/tag>
16324 !! end
16326 !! test
16327 Parser hook: basic arguments
16328 !! wikitext
16329 <tag width="200" height="100" depth="50" square=""></tag>
16330 !! html/php
16331 <pre>
16333 array (
16334   'width' => '200',
16335   'height' => '100',
16336   'depth' => '50',
16337   'square' => '',
16339 </pre>
16341 !! html/parsoid
16342 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{"width":"200","height":"100","depth":"50","square":""},"body":{"extsrc":""}}' data-parsoid='{}' about="#mwt2"></pre>
16343 !! end
16345 ## Don't expect parsoid to rt this form.
16346 !! test
16347 Parser hook: basic arguments, variations
16348 !! options
16349 parsoid=wt2html,html2html
16350 !! wikitext
16351 <tag width=200 height = "100" depth = '50' square></tag>
16352 !! html/php
16353 <pre>
16355 array (
16356   'width' => '200',
16357   'height' => '100',
16358   'depth' => '50',
16359   'square' => '',
16361 </pre>
16363 !! html/parsoid
16364 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{"width":"200","height":"100","depth":"50","square":""},"body":{"extsrc":""}}' data-parsoid='{}' about="#mwt2"></pre>
16365 !! end
16367 !! test
16368 Parser hook: argument containing a forward slash (bug 5344)
16369 !! wikitext
16370 <tag filename="/tmp/bla"></tag>
16371 !! html/php
16372 <pre>
16374 array (
16375   'filename' => '/tmp/bla',
16377 </pre>
16379 !! html/parsoid
16380 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{"filename":"/tmp/bla"},"body":{"extsrc":""}}' data-parsoid='{}' about="#mwt2"></pre>
16381 !! end
16383 ## Don't expect parsoid to rt this form.
16384 !! test
16385 Parser hook: empty input using terminated empty elements (bug 2374)
16386 !! options
16387 parsoid=wt2html,html2html
16388 !! wikitext
16389 <tag foo=bar/>text
16390 !! html/php
16391 <pre>
16392 NULL
16393 array (
16394   'foo' => 'bar',
16396 </pre>text
16398 !! html/parsoid
16399 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{"foo":"bar"},"body":null}' data-parsoid='{}' about="#mwt2"></pre>text
16400 !! end
16402 # </tag> should be output literally since there is no matching tag that begins it
16403 !! test
16404 Parser hook: basic arguments using terminated empty elements (bug 2374)
16405 !! wikitext
16406 <tag width=200 height = "100" depth = '50' square/>
16407 other stuff
16408 </tag>
16409 !! html/php
16410 <pre>
16411 NULL
16412 array (
16413   'width' => '200',
16414   'height' => '100',
16415   'depth' => '50',
16416   'square' => '',
16418 </pre>
16419 <p>other stuff
16420 &lt;/tag&gt;
16421 </p>
16422 !! end
16425 ### (see tests/parser/parserTestsParserHook.php for the <statictag> extension)
16428 !! test
16429 Parser hook: static parser hook not inside a comment
16430 !! wikitext
16431 <statictag>hello, world</statictag>
16433 <statictag action="flush" />
16434 !! html/php
16435 <p><br />
16436 hello, world
16437 </p>
16438 !! html/parsoid
16439 <p><span typeof="mw:Extension/statictag" data-mw='{"name":"statictag","attrs":{},"body":{"extsrc":"hello, world"}}' data-parsoid='{}' about="#mwt2"></span></p>
16440 <p typeof="mw:Extension/statictag" data-mw='{"name":"statictag","attrs":{"action":"flush"},"body":null}' data-parsoid='{}' about="#mwt4">hello, world</p>
16441 !! end
16443 !! test
16444 Parser hook: static parser hook inside a comment
16445 !! wikitext
16446 <!-- <statictag>hello, world</statictag> -->
16447 <statictag action="flush" />
16448 !! html/php
16449 <p><br />
16450 </p>
16451 !! html/parsoid
16452 <!-- <statictag&#x3E;hello, world</statictag&#x3E; -->
16453 <p typeof="mw:Extension/statictag" data-mw='{"name":"statictag","attrs":{"action":"flush"},"body":null}' data-parsoid='{}' about="#mwt2"></p>
16454 !! end
16456 # Nested template calls; this case was broken by Parser.php rev 1.506,
16457 # since reverted.
16459 !! article
16460 Template:One-parameter
16461 !! text
16462 (My parameter is: {{{1}}})
16463 !! endarticle
16465 !! article
16466 Template:Map-one-parameter
16467 !! text
16468 {{{{{1}}}|{{{2}}}}}
16469 !! endarticle
16471 !! test
16472 Nested template calls
16473 !! wikitext
16474 {{Map-one-parameter|One-parameter|param}}
16475 !! html
16476 <p>(My parameter is: param)
16477 </p>
16478 !! end
16482 ### Sanitizer
16485 # HTML+Tidy effectively strips out the empty tags completely
16486 # But since Parsoid doesn't it wraps the <s></s> tags in p-tags
16487 # which Tidy would have done for the PHP parser had there been content inside it.
16488 !! test
16489 Sanitizer: Closing of open tags
16490 !! wikitext
16491 <s></s><table></table>
16492 !! html
16493 <s></s><table></table>
16495 !! html/parsoid
16496 <p><s></s></p><table></table>
16497 !! end
16499 !! test
16500 Sanitizer: Closing of open but not closed tags
16501 !! wikitext
16502 <s>foo
16503 !! html
16504 <p><s>foo</s>
16505 </p>
16506 !! end
16508 !! test
16509 Sanitizer: Closing of closed but not open tags
16510 !! options
16511 parsoid=wt2html
16512 !! wikitext
16513 </s>
16514 !! html/php+tidy
16515 !! html/parsoid
16516 !! end
16518 !! test
16519 Sanitizer: Closing of closed but not open table tags
16520 !! options
16521 parsoid=wt2html
16522 !! wikitext
16523 Table not started</td></tr></table>
16524 !! html/php+tidy
16525 <p>Table not started</p>
16526 !! html/parsoid
16527 <p>Table not started</p>
16528 !! end
16530 !! test
16531 Sanitizer: Escaping of spaces, multibyte characters, colons & other stuff in id=""
16532 !! wikitext
16533 <span id="æ: v">byte</span>[[#æ: v|backlink]]
16534 !! html
16535 <p><span id=".C3.A6:_v">byte</span><a href="#.C3.A6:_v">backlink</a>
16536 </p>
16537 !! end
16539 # In HTML5, the restrictions are that id must contain at least one character,
16540 # and must not contain any space characters.
16541 !! test
16542 Sanitizer: Validating the contents of the id attribute (bug 4515)
16543 !! options
16544 disabled
16545 !! wikitext
16546 <br id="" /><br id="a space" />
16547 !! html
16548 Something ...
16549 !! end
16551 # In HTML5, id must be unique amongst all the ids in the element's home subtree.
16552 !! test
16553 Sanitizer: Validating id attribute uniqueness (bug 4515, bug 6301)
16554 !! options
16555 disabled
16556 !! wikitext
16557 <br id="foo" /><br id="foo" />
16558 !! html
16559 Something need to be done. foo-2 ? 
16560 !! end
16562 !! test
16563 Sanitizer: Validating that <meta> and <link> work, but only for Microdata
16564 !! wikitext
16565 <div itemscope>
16566         <meta itemprop="hello" content="world">
16567         <meta http-equiv="refresh" content="5">
16568         <meta itemprop="hello" http-equiv="refresh" content="5">
16569         <link itemprop="hello" href="{{SERVER}}">
16570         <link rel="stylesheet" href="{{SERVER}}">
16571         <link rel="stylesheet" itemprop="hello" href="{{SERVER}}">
16572 </div>
16573 !! html
16574 <div itemscope="">
16575 <p>     <meta itemprop="hello" content="world" />
16576         &lt;meta http-equiv="refresh" content="5"&gt;
16577         <meta itemprop="hello" content="5" />
16578 </p>
16579         <link itemprop="hello" href="http&#58;//example.org" />
16580         &lt;link rel="stylesheet" href="<a rel="nofollow" class="external free" href="http://example.org">http://example.org</a>"&gt;
16581         <link itemprop="hello" href="http&#58;//example.org" />
16582 </div>
16584 !! end
16586 !! test
16587 Language converter: output gets cut off unexpectedly (bug 5757)
16588 !! options
16589 language=zh
16590 !! wikitext
16591 this bit is safe: }-
16593 but if we add a conversion instance: -{zh-cn:xxx;zh-tw:yyy}-
16595 then we get cut off here: }-
16597 all additional text is vanished
16598 !! html
16599 <p>this bit is safe: }-
16600 </p><p>but if we add a conversion instance: xxx
16601 </p><p>then we get cut off here: }-
16602 </p><p>all additional text is vanished
16603 </p>
16604 !! end
16606 !! test
16607 Self closed html pairs (bug 5487)
16608 !! options
16609 !! wikitext
16610 <center><font id="bug" />Centered text</center>
16611 <div><font id="bug2" />In div text</div>
16612 !! html
16613 <center>&lt;font id="bug" /&gt;Centered text</center>
16614 <div>&lt;font id="bug2" /&gt;In div text</div>
16616 !! end
16622 !! test
16623 Punctuation: nbsp before exclamation
16624 !! wikitext
16625 C'est grave !
16626 !! html
16627 <p>C'est grave&#160;!
16628 </p>
16629 !! end
16631 !! test
16632 Punctuation: CSS !important (bug 11874)
16633 !! wikitext
16634 <div style="width:50% !important">important</div>
16635 !! html
16636 <div style="width:50% !important">important</div>
16638 !!end
16640 !! test
16641 Punctuation: CSS ! important (bug 11874; with space after)
16642 !! wikitext
16643 <div style="width:50% ! important">important</div>
16644 !! html
16645 <div style="width:50% ! important">important</div>
16647 !!end
16649 !! test
16650 HTML bullet list, closed tags (bug 5497)
16651 !! wikitext
16652 <ul>
16653 <li>One</li>
16654 <li>Two</li>
16655 </ul>
16656 !! html/php
16657 <ul>
16658 <li>One</li>
16659 <li>Two</li>
16660 </ul>
16662 !! html/parsoid
16663 <ul data-parsoid='{"stx":"html"}'>
16664 <li data-parsoid='{"stx":"html"}'>One</li>
16665 <li data-parsoid='{"stx":"html"}'>Two</li>
16666 </ul>
16668 !! end
16670 !! test
16671 HTML bullet list, unclosed tags (bug 5497)
16672 !! wikitext
16673 <ul>
16674 <li>One
16675 <li>Two
16676 </ul>
16677 !! html/php+tidy
16678 <ul>
16679 <li>One</li>
16680 <li>Two</li>
16681 </ul>
16682 !! html/parsoid
16683 <ul data-parsoid='{"stx":"html"}'>
16684 <li data-parsoid='{"stx":"html","autoInsertedEnd":true}'>One</li>
16685 <li data-parsoid='{"stx":"html","autoInsertedEnd":true}'>Two</li>
16686 </ul>
16688 !! end
16690 !! test
16691 HTML ordered list, closed tags (bug 5497)
16692 !! wikitext
16693 <ol>
16694 <li>One</li>
16695 <li>Two</li>
16696 </ol>
16697 !! html/php
16698 <ol>
16699 <li>One</li>
16700 <li>Two</li>
16701 </ol>
16703 !! html/parsoid
16704 <ol data-parsoid='{"stx":"html"}'>
16705 <li data-parsoid='{"stx":"html"}'>One</li>
16706 <li data-parsoid='{"stx":"html"}'>Two</li>
16707 </ol>
16709 !! end
16711 !! test
16712 HTML ordered list, unclosed tags (bug 5497)
16713 !! options
16714 !! wikitext
16715 <ol>
16716 <li>One
16717 <li>Two
16718 </ol>
16719 !! html/php+tidy
16720 <ol>
16721 <li>One</li>
16722 <li>Two</li>
16723 </ol>
16724 !! html/parsoid
16725 <ol data-parsoid='{"stx":"html"}'>
16726 <li data-parsoid='{"stx":"html","autoInsertedEnd":true}'>One</li>
16727 <li data-parsoid='{"stx":"html","autoInsertedEnd":true}'>Two</li>
16728 </ol>
16730 !! end
16732 !! test
16733 HTML nested bullet list, closed tags (bug 5497)
16734 !! wikitext
16735 <ul>
16736 <li>One</li>
16737 <li>Two:
16738 <ul>
16739 <li>Sub-one</li>
16740 <li>Sub-two</li>
16741 </ul>
16742 </li>
16743 </ul>
16744 !! html
16745 <ul>
16746 <li>One</li>
16747 <li>Two:
16748 <ul>
16749 <li>Sub-one</li>
16750 <li>Sub-two</li>
16751 </ul>
16752 </li>
16753 </ul>
16755 !! end
16757 !! test
16758 HTML nested bullet list, open tags (bug 5497)
16759 !! wikitext
16760 <ul>
16761 <li>One
16762 <li>Two:
16763 <ul>
16764 <li>Sub-one
16765 <li>Sub-two
16766 </ul>
16767 </ul>
16768 !! html/php+tidy
16769 <ul>
16770 <li>One</li>
16771 <li>Two:
16772 <ul>
16773 <li>Sub-one</li>
16774 <li>Sub-two</li>
16775 </ul>
16776 </li>
16777 </ul>
16778 !! html/parsoid
16779 <ul>
16780 <li>One
16781 </li>
16782 <li>Two:
16783 <ul>
16784 <li>Sub-one
16785 </li>
16786 <li>Sub-two
16787 </li>
16788 </ul>
16789 </li>
16790 </ul>
16792 !! end
16794 !! test
16795 HTML nested ordered list, closed tags (bug 5497)
16796 !! wikitext
16797 <ol>
16798 <li>One</li>
16799 <li>Two:
16800 <ol>
16801 <li>Sub-one</li>
16802 <li>Sub-two</li>
16803 </ol>
16804 </li>
16805 </ol>
16806 !! html
16807 <ol>
16808 <li>One</li>
16809 <li>Two:
16810 <ol>
16811 <li>Sub-one</li>
16812 <li>Sub-two</li>
16813 </ol>
16814 </li>
16815 </ol>
16817 !! end
16819 !! test
16820 HTML nested ordered list, open tags (bug 5497)
16821 !! wikitext
16822 <ol>
16823 <li>One
16824 <li>Two:
16825 <ol>
16826 <li>Sub-one
16827 <li>Sub-two
16828 </ol>
16829 </ol>
16830 !! html/php
16831 <ol>
16832 <li>One
16833 <li>Two:
16834 <ol>
16835 <li>Sub-one
16836 <li>Sub-two
16837 </ol>
16838 </ol>
16840 !! html/parsoid
16841 <ol>
16842 <li>One
16843 </li>
16844 <li>Two:
16845 <ol>
16846 <li>Sub-one
16847 </li>
16848 <li>Sub-two
16849 </li>
16850 </ol>
16851 </li>
16852 </ol>
16854 !! end
16856 !! test
16857 HTML ordered list item with parameters oddity
16858 !! wikitext
16859 <ol><li id="fragment">One</li>
16860 </ol>
16861 !! html
16862 <ol><li id="fragment">One</li>
16863 </ol>
16865 !! end
16867 # parsoid doesn't explicitly mark autonumbered links, see bug 53505
16868 !!test
16869 bug 5918: autonumbering
16870 !! wikitext
16871 [http://first/] [http://second] [ftp://ftp]
16873 ftp://inlineftp
16875 [mailto:enclosed@mail.tld With target]
16877 [mailto:enclosed@mail.tld]
16879 mailto:inline@mail.tld
16880 !! html/php
16881 <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>
16882 </p><p><a rel="nofollow" class="external free" href="ftp://inlineftp">ftp://inlineftp</a>
16883 </p><p><a rel="nofollow" class="external text" href="mailto:enclosed@mail.tld">With target</a>
16884 </p><p><a rel="nofollow" class="external autonumber" href="mailto:enclosed@mail.tld">[4]</a>
16885 </p><p><a rel="nofollow" class="external free" href="mailto:inline@mail.tld">mailto:inline@mail.tld</a>
16886 </p>
16887 !! html/parsoid
16888 <p><a rel="mw:ExtLink" href="http://first/"></a> <a rel="mw:ExtLink" href="http://second"></a> <a rel="mw:ExtLink" href="ftp://ftp"></a></p>
16889 <p><a rel="mw:ExtLink" href="ftp://inlineftp">ftp://inlineftp</a></p>
16890 <p><a rel="mw:ExtLink" href="mailto:enclosed@mail.tld">With target</a></p>
16891 <p><a rel="mw:ExtLink" href="mailto:enclosed@mail.tld"></a></p>
16892 <p><a rel="mw:ExtLink" href="mailto:inline@mail.tld">mailto:inline@mail.tld</a></p>
16893 !! end
16897 # Security and HTML correctness
16898 # From Nick Jenkins' fuzz testing
16901 !! test
16902 Fuzz testing: Parser13
16903 !! wikitext
16904 {| 
16905 | http://a|
16906 !! html
16907 <table>
16908 <tr>
16909 <td>
16910 </td>
16911 </tr>
16912 </table>
16914 !! end
16916 !! test
16917 Fuzz testing: Parser14
16918 !! wikitext
16919 == onmouseover= ==
16920 http://__TOC__
16921 !! html
16922 <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&amp;action=edit&amp;section=1" title="Edit section: onmouseover=">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
16923 http://<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
16924 <ul>
16925 <li class="toclevel-1 tocsection-1"><a href="#onmouseover.3D"><span class="tocnumber">1</span> <span class="toctext">onmouseover=</span></a></li>
16926 </ul>
16927 </div>
16930 !! html+tidy
16931 <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&amp;action=edit&amp;section=1" title="Edit section: onmouseover=">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
16932 <p>http://</p>
16933 <div id="toc" class="toc">
16934 <div id="toctitle">
16935 <h2>Contents</h2>
16936 </div>
16937 <ul>
16938 <li class="toclevel-1 tocsection-1"><a href="#onmouseover.3D"><span class="tocnumber">1</span> <span class="toctext">onmouseover=</span></a></li>
16939 </ul>
16940 </div>
16941 <p></p>
16942 !! end
16944 !! test
16945 Fuzz testing: Parser14-table
16946 !! wikitext
16947 ==a==
16948 {| STYLE=__TOC__
16949 !! html
16950 <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&amp;action=edit&amp;section=1" title="Edit section: a">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
16951 <table style="&#95;_TOC&#95;_">
16952 <tr><td></td></tr>
16953 </table>
16955 !! html+tidy
16956 <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&amp;action=edit&amp;section=1" title="Edit section: a">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
16957 <table style="__TOC__">
16958 <tr>
16959 <td></td>
16960 </tr>
16961 </table>
16962 !! end
16964 # Known to produce bogus xml (extra </td>)
16965 !! test
16966 Fuzz testing: Parser16
16967 !! options
16968 noxml
16969 !! wikitext
16971 !https://||||||
16972 !! html
16973 <table>
16974 <tr>
16975 <th>https://</th>
16976 <th></th>
16977 <th></th>
16978 <th>
16979 </td>
16980 </tr>
16981 </table>
16983 !! html+tidy
16984 <table>
16985 <tr>
16986 <th>https://</th>
16987 <th></th>
16988 <th></th>
16989 <th></th>
16990 </tr>
16991 </table>
16992 !! end
16994 !! test
16995 Fuzz testing: Parser21
16996 !! wikitext
16998 ! irc://{{ftp://a" onmouseover="alert('hello world');"
17000 !! html
17001 <table>
17002 <tr>
17003 <th> <a rel="nofollow" class="external free" href="irc://{{ftp://a">irc://{{ftp://a</a>" onmouseover="alert('hello world');"
17004 </th>
17005 <td>
17006 </td>
17007 </tr>
17008 </table>
17010 !! end
17012 !! test
17013 Fuzz testing: Parser22
17014 !! wikitext
17015 http://===r:::https://b
17018 !! html
17019 <p><a rel="nofollow" class="external free" href="http://===r:::https://b">http://===r:::https://b</a>
17020 </p>
17021 <table>
17022 <tr><td></td></tr>
17023 </table>
17025 !! end
17027 # Known to produce bad XML for now
17028 !! test
17029 Fuzz testing: Parser24
17030 !! options
17031 noxml
17032 !! wikitext
17034 {{{|
17035 <u CLASS=
17036 | {{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}} >
17037 <br style="onmouseover='alert(document.cookie);' " />
17039 MOVE YOUR MOUSE CURSOR OVER THIS TEXT
17041 !! html
17042 <table>
17043 {{{|
17044 <u class="&#124;">}}}} &gt;
17045 <br style="onmouseover=&#39;alert(document.cookie);&#39;" />
17047 MOVE YOUR MOUSE CURSOR OVER THIS TEXT
17048 <tr>
17049 <td></u>
17050 </td>
17051 </tr>
17052 </table>
17054 !! end
17056 # Note: the current result listed for this is not what the original one was,
17057 # but the original bug was JavaScript injection, which is fixed in any case.
17058 # It's not clear that the original result listed was any more correct than the
17059 # current one.  Original result:
17060 # <p>{{{| 
17061 # </p>
17062 # <li class="&#124;&#124;">
17063 # }}}blah" onmouseover="alert('hello world');" align="left"<b>MOVE MOUSE CURSOR OVER HERE</b>
17064 !!test
17065 Fuzz testing: Parser25 (bug 6055)
17066 !! wikitext
17069 <LI CLASS=||
17071 }}}blah" onmouseover="alert('hello world');" align="left"'''MOVE MOUSE CURSOR OVER HERE
17072 !! html
17073 <p>&lt;LI CLASS=blah" onmouseover="alert('hello world');" align="left"<b>MOVE MOUSE CURSOR OVER HERE</b>
17074 </p>
17075 !! end
17077 !!test
17078 Fuzz testing: URL adjacent extension (with space, clean)
17079 !! wikitext
17080 http://example.com <nowiki>junk</nowiki>
17081 !! html/php
17082 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> junk
17083 </p>
17084 !! html/parsoid
17085 <p><a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a> <span typeof="mw:Nowiki">junk</span></p>
17086 !! end
17088 !!test
17089 Fuzz testing: URL adjacent extension (no space, dirty; nowiki)
17090 !! wikitext
17091 http://example.com<nowiki>junk</nowiki>
17092 !! html/php
17093 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>junk
17094 </p>
17095 !! html/parsoid
17096 <p><a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a><span typeof="mw:Nowiki">junk</span></p>
17097 !! end
17099 !!test
17100 Fuzz testing: URL adjacent extension (no space, dirty; pre)
17101 !! wikitext
17102 http://example.com<pre>junk</pre>
17103 !! html/php
17104 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a><pre>junk</pre>
17106 !! html/php+tidy
17107 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></p>
17108 <pre>
17109 junk
17110 </pre>
17111 !! html/parsoid
17112 <p><a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a></p><pre data-parsoid='{"stx":"html"}'>junk</pre>
17113 !!end
17115 !!test
17116 Fuzz testing: image with bogus manual thumbnail
17117 !! wikitext
17118 [[Image:foobar.jpg|thumbnail= ]]
17119 !! html/php
17120 <div class="thumb tright"><div class="thumbinner" style="width:182px;">Error creating thumbnail:   <div class="thumbcaption"></div></div></div>
17122 !! html/parsoid
17123 <figure class="mw-default-size" typeof="mw:Error mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"manualthumb","ak":"thumbnail= "}],"dsr":[0,32,2,2]}' data-mw='{"errors":[{"key":"missing-thumbnail","message":"This thumbnail does not exist.","params":{"name":""}}],"thumb":""}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{},"dsr":[2,30,null,null]}'><img resource="./File:Foobar.jpg" src="./Special:FilePath/" height="220" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"220"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure>
17124 !!end
17126 !! test
17127 Fuzz testing: encoded newline in generated HTML replacements (bug 6577)
17128 !! wikitext
17129 <pre dir="&#10;"></pre>
17130 !! html
17131 <pre dir="&#10;"></pre>
17133 !! end
17135 !! test
17136 Parsing optional HTML elements (Bug 6171)
17137 !! options
17138 !! wikitext
17139 <table>
17140   <tr>
17141     <td> Some tabular data</td>
17142     <td> More tabular data ...
17143     <td> And yet som tabular data</td>
17144   </tr>
17145 </table>
17146 !! html
17147 <table>
17148   <tr>
17149     <td> Some tabular data</td>
17150     <td> More tabular data ...
17151     </td><td> And yet som tabular data</td>
17152   </tr>
17153 </table>
17155 !! end
17157 !! test
17158 Correct handling of <td>, <tr> (Bug 6171)
17159 !! options
17160 !! wikitext
17161 <table>
17162   <tr>
17163     <td> Some tabular data</td>
17164     <td> More tabular data ...</td>
17165     <td> And yet som tabular data</td>
17166   </tr>
17167 </table>
17168 !! html
17169 <table>
17170   <tr>
17171     <td> Some tabular data</td>
17172     <td> More tabular data ...</td>
17173     <td> And yet som tabular data</td>
17174   </tr>
17175 </table>
17177 !! end
17180 !! test
17181 Parsing crashing regression (fr:JavaScript)
17182 !! wikitext
17183 </body></x>
17184 !! html
17185 <p>&lt;/body&gt;&lt;/x&gt;
17186 </p>
17187 !! end
17189 !! test
17190 Inline wiki vs wiki block nesting
17191 !! wikitext
17192 '''Bold paragraph
17194 New wiki paragraph
17195 !! html
17196 <p><b>Bold paragraph</b>
17197 </p><p>New wiki paragraph
17198 </p>
17199 !! end
17201 # FIXME: The current php output is documented
17202 # and desired output is the parsoid target.
17203 !! test
17204 Inline HTML vs wiki block nesting
17205 !! wikitext
17206 <b>Bold paragraph
17208 New wiki paragraph
17209 !! html/php
17210 <p><b>Bold paragraph
17211 </p><p>New wiki paragraph</b>
17212 </p>
17213 !! html/parsoid
17214 <p><b>Bold paragraph</b>
17215 </p><p>New wiki paragraph
17216 </p>
17217 !! end
17219 # Original result was this:
17220 # <p><b>bold</b><b>bold<i>bolditalics</i></b>
17221 # </p>
17222 # While that might be marginally more intuitive, maybe, the six-apostrophe
17223 # construct is clearly pathological and the result stated here (which is what
17224 # the parser actually does) is about as reasonable as anything.
17225 !!test
17226 Mixing markup for italics and bold
17227 !! options
17228 !! wikitext
17229 '''bold''''''bold''bolditalics'''''
17230 !! html
17231 <p>'<i>bold'</i><b>bold<i>bolditalics</i></b>
17232 </p>
17233 !! end
17236 !! article
17237 Xyzzyx
17238 !! text
17239 Article for special page transclusion test
17240 !! endarticle
17242 !! test
17243 Special page transclusion
17244 !! options
17245 !! wikitext
17246 {{Special:Prefixindex/Xyzzyx}}
17247 !! html
17248 <ul class="mw-prefixindex-list"><li><a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a></li>
17249 </ul>
17251 !! end
17253 !! test
17254 Special page transclusion twice (bug 5021)
17255 !! options
17256 !! wikitext
17257 {{Special:Prefixindex/Xyzzyx}}
17258 {{Special:Prefixindex/Xyzzyx}}
17259 !! html
17260 <ul class="mw-prefixindex-list"><li><a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a></li>
17261 </ul>
17262 <ul class="mw-prefixindex-list"><li><a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a></li>
17263 </ul>
17265 !! end
17267 !! test
17268 Transclusion of default MediaWiki message
17269 !! wikitext
17270 {{MediaWiki:Mainpage}}
17271 !! html
17272 <p>Main Page
17273 </p>
17274 !! end
17276 !! test
17277 Transclusion of nonexistent MediaWiki message
17278 !! wikitext
17279 {{MediaWiki:Mainpagexxx}}
17280 !! html
17281 <p><a href="/index.php?title=MediaWiki:Mainpagexxx&amp;action=edit&amp;redlink=1" class="new" title="MediaWiki:Mainpagexxx (page does not exist)">MediaWiki:Mainpagexxx</a>
17282 </p>
17283 !! end
17285 !! test
17286 Transclusion of MediaWiki message with underscore
17287 !! wikitext
17288 {{MediaWiki:history_short}}
17289 !! html
17290 <p>History
17291 </p>
17292 !! end
17294 !! test
17295 Transclusion of MediaWiki message with space
17296 !! wikitext
17297 {{MediaWiki:history short}}
17298 !! html
17299 <p>History
17300 </p>
17301 !! end
17303 !! test
17304 Invalid header with following text
17305 !! wikitext
17306 = x = y
17307 !! html
17308 <p>= x = y
17309 </p>
17310 !! end
17313 !! test
17314 Section extraction test (section 0)
17315 !! options
17316 section=0
17317 !! wikitext
17318 start
17319 ==a==
17320 ===aa===
17321 ====aaa====
17322 ==b==
17323 ===ba===
17324 ===bb===
17325 ====bba====
17326 ===bc===
17327 ==c==
17328 ===ca===
17329 !! html/php
17330 start
17331 !! end
17333 !! test
17334 Section extraction test (section 1)
17335 !! options
17336 section=1
17337 !! wikitext
17338 start
17339 ==a==
17340 ===aa===
17341 ====aaa====
17342 ==b==
17343 ===ba===
17344 ===bb===
17345 ====bba====
17346 ===bc===
17347 ==c==
17348 ===ca===
17349 !! html/php
17350 ==a==
17351 ===aa===
17352 ====aaa====
17353 !! end
17355 !! test
17356 Section extraction test (section 2)
17357 !! options
17358 section=2
17359 !! wikitext
17360 start
17361 ==a==
17362 ===aa===
17363 ====aaa====
17364 ==b==
17365 ===ba===
17366 ===bb===
17367 ====bba====
17368 ===bc===
17369 ==c==
17370 ===ca===
17371 !! html/php
17372 ===aa===
17373 ====aaa====
17374 !! end
17376 !! test
17377 Section extraction test (section 3)
17378 !! options
17379 section=3
17380 !! wikitext
17381 start
17382 ==a==
17383 ===aa===
17384 ====aaa====
17385 ==b==
17386 ===ba===
17387 ===bb===
17388 ====bba====
17389 ===bc===
17390 ==c==
17391 ===ca===
17392 !! html/php
17393 ====aaa====
17394 !! end
17396 !! test
17397 Section extraction test (section 4)
17398 !! options
17399 section=4
17400 !! wikitext
17401 start
17402 ==a==
17403 ===aa===
17404 ====aaa====
17405 ==b==
17406 ===ba===
17407 ===bb===
17408 ====bba====
17409 ===bc===
17410 ==c==
17411 ===ca===
17412 !! html/php
17413 ==b==
17414 ===ba===
17415 ===bb===
17416 ====bba====
17417 ===bc===
17418 !! end
17420 !! test
17421 Section extraction test (section 5)
17422 !! options
17423 section=5
17424 !! wikitext
17425 start
17426 ==a==
17427 ===aa===
17428 ====aaa====
17429 ==b==
17430 ===ba===
17431 ===bb===
17432 ====bba====
17433 ===bc===
17434 ==c==
17435 ===ca===
17436 !! html/php
17437 ===ba===
17438 !! end
17440 !! test
17441 Section extraction test (section 6)
17442 !! options
17443 section=6
17444 !! wikitext
17445 start
17446 ==a==
17447 ===aa===
17448 ====aaa====
17449 ==b==
17450 ===ba===
17451 ===bb===
17452 ====bba====
17453 ===bc===
17454 ==c==
17455 ===ca===
17456 !! html/php
17457 ===bb===
17458 ====bba====
17459 !! end
17461 !! test
17462 Section extraction test (section 7)
17463 !! options
17464 section=7
17465 !! wikitext
17466 start
17467 ==a==
17468 ===aa===
17469 ====aaa====
17470 ==b==
17471 ===ba===
17472 ===bb===
17473 ====bba====
17474 ===bc===
17475 ==c==
17476 ===ca===
17477 !! html/php
17478 ====bba====
17479 !! end
17481 !! test
17482 Section extraction test (section 8)
17483 !! options
17484 section=8
17485 !! wikitext
17486 start
17487 ==a==
17488 ===aa===
17489 ====aaa====
17490 ==b==
17491 ===ba===
17492 ===bb===
17493 ====bba====
17494 ===bc===
17495 ==c==
17496 ===ca===
17497 !! html/php
17498 ===bc===
17499 !! end
17501 !! test
17502 Section extraction test (section 9)
17503 !! options
17504 section=9
17505 !! wikitext
17506 start
17507 ==a==
17508 ===aa===
17509 ====aaa====
17510 ==b==
17511 ===ba===
17512 ===bb===
17513 ====bba====
17514 ===bc===
17515 ==c==
17516 ===ca===
17517 !! html/php
17518 ==c==
17519 ===ca===
17520 !! end
17522 !! test
17523 Section extraction test (section 10)
17524 !! options
17525 section=10
17526 !! wikitext
17527 start
17528 ==a==
17529 ===aa===
17530 ====aaa====
17531 ==b==
17532 ===ba===
17533 ===bb===
17534 ====bba====
17535 ===bc===
17536 ==c==
17537 ===ca===
17538 !! html/php
17539 ===ca===
17540 !! end
17542 !! test
17543 Section extraction test (nonexistent section 11)
17544 !! options
17545 section=11
17546 !! wikitext
17547 start
17548 ==a==
17549 ===aa===
17550 ====aaa====
17551 ==b==
17552 ===ba===
17553 ===bb===
17554 ====bba====
17555 ===bc===
17556 ==c==
17557 ===ca===
17558 !! html/php
17559 !! end
17561 !! test
17562 Section extraction test with bogus heading (section 1)
17563 !! options
17564 section=1
17565 !! wikitext
17566 ==a==
17567 ==bogus== not a legal section
17568 ==b==
17569 !! html/php
17570 ==a==
17571 ==bogus== not a legal section
17572 !! end
17574 !! test
17575 Section extraction test with bogus heading (section 2)
17576 !! options
17577 section=2
17578 !! wikitext
17579 ==a==
17580 ==bogus== not a legal section
17581 ==b==
17582 !! html/php
17583 ==b==
17584 !! end
17586 !! test
17587 Section extraction test with comment after heading (section 1)
17588 !! options
17589 section=1
17590 !! wikitext
17591 ==a==
17592 ==b== <!-- -->
17593 ==c==
17594 !! html/php
17595 ==a==
17596 !! end
17598 !! test
17599 Section extraction test with comment after heading (section 2)
17600 !! options
17601 section=2
17602 !! wikitext
17603 ==a==
17604 ==b== <!-- -->
17605 ==c==
17606 !! html/php
17607 ==b== <!-- -->
17608 !! end
17610 !! test
17611 Section extraction test with bogus <nowiki> heading (section 1)
17612 !! options
17613 section=1
17614 !! wikitext
17615 ==a==
17616 ==bogus== <nowiki>not a legal section</nowiki>
17617 ==b==
17618 !! html/php
17619 ==a==
17620 ==bogus== <nowiki>not a legal section</nowiki>
17621 !! end
17623 !! test
17624 Section extraction test with bogus <nowiki> heading (section 2)
17625 !! options
17626 section=2
17627 !! wikitext
17628 ==a==
17629 ==bogus== <nowiki>not a legal section</nowiki>
17630 ==b==
17631 !! html/php
17632 ==b==
17633 !! end
17635 # Formerly testing for bug 2587, now resolved by the use of unmarked sections
17636 # instead of respecting commented sections
17637 !! test
17638 Section extraction prefixed by comment (section 1)
17639 !! options
17640 section=1
17641 !! wikitext
17642 <!-- -->==sec1==
17643 ==sec2==
17644 !! html/php
17645 ==sec2==
17646 !!end
17648 !! test
17649 Section extraction prefixed by comment (section 2)
17650 !! options
17651 section=2
17652 !! wikitext
17653 <!-- -->==sec1==
17654 ==sec2==
17655 !! html/php
17657 !!end
17659 # Formerly testing for bug 2607, now resolved by the use of unmarked sections
17660 # instead of respecting HTML-style headings
17661 !! test
17662 Section extraction, mixed wiki and html (section 1)
17663 !! options
17664 section=1
17665 !! wikitext
17666 <h2>unmarked</h2>
17667 unmarked
17668 ==1==
17670 ==2==
17672 !! html/php
17673 ==1==
17675 !! end
17677 !! test
17678 Section extraction, mixed wiki and html (section 2)
17679 !! options
17680 section=2
17681 !! wikitext
17682 <h2>unmarked</h2>
17683 unmarked
17684 ==1==
17686 ==2==
17688 !! html/php
17689 ==2==
17691 !! end
17694 # Formerly testing for bug 3342
17695 !! test
17696 Section extraction, heading surrounded by <noinclude>
17697 !! options
17698 section=1
17699 !! wikitext
17700 <noinclude>==unmarked==</noinclude>
17701 ==marked==
17702 !! html/php
17703 ==marked==
17704 !!end
17706 # Test behavior of bug 19910
17707 !! test
17708 Sectiion with all-equals
17709 !! options
17710 section=2
17711 !! wikitext
17712 === 
17713 The line above must have a trailing space
17714 === <!--
17715 --> <!-- -->
17716 But just in case it doesn't...
17717 !! html/php
17718 === <!--
17719 --> <!-- -->
17720 But just in case it doesn't...
17721 !! end
17723 !! test
17724 Section replacement test (section 0)
17725 !! options
17726 replace=0,"xxx"
17727 !! wikitext
17728 start
17729 ==a==
17730 ===aa===
17731 ====aaa====
17732 ==b==
17733 ===ba===
17734 ===bb===
17735 ====bba====
17736 ===bc===
17737 ==c==
17738 ===ca===
17739 !! html/php
17742 ==a==
17743 ===aa===
17744 ====aaa====
17745 ==b==
17746 ===ba===
17747 ===bb===
17748 ====bba====
17749 ===bc===
17750 ==c==
17751 ===ca===
17752 !! end
17754 !! test
17755 Section replacement test (section 1)
17756 !! options
17757 replace=1,"xxx"
17758 !! wikitext
17759 start
17760 ==a==
17761 ===aa===
17762 ====aaa====
17763 ==b==
17764 ===ba===
17765 ===bb===
17766 ====bba====
17767 ===bc===
17768 ==c==
17769 ===ca===
17770 !! html/php
17771 start
17774 ==b==
17775 ===ba===
17776 ===bb===
17777 ====bba====
17778 ===bc===
17779 ==c==
17780 ===ca===
17781 !! end
17783 !! test
17784 Section replacement test (section 2)
17785 !! options
17786 replace=2,"xxx"
17787 !! wikitext
17788 start
17789 ==a==
17790 ===aa===
17791 ====aaa====
17792 ==b==
17793 ===ba===
17794 ===bb===
17795 ====bba====
17796 ===bc===
17797 ==c==
17798 ===ca===
17799 !! html/php
17800 start
17801 ==a==
17804 ==b==
17805 ===ba===
17806 ===bb===
17807 ====bba====
17808 ===bc===
17809 ==c==
17810 ===ca===
17811 !! end
17813 !! test
17814 Section replacement test (section 3)
17815 !! options
17816 replace=3,"xxx"
17817 !! wikitext
17818 start
17819 ==a==
17820 ===aa===
17821 ====aaa====
17822 ==b==
17823 ===ba===
17824 ===bb===
17825 ====bba====
17826 ===bc===
17827 ==c==
17828 ===ca===
17829 !! html/php
17830 start
17831 ==a==
17832 ===aa===
17835 ==b==
17836 ===ba===
17837 ===bb===
17838 ====bba====
17839 ===bc===
17840 ==c==
17841 ===ca===
17842 !! end
17844 !! test
17845 Section replacement test (section 4)
17846 !! options
17847 replace=4,"xxx"
17848 !! wikitext
17849 start
17850 ==a==
17851 ===aa===
17852 ====aaa====
17853 ==b==
17854 ===ba===
17855 ===bb===
17856 ====bba====
17857 ===bc===
17858 ==c==
17859 ===ca===
17860 !! html/php
17861 start
17862 ==a==
17863 ===aa===
17864 ====aaa====
17867 ==c==
17868 ===ca===
17869 !! end
17871 !! test
17872 Section replacement test (section 5)
17873 !! options
17874 replace=5,"xxx"
17875 !! wikitext
17876 start
17877 ==a==
17878 ===aa===
17879 ====aaa====
17880 ==b==
17881 ===ba===
17882 ===bb===
17883 ====bba====
17884 ===bc===
17885 ==c==
17886 ===ca===
17887 !! html/php
17888 start
17889 ==a==
17890 ===aa===
17891 ====aaa====
17892 ==b==
17895 ===bb===
17896 ====bba====
17897 ===bc===
17898 ==c==
17899 ===ca===
17900 !! end
17902 !! test
17903 Section replacement test (section 6)
17904 !! options
17905 replace=6,"xxx"
17906 !! wikitext
17907 start
17908 ==a==
17909 ===aa===
17910 ====aaa====
17911 ==b==
17912 ===ba===
17913 ===bb===
17914 ====bba====
17915 ===bc===
17916 ==c==
17917 ===ca===
17918 !! html/php
17919 start
17920 ==a==
17921 ===aa===
17922 ====aaa====
17923 ==b==
17924 ===ba===
17927 ===bc===
17928 ==c==
17929 ===ca===
17930 !! end
17932 !! test
17933 Section replacement test (section 7)
17934 !! options
17935 replace=7,"xxx"
17936 !! wikitext
17937 start
17938 ==a==
17939 ===aa===
17940 ====aaa====
17941 ==b==
17942 ===ba===
17943 ===bb===
17944 ====bba====
17945 ===bc===
17946 ==c==
17947 ===ca===
17948 !! html/php
17949 start
17950 ==a==
17951 ===aa===
17952 ====aaa====
17953 ==b==
17954 ===ba===
17955 ===bb===
17958 ===bc===
17959 ==c==
17960 ===ca===
17961 !! end
17963 !! test
17964 Section replacement test (section 8)
17965 !! options
17966 replace=8,"xxx"
17967 !! wikitext
17968 start
17969 ==a==
17970 ===aa===
17971 ====aaa====
17972 ==b==
17973 ===ba===
17974 ===bb===
17975 ====bba====
17976 ===bc===
17977 ==c==
17978 ===ca===
17979 !! html/php
17980 start
17981 ==a==
17982 ===aa===
17983 ====aaa====
17984 ==b==
17985 ===ba===
17986 ===bb===
17987 ====bba====
17990 ==c==
17991 ===ca===
17992 !!end
17994 !! test
17995 Section replacement test (section 9)
17996 !! options
17997 replace=9,"xxx"
17998 !! wikitext
17999 start
18000 ==a==
18001 ===aa===
18002 ====aaa====
18003 ==b==
18004 ===ba===
18005 ===bb===
18006 ====bba====
18007 ===bc===
18008 ==c==
18009 ===ca===
18010 !! html/php
18011 start
18012 ==a==
18013 ===aa===
18014 ====aaa====
18015 ==b==
18016 ===ba===
18017 ===bb===
18018 ====bba====
18019 ===bc===
18021 !! end
18023 !! test
18024 Section replacement test (section 10)
18025 !! options
18026 replace=10,"xxx"
18027 !! wikitext
18028 start
18029 ==a==
18030 ===aa===
18031 ====aaa====
18032 ==b==
18033 ===ba===
18034 ===bb===
18035 ====bba====
18036 ===bc===
18037 ==c==
18038 ===ca===
18039 !! html/php
18040 start
18041 ==a==
18042 ===aa===
18043 ====aaa====
18044 ==b==
18045 ===ba===
18046 ===bb===
18047 ====bba====
18048 ===bc===
18049 ==c==
18051 !! end
18053 !! test
18054 Section replacement test with initial whitespace (bug 13728)
18055 !! options
18056 replace=2,"xxx"
18057 !! wikitext
18058  Preformatted initial line
18059 ==a==
18060 ===a===
18061 !! html/php
18062  Preformatted initial line
18063 ==a==
18065 !! end
18068 !! test
18069 Section extraction, heading followed by pre with 20 spaces (bug 6398)
18070 !! options
18071 section=1
18072 !! wikitext
18073 ==a==
18074                     a
18075 !! html/php
18076 ==a==
18077                     a
18078 !! end
18080 !! test
18081 Section extraction, heading followed by pre with 19 spaces (bug 6398 sanity check)
18082 !! options
18083 section=1
18084 !! wikitext
18085 ==a==
18086                    a
18087 !! html/php
18088 ==a==
18089                    a
18090 !! end
18093 !! test
18094 Section extraction, <pre> around bogus header (bug 10309)
18095 !! options
18096 noxml section=2
18097 !! wikitext
18098 == Section One ==
18099 <pre>
18100 =======
18101 </pre>
18103 == Section Two ==
18104 stuff
18105 !! html/php
18106 == Section Two ==
18107 stuff
18108 !! end
18110 !! test
18111 Section replacement, <pre> around bogus header (bug 10309)
18112 !! options
18113 noxml replace=2,"xxx"
18114 !! wikitext
18115 == Section One ==
18116 <pre>
18117 =======
18118 </pre>
18120 == Section Two ==
18121 stuff
18122 !! html/php
18123 == Section One ==
18124 <pre>
18125 =======
18126 </pre>
18129 !! end
18132 !! test
18133 Handling of &#x0A; in URLs
18134 !! wikitext
18135 ** irc://&#x0A;a
18136 !! html/php
18137 <ul><li><ul><li> <a rel="nofollow" class="external free" href="irc://%0Aa">irc://%0Aa</a></li></ul></li></ul>
18139 !! html/parsoid
18140 <ul><li><ul><li> <a rel="mw:ExtLink" href="irc://
18141 a">irc://
18142 a</a></li></ul></li></ul>
18143 !! end
18145 !! test
18146 Handling of %0A in URLs
18147 !! wikitext
18148 ** irc://%0Aa
18149 !! html/php
18150 <ul><li><ul><li> <a rel="nofollow" class="external free" href="irc://%0Aa">irc://%0Aa</a></li></ul></li></ul>
18152 !! html/parsoid
18153 <ul><li><ul><li> <a rel="mw:ExtLink" href="irc://%0Aa">irc://%0Aa</a></li></ul></li></ul>
18154 !! end
18157 # The PHP parser strips the empty tags out for giggles; parsoid doesn't.
18158 !! test
18159 5 quotes, code coverage +1 line
18160 !! options
18161 parsoid=wt2html
18162 !! wikitext
18163 '''''
18164 !! html/php
18165 !! html/parsoid
18166 <p><b><i></i></b></p>
18167 !! end
18169 # same html as previous, but wikitext adjusted to match parsoid html2wt
18170 # note that wt2html and html2html will put the <i> before the <b>
18171 !! test
18172 5 quotes, code coverage +1 line w/ nowiki (1)
18173 !! options
18174 parsoid=wt2wt,html2wt
18175 !! wikitext
18176 '''''<nowiki/>'''''
18177 !! html/php
18178 <p><i></i>
18179 </p>
18180 !! html/parsoid
18181 <p><b><i></i></b></p>
18182 !! end
18184 # same as previous, just swapping the <i> and <b>
18185 !! test
18186 5 quotes, code coverage +1 line w/ nowiki (2)
18187 !! wikitext
18188 '''''<nowiki/>'''''
18189 !! html/php
18190 <p><i></i>
18191 </p>
18192 !! html/parsoid
18193 <p><i><b></b></i></p>
18194 !! end
18196 !! test
18197 Special:Search page linking.
18198 !! wikitext
18199 {{Special:search}}
18200 !! html
18201 <p><a href="/wiki/Special:Search" title="Special:Search">Special:Search</a>
18202 </p>
18203 !! end
18205 !! test
18206 {{!}} is a magic word
18207 !! wikitext
18208 {{!}} is a magic word there and {{!}} is still a magic word here
18209 | is not a magic word here but {{!}} is still a magic word here
18210 !! html/php
18211 <p>| is a magic word there and | is still a magic word here
18212 | is not a magic word here but | is still a magic word here
18213 </p>
18214 !! html/parsoid
18215 <p><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","href":"./Template:!"},"params":{},"i":0}}]}'>|</span> is a magic word there and <span about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","href":"./Template:!"},"params":{},"i":0}}]}'>|</span> is still a magic word here
18216 | is not a magic word here but <span about="#mwt3" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","href":"./Template:!"},"params":{},"i":0}}]}'>|</span> is still a magic word here</p>
18218 !! end
18220 !! test
18221 Say the magic word
18222 !! options
18223 title=[[Parser test]]
18224 !! wikitext
18225 * {{PAGENAME}}
18226 * {{PAGENAMEE}}
18227 * {{FULLPAGENAME}}
18228 * {{FULLPAGENAMEE}}
18229 * {{BASEPAGENAME}}
18230 * {{BASEPAGENAMEE}}
18231 * {{SUBPAGENAME}}
18232 * {{SUBPAGENAMEE}}
18233 * {{ROOTPAGENAME}}
18234 * {{ROOTPAGENAMEE}}
18235 * {{TALKPAGENAME}}
18236 * {{TALKPAGENAMEE}}
18237 * {{SUBJECTPAGENAME}}
18238 * {{SUBJECTPAGENAMEE}}
18239 * {{NAMESPACEE}}
18240 * {{NAMESPACE}}
18241 * {{NAMESPACENUMBER}}
18242 * {{TALKSPACE}}
18243 * {{TALKSPACEE}}
18244 * {{SUBJECTSPACE}}
18245 * {{SUBJECTSPACEE}}
18246 * {{Dynamic|{{NUMBEROFUSERS}}|{{NUMBEROFPAGES}}|{{CURRENTVERSION}}|{{CONTENTLANGUAGE}}|{{DIRECTIONMARK}}|{{CURRENTTIMESTAMP}}|{{NUMBEROFARTICLES}}}}
18247 !! html
18248 <ul><li> Parser test</li>
18249 <li> Parser_test</li>
18250 <li> Parser test</li>
18251 <li> Parser_test</li>
18252 <li> Parser test</li>
18253 <li> Parser_test</li>
18254 <li> Parser test</li>
18255 <li> Parser_test</li>
18256 <li> Parser test</li>
18257 <li> Parser_test</li>
18258 <li> Talk:Parser test</li>
18259 <li> Talk:Parser_test</li>
18260 <li> Parser test</li>
18261 <li> Parser_test</li>
18262 <li> </li>
18263 <li> </li>
18264 <li> 0</li>
18265 <li> Talk</li>
18266 <li> Talk</li>
18267 <li> </li>
18268 <li> </li>
18269 <li> <a href="/index.php?title=Template:Dynamic&amp;action=edit&amp;redlink=1" class="new" title="Template:Dynamic (page does not exist)">Template:Dynamic</a></li></ul>
18271 !! end
18272 ### Note: Above tests excludes the "{{NUMBEROFADMINS}}" magic word because it generates a MySQL error when included.
18274 !! test
18275 Gallery
18276 !! wikitext
18277 <gallery>
18278 image1.png |
18279 image2.gif|||||
18281 image3|
18282 image4    |300px| centre
18283  image5.svg| http://///////
18284 [[x|xx]]]]
18285 * image6
18286 </gallery>
18287 !! html
18288 <ul class="gallery mw-gallery-traditional">
18289                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18290                         <div class="thumb" style="height: 150px;">Image1.png</div>
18291                         <div class="gallerytext">
18292                         </div>
18293                 </div></li>
18294                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18295                         <div class="thumb" style="height: 150px;">Image2.gif</div>
18296                         <div class="gallerytext">
18297 <p>||||
18298 </p>
18299                         </div>
18300                 </div></li>
18301                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18302                         <div class="thumb" style="height: 150px;">Image3</div>
18303                         <div class="gallerytext">
18304                         </div>
18305                 </div></li>
18306                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18307                         <div class="thumb" style="height: 150px;">Image4</div>
18308                         <div class="gallerytext">
18309 <p>300px| centre
18310 </p>
18311                         </div>
18312                 </div></li>
18313                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18314                         <div class="thumb" style="height: 150px;">Image5.svg</div>
18315                         <div class="gallerytext">
18316 <p><a rel="nofollow" class="external free" href="http://///////">http://///////</a>
18317 </p>
18318                         </div>
18319                 </div></li>
18320                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18321                         <div class="thumb" style="height: 150px;">* image6</div>
18322                         <div class="gallerytext">
18323                         </div>
18324                 </div></li>
18325 </ul>
18327 !! end
18329 !! test
18330 Gallery (with options)
18331 !! wikitext
18332 <gallery widths='70px' heights='40px' perrow='2' caption='Foo [[Main Page]]' >
18333 File:Nonexistent.jpg|caption
18334 File:Nonexistent.jpg
18335 image:foobar.jpg|some '''caption''' [[Main Page]]
18336 image:foobar.jpg
18337 image:foobar.jpg|Blabla|alt=This is a foo-bar.|blabla.
18338 </gallery>
18339 !! html
18340 <ul class="gallery mw-gallery-traditional" style="max-width: 226px;_width: 226px;">
18341         <li class='gallerycaption'>Foo <a href="/wiki/Main_Page" title="Main Page">Main Page</a></li>
18342                 <li class="gallerybox" style="width: 105px"><div style="width: 105px">
18343                         <div class="thumb" style="height: 70px;">Nonexistent.jpg</div>
18344                         <div class="gallerytext">
18345 <p>caption
18346 </p>
18347                         </div>
18348                 </div></li>
18349                 <li class="gallerybox" style="width: 105px"><div style="width: 105px">
18350                         <div class="thumb" style="height: 70px;">Nonexistent.jpg</div>
18351                         <div class="gallerytext">
18352                         </div>
18353                 </div></li>
18354                 <li class="gallerybox" style="width: 105px"><div style="width: 105px">
18355                         <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
18356                         <div class="gallerytext">
18357 <p>some <b>caption</b> <a href="/wiki/Main_Page" title="Main Page">Main Page</a>
18358 </p>
18359                         </div>
18360                 </div></li>
18361                 <li class="gallerybox" style="width: 105px"><div style="width: 105px">
18362                         <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
18363                         <div class="gallerytext">
18364                         </div>
18365                 </div></li>
18366                 <li class="gallerybox" style="width: 105px"><div style="width: 105px">
18367                         <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="This is a foo-bar." src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
18368                         <div class="gallerytext">
18369 <p>Blabla|blabla.
18370 </p>
18371                         </div>
18372                 </div></li>
18373 </ul>
18375 !! end
18377 !! test
18378 Gallery with link that has fragment
18379 !! wikitext
18380 <gallery>
18381 image:foobar.jpg|link=Main_Page
18382 image:foobar.jpg|link=Main_Page#section
18383 image:foobar.jpg|link=Main Page#section|caption
18384 </gallery>
18385 !! html
18386 <ul class="gallery mw-gallery-traditional">
18387                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18388                         <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Main_Page"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
18389                         <div class="gallerytext">
18390                         </div>
18391                 </div></li>
18392                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18393                         <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Main_Page#section"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
18394                         <div class="gallerytext">
18395                         </div>
18396                 </div></li>
18397                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18398                         <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Main_Page#section"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
18399                         <div class="gallerytext">
18400 <p>caption
18401 </p>
18402                         </div>
18403                 </div></li>
18404 </ul>
18406 !! end
18408 !! test
18409 Gallery with wikitext inside caption
18410 !! wikitext
18411 <gallery>
18412 File:foobar.jpg|[[File:foobar.jpg|20px|desc|alt=inneralt]]|alt=galleryalt
18413 File:foobar.jpg|{{Test|unamedParam|alt=param}}|alt=galleryalt
18414 </gallery>
18415 !! html
18416 <ul class="gallery mw-gallery-traditional">
18417                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18418                         <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" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
18419                         <div class="gallerytext">
18420 <p><a href="/wiki/File:Foobar.jpg" class="image" title="desc"><img alt="inneralt" 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>
18421 </p>
18422                         </div>
18423                 </div></li>
18424                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18425                         <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" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
18426                         <div class="gallerytext">
18427 <p>This is a test template
18428 </p>
18429                         </div>
18430                 </div></li>
18431 </ul>
18433 !! end
18435 !! test
18436 gallery (with showfilename option)
18437 !! wikitext
18438 <gallery showfilename>
18439 File:Nonexistent.jpg|caption
18440 File:Nonexistent.jpg
18441 image:foobar.jpg|some '''caption''' [[Main Page]]
18442 File:Foobar.jpg
18443 </gallery>
18444 !! html
18445 <ul class="gallery mw-gallery-traditional">
18446                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18447                         <div class="thumb" style="height: 150px;">Nonexistent.jpg</div>
18448                         <div class="gallerytext">
18449 <p><a href="/wiki/File:Nonexistent.jpg" title="File:Nonexistent.jpg">Nonexistent.jpg</a><br />
18450 caption
18451 </p>
18452                         </div>
18453                 </div></li>
18454                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18455                         <div class="thumb" style="height: 150px;">Nonexistent.jpg</div>
18456                         <div class="gallerytext">
18457 <p><a href="/wiki/File:Nonexistent.jpg" title="File:Nonexistent.jpg">Nonexistent.jpg</a><br />
18458 </p>
18459                         </div>
18460                 </div></li>
18461                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18462                         <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
18463                         <div class="gallerytext">
18464 <p><a href="/wiki/File:Foobar.jpg" title="File:Foobar.jpg">Foobar.jpg</a><br />
18465 some <b>caption</b> <a href="/wiki/Main_Page" title="Main Page">Main Page</a>
18466 </p>
18467                         </div>
18468                 </div></li>
18469                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18470                         <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" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
18471                         <div class="gallerytext">
18472 <p><a href="/wiki/File:Foobar.jpg" title="File:Foobar.jpg">Foobar.jpg</a><br />
18473 </p>
18474                         </div>
18475                 </div></li>
18476 </ul>
18478 !! end
18480 !! test
18481 Gallery (with namespace-less filenames)
18482 !! wikitext
18483 <gallery>
18484 File:Nonexistent.jpg
18485 Nonexistent.jpg
18486 image:foobar.jpg
18487 foobar.jpg
18488 </gallery>
18489 !! html
18490 <ul class="gallery mw-gallery-traditional">
18491                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18492                         <div class="thumb" style="height: 150px;">Nonexistent.jpg</div>
18493                         <div class="gallerytext">
18494                         </div>
18495                 </div></li>
18496                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18497                         <div class="thumb" style="height: 150px;">Nonexistent.jpg</div>
18498                         <div class="gallerytext">
18499                         </div>
18500                 </div></li>
18501                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18502                         <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" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
18503                         <div class="gallerytext">
18504                         </div>
18505                 </div></li>
18506                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
18507                         <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" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
18508                         <div class="gallerytext">
18509                         </div>
18510                 </div></li>
18511 </ul>
18513 !! end
18515 !! test
18516 HTML Hex character encoding (spells the word "JavaScript")
18517 !! options
18518 parsoid=wt2html,wt2wt,html2html
18519 !! wikitext
18520 &#x4A;&#x061;&#x0076;&#x00061;&#x000053;&#x0000063;&#114;&#x0000069;&#00000112;&#x0000000074;
18521 !! html/php
18522 <p>&#x4a;&#x61;&#x76;&#x61;&#x53;&#x63;&#114;&#x69;&#112;&#x74;
18523 </p>
18524 !! html/php+tidy
18525 <p>JavaScript</p>
18526 !! html/parsoid
18527 <p><span typeof="mw:Entity">J</span><span typeof="mw:Entity">a</span><span typeof="mw:Entity">v</span><span typeof="mw:Entity">a</span><span typeof="mw:Entity">S</span><span typeof="mw:Entity">c</span><span typeof="mw:Entity">r</span><span typeof="mw:Entity">i</span><span typeof="mw:Entity">p</span><span typeof="mw:Entity">t</span></p>
18528 !! end
18530 !! test
18531 HTML Hex character encoding bogus encoding (bug 26437 regression check)
18532 !! wikitext
18533 &#xsee;&#XSEE;
18534 !! html/php
18535 <p>&amp;#xsee;&amp;#XSEE;
18536 </p>
18537 !! html/parsoid
18538 <p>&amp;#xsee;&amp;#XSEE;</p>
18539 !! end
18541 !! test
18542 HTML Hex character encoding mixed case
18543 !! options
18544 parsoid=wt2html,wt2wt,html2html
18545 !! wikitext
18546 &#xEE;&#Xee;
18547 !! html/php
18548 <p>&#xee;&#xee;
18549 </p>
18550 !! html/php+tidy
18551 <p>îî</p>
18552 !! html/parsoid
18553 <p><span typeof="mw:Entity">î</span><span typeof="mw:Entity">î</span></p>
18554 !! end
18556 # See: http://www.w3.org/TR/html5/syntax.html#character-references
18557 # Note that U+000C (form feed) is not a valid XML character, so
18558 # it is banned even though allowed in HTML5.
18559 !! test
18560 Illegal character references (T106578)
18561 !! wikitext
18562 ; Null: &#00;
18563 ; FF: &#xC;
18564 ; CR: &#xD;
18565 ; Control (low): &#8;
18566 ; Control (high): &#x7F; &#x9F;
18567 ; Surrogate: &#xD83D;&#xDCA9;
18568 ; This is an okay astral character: &#x1F4A9;
18569 !! html+tidy
18570 <dl>
18571 <dt>Null</dt>
18572 <dd>&amp;#00;</dd>
18573 <dt>FF</dt>
18574 <dd>&amp;#xC;</dd>
18575 <dt>CR</dt>
18576 <dd>&amp;#xD;</dd>
18577 <dt>Control (low)</dt>
18578 <dd>&amp;#8;</dd>
18579 <dt>Control (high)</dt>
18580 <dd>&amp;#x7F; &amp;#x9F;</dd>
18581 <dt>Surrogate</dt>
18582 <dd>&amp;#xD83D;&amp;#xDCA9;</dd>
18583 <dt>This is an okay astral character</dt>
18584 <dd>💩</dd>
18585 </dl>
18586 !! end
18588 !! test
18589 __FORCETOC__ override
18590 !! wikitext
18591 __NEWSECTIONLINK__
18592 __FORCETOC__
18593 !! html/php
18594 <p><br />
18595 </p>
18596 !! end
18598 !! test
18599 ISBN code coverage
18600 !! wikitext
18601 ISBN  978-0-1234-56&#x20;789
18602 !! html
18603 <p><a href="/wiki/Special:BookSources/9780123456" class="internal mw-magiclink-isbn">ISBN 978-0-1234-56</a>&#x20;789
18604 </p>
18605 !! html+tidy
18606 <p><a href="/wiki/Special:BookSources/9780123456" class="internal mw-magiclink-isbn">ISBN 978-0-1234-56</a> 789</p>
18607 !! html/parsoid
18608 <p><a href="./Special:BookSources/9780123456" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 978-0-1234-56</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#x20;","srcContent":" "}'> </span>789</p>
18609 !! end
18611 !! test
18612 ISBN followed by 5 spaces
18613 !! wikitext
18614 ISBN    
18615 !! html
18616 <p>ISBN    
18617 </p>
18618 !! end
18620 !! test
18621 Double ISBN
18622 !! wikitext
18623 ISBN ISBN 1234567890
18624 !! html/php
18625 <p>ISBN <a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1234567890</a>
18626 </p>
18627 !! html/parsoid
18628 <p>ISBN <a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a></p>
18629 !! end
18631 # Uppercase X and lowercase x as well
18632 !! test
18633 ISBN with an X
18634 !! wikitext
18635 ISBN 3-462-04561-X
18636 ISBN 3-462-04561-x
18637 ISBN 080442957X
18638 ISBN 080442957x
18639 ISBN 978080442957X
18640 ISBN 978080442957x
18641 !! html/php
18642 <p><a href="/wiki/Special:BookSources/346204561X" class="internal mw-magiclink-isbn">ISBN 3-462-04561-X</a>
18643 <a href="/wiki/Special:BookSources/346204561X" class="internal mw-magiclink-isbn">ISBN 3-462-04561-x</a>
18644 <a href="/wiki/Special:BookSources/080442957X" class="internal mw-magiclink-isbn">ISBN 080442957X</a>
18645 <a href="/wiki/Special:BookSources/080442957X" class="internal mw-magiclink-isbn">ISBN 080442957x</a>
18646 <a href="/wiki/Special:BookSources/978080442957X" class="internal mw-magiclink-isbn">ISBN 978080442957X</a>
18647 <a href="/wiki/Special:BookSources/978080442957X" class="internal mw-magiclink-isbn">ISBN 978080442957x</a>
18648 </p>
18649 !! html/parsoid
18650 <p><a href="./Special:BookSources/346204561X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 3-462-04561-X</a>
18651 <a href="./Special:BookSources/346204561X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 3-462-04561-x</a>
18652 <a href="./Special:BookSources/080442957X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 080442957X</a>
18653 <a href="./Special:BookSources/080442957X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 080442957x</a>
18654 <a href="./Special:BookSources/978080442957X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 978080442957X</a>
18655 <a href="./Special:BookSources/978080442957X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 978080442957x</a></p>
18656 !! end
18658 !! test
18659 ISBN with empty prefix (parsoid test)
18660 !! wikitext
18661 ISBN 1234567890
18662 !! html/php
18663 <p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1234567890</a>
18664 </p>
18665 !! html/parsoid
18666 <p><a href="./Special:BookSources/1234567890" rel="mw:WikiLink">ISBN 1234567890</a></p>
18667 !! end
18669 !! test
18670 Bug 22905: <abbr> followed by ISBN followed by </a>
18671 !! wikitext
18672 <abbr>(fr)</abbr> ISBN 2753300917 [http://www.example.com example.com]
18673 !! html/php
18674 <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>
18675 </p>
18676 !! html/parsoid
18677 <p><abbr data-parsoid='{"stx":"html"}'>(fr)</abbr> <a href="./Special:BookSources/2753300917" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 2753300917</a> <a rel="mw:ExtLink" href="http://www.example.com">example.com</a></p>
18678 !! end
18680 !! test
18681 Double RFC
18682 !! wikitext
18683 RFC RFC 1234
18684 !! html
18685 <p>RFC <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc1234">RFC 1234</a>
18686 </p>
18687 !! end
18689 !! test
18690 Double RFC with a wiki link
18691 !! wikitext
18692 RFC [[RFC 1234]]
18693 !! html
18694 <p>RFC <a href="/index.php?title=RFC_1234&amp;action=edit&amp;redlink=1" class="new" title="RFC 1234 (page does not exist)">RFC 1234</a>
18695 </p>
18696 !! end
18698 !! test
18699 RFC code coverage
18700 !! wikitext
18701 RFC   983&#x20;987
18702 !! html
18703 <p><a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc983">RFC 983</a>&#x20;987
18704 </p>
18705 !! html+tidy
18706 <p><a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc983">RFC 983</a> 987</p>
18707 !! end
18709 !! test
18710 Centre-aligned image
18711 !! wikitext
18712 [[Image:foobar.jpg|centre]]
18713 !! html
18714 <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>
18716 !!end
18718 !! test
18719 None-aligned image
18720 !! wikitext
18721 [[Image:foobar.jpg|none]]
18722 !! html
18723 <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>
18725 !!end
18727 !! test
18728 Width + Height sized image (using px) (height is ignored)
18729 !! wikitext
18730 [[Image:foobar.jpg|640x480px]]
18731 !! html
18732 <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>
18733 </p>
18734 !!end
18736 !! test
18737 Width-sized image (using px, no following whitespace)
18738 !! wikitext
18739 [[Image:foobar.jpg|640px]]
18740 !! html
18741 <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>
18742 </p>
18743 !!end
18745 !! test
18746 Width-sized image (using px, with following whitespace - test regression from r39467)
18747 !! wikitext
18748 [[Image:foobar.jpg|640px ]]
18749 !! html
18750 <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>
18751 </p>
18752 !!end
18754 !! test
18755 Width-sized image (using px, with preceding whitespace - test regression from r39467)
18756 !! wikitext
18757 [[Image:foobar.jpg| 640px]]
18758 !! html
18759 <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>
18760 </p>
18761 !!end
18763 !! test
18764 Image with page parameter
18765 !! options
18766 djvu
18767 !! wikitext
18768 [[File:LoremIpsum.djvu|page=2]]
18769 !! html/php
18770 <p><a href="/index.php?title=File:LoremIpsum.djvu&amp;page=2" class="image"><img alt="LoremIpsum.djvu" src="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-2480px-LoremIpsum.djvu.jpg" width="2480" height="3508" srcset="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-3720px-LoremIpsum.djvu.jpg 1.5x, http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-4960px-LoremIpsum.djvu.jpg 2x" /></a>
18771 </p>
18772 !! html/parsoid
18773 <p><span class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"page","ak":"page=2"}]}'><a href="./File:LoremIpsum.djvu" data-parsoid='{"a":{"href":"./File:LoremIpsum.djvu"},"sa":{}}'><img resource="./File:LoremIpsum.djvu" src="//example.com/images/5/5f/LoremIpsum.djvu" data-file-width="2480" data-file-height="3508" data-file-type="bitmap" height="3508" width="2480" data-parsoid='{"a":{"resource":"./File:LoremIpsum.djvu","height":"3508","width":"2480"},"sa":{"resource":"File:LoremIpsum.djvu"}}'/></a></span></p>
18774 !! end
18776 !! test
18777 Another italics / bold test
18778 !! wikitext
18779  ''' ''x'
18780 !! html
18781 <pre>'<i> </i>x'
18782 </pre>
18783 !!end
18785 # FIXME: The php output seems broken. It's interleaving some open/close tags.
18786 !! test
18787 dt/dd/dl test
18788 !! wikitext
18789 :;;;::
18790 !! html/php
18791 <dl><dd><dl><dt><dl><dt><dl><dt><dl><dd><dl><dd></dt></dl></dd></dl></dd></dl></dd></dl></dd></dl></dd></dl>
18793 !! html/parsoid
18794 <dl><dd><dl><dt><dl><dt><dl><dt><dl><dd><dl><dd></dd></dl></dd></dl></dt></dl></dt></dl></dt></dl></dd></dl>
18796 !!end
18799 # Images with the "|" character in external URLs in comment tags; Eats half the comment, leaves unmatched "</a>" tag.
18800 !! test
18801 Images with the "|" character in the comment
18802 !! wikitext
18803 [[File:Foobar.jpg|thumb|An [http://test/?param1=|left|&param2=|x external] URL]]
18804 !! html/php
18805 <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"></a></div>An <a rel="nofollow" class="external text" href="http://test/?param1=%7Cleft%7C&amp;param2=%7Cx">external</a> URL</div></div></div>
18807 !! html/parsoid
18808 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>An <a rel="mw:ExtLink" href="http://test/?param1=|left|&amp;param2=|x">external</a> URL</figcaption></figure>
18809 !! end
18811 !! test
18812 [Before] HTML without raw HTML enabled ($wgRawHtml==false)
18813 !! wikitext
18814 <html><script>alert(1);</script></html>
18815 !! html
18816 <p>&lt;html&gt;&lt;script&gt;alert(1);&lt;/script&gt;&lt;/html&gt;
18817 </p>
18818 !! end
18820 !! test
18821 HTML with raw HTML ($wgRawHtml==true)
18822 !! options
18823 wgRawHtml=1
18824 !! wikitext
18825 <html><script>alert(1);</script></html>
18826 !! html
18827 <p><script>alert(1);</script>
18828 </p>
18829 !! end
18831 !! test
18832 Parents of subpages, one level up
18833 !! options
18834 subpage title=[[Subpage test/L1/L2/L3]]
18835 !! wikitext
18836 [[../|L2]]
18837 !! html
18838 <p><a href="/index.php?title=Subpage_test/L1/L2&amp;action=edit&amp;redlink=1" class="new" title="Subpage test/L1/L2 (page does not exist)">L2</a>
18839 </p>
18840 !! end
18843 !! test
18844 Parents of subpages, one level up, not named
18845 !! options
18846 subpage title=[[Subpage test/L1/L2/L3]]
18847 !! wikitext
18848 [[../]]
18849 !! html
18850 <p><a href="/index.php?title=Subpage_test/L1/L2&amp;action=edit&amp;redlink=1" class="new" title="Subpage test/L1/L2 (page does not exist)">Subpage test/L1/L2</a>
18851 </p>
18852 !! end
18856 !! test
18857 Parents of subpages, two levels up
18858 !! options
18859 subpage title=[[Subpage test/L1/L2/L3]]
18860 !! wikitext
18861 [[../../|L1]]2
18863 [[../../|L1]]l
18864 !! html
18865 <p><a href="/index.php?title=Subpage_test/L1&amp;action=edit&amp;redlink=1" class="new" title="Subpage test/L1 (page does not exist)">L1</a>2
18866 </p><p><a href="/index.php?title=Subpage_test/L1&amp;action=edit&amp;redlink=1" class="new" title="Subpage test/L1 (page does not exist)">L1l</a>
18867 </p>
18868 !! end
18870 !! test
18871 Parents of subpages, two levels up, without trailing slash or name.
18872 !! options
18873 subpage title=[[Subpage test/L1/L2/L3]]
18874 !! wikitext
18875 [[../..]]
18876 !! html
18877 <p>[[../..]]
18878 </p>
18879 !! end
18881 !! test
18882 Parents of subpages, two levels up, with lots of extra trailing slashes.
18883 !! options
18884 subpage title=[[Subpage test/L1/L2/L3]]
18885 !! wikitext
18886 [[../../////]]
18887 !! html
18888 <p><a href="/index.php?title=Subpage_test/L1&amp;action=edit&amp;redlink=1" class="new" title="Subpage test/L1 (page does not exist)">Subpage test/L1</a>
18889 </p>
18890 !! end
18892 !! article
18893 Subpage test/L1/L2/L3Sibling
18894 !! text
18895 Sibling article
18896 !! endarticle
18898 !! test
18899 Transclusion of a sibling page (one level up)
18900 !! options
18901 subpage title=[[Subpage test/L1/L2/L3]]
18902 !! wikitext
18903 {{../L3Sibling}}
18904 !! html
18905 <p>Sibling article
18906 </p>
18907 !! end
18909 !! test
18910 Transclusion of a child page
18911 !! options
18912 subpage title=[[Subpage test/L1/L2]]
18913 !! wikitext
18914 {{/L3Sibling}}
18915 !! html
18916 <p>Sibling article
18917 </p>
18918 !! end
18920 !! test
18921 Non-transclusion because of too many up levels
18922 !! options
18923 subpage title=[[Subpage test/L1/L2/L3]]
18924 !! wikitext
18925 {{../../../../More than parent}}
18926 !! html
18927 <p>{{../../../../More than parent}}
18928 </p>
18929 !! end
18931 !! test
18932 Definition list code coverage
18933 !! wikitext
18934 ; title   : def
18935 ; title : def
18936 ;title: def
18937 !! html/php
18938 <dl><dt> title  &#160;</dt>
18939 <dd> def</dd>
18940 <dt> title&#160;</dt>
18941 <dd> def</dd>
18942 <dt>title</dt>
18943 <dd> def</dd></dl>
18945 !! html/parsoid
18946 <dl><dt> title  <span typeof="mw:Placeholder"> </span></dt><dd> def</dd>
18947 <dt> title<span typeof="mw:Placeholder"> </span></dt><dd> def</dd>
18948 <dt>title</dt><dd> def</dd></dl>
18949 !! end
18951 !! test
18952 Don't fall for the self-closing div
18953 !! wikitext
18954 <div>hello world</div/>
18955 !! html
18956 <div>hello world</div>
18958 !! end
18960 !! test
18961 MSGNW magic word
18962 !! wikitext
18963 {{MSGNW:msg}}
18964 !! html/php
18965 <p>&#91;&#91;:Template:Msg&#93;&#93;
18966 </p>
18967 !! end
18969 !! test
18970 RAW magic word
18971 !! wikitext
18972 {{RAW:QUERTY}}
18973 !! html
18974 <p><a href="/index.php?title=Template:QUERTY&amp;action=edit&amp;redlink=1" class="new" title="Template:QUERTY (page does not exist)">Template:QUERTY</a>
18975 </p>
18976 !! end
18978 # This isn't needed for XHTML conformance, but would be handy as a fallback security measure
18979 !! test
18980 Always escape literal '>' in output, not just after '<'
18981 !! wikitext
18983 !! html
18984 <p>&gt;&lt;&gt;
18985 </p>
18986 !! end
18988 !! test
18989 Template caching
18990 !! wikitext
18991 {{Test}}
18992 {{Test}}
18993 !! html
18994 <p>This is a test template
18995 This is a test template
18996 </p>
18997 !! end
19000 !! article
19001 MediaWiki:Fake
19002 !! text
19003 ==header==
19004 !! endarticle
19006 !! test
19007 Inclusion of !userCanEdit() content
19008 !! wikitext
19009 {{MediaWiki:Fake}}
19010 !! html
19011 <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&amp;action=edit&amp;section=T-1" title="MediaWiki:Fake">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
19013 !! end
19016 !! test
19017 Out-of-order TOC heading levels
19018 !! wikitext
19019 ==2==
19020 ======6======
19021 ===3===
19023 =====5=====
19024 ==2==
19025 !! html
19026 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
19027 <ul>
19028 <li class="toclevel-1 tocsection-1"><a href="#2"><span class="tocnumber">1</span> <span class="toctext">2</span></a>
19029 <ul>
19030 <li class="toclevel-2 tocsection-2"><a href="#6"><span class="tocnumber">1.1</span> <span class="toctext">6</span></a></li>
19031 <li class="toclevel-2 tocsection-3"><a href="#3"><span class="tocnumber">1.2</span> <span class="toctext">3</span></a></li>
19032 </ul>
19033 </li>
19034 <li class="toclevel-1 tocsection-4"><a href="#1"><span class="tocnumber">2</span> <span class="toctext">1</span></a>
19035 <ul>
19036 <li class="toclevel-2 tocsection-5"><a href="#5"><span class="tocnumber">2.1</span> <span class="toctext">5</span></a></li>
19037 <li class="toclevel-2 tocsection-6"><a href="#2_2"><span class="tocnumber">2.2</span> <span class="toctext">2</span></a></li>
19038 </ul>
19039 </li>
19040 </ul>
19041 </div>
19043 <h2><span class="mw-headline" id="2">2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
19044 <h6><span class="mw-headline" id="6">6</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: 6">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
19045 <h3><span class="mw-headline" id="3">3</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: 3">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
19046 <h1><span class="mw-headline" id="1">1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: 1">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
19047 <h5><span class="mw-headline" id="5">5</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: 5">edit</a><span class="mw-editsection-bracket">]</span></span></h5>
19048 <h2><span class="mw-headline" id="2_2">2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=6" title="Edit section: 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
19050 !! end
19053 !! test
19054 ISBN with a dummy number
19055 !! wikitext
19056 ISBN ---
19057 !! html
19058 <p>ISBN ---
19059 </p>
19060 !! end
19063 !! test
19064 ISBN with space-delimited number
19065 !! wikitext
19066 ISBN 92 9017 032 8
19067 !! html
19068 <p><a href="/wiki/Special:BookSources/9290170328" class="internal mw-magiclink-isbn">ISBN 92 9017 032 8</a>
19069 </p>
19070 !! end
19073 !! test
19074 ISBN with multiple spaces, no number
19075 !! wikitext
19076 ISBN  foo
19077 !! html
19078 <p>ISBN  foo
19079 </p>
19080 !! end
19083 !! test
19084 ISBN length
19085 !! wikitext
19086 ISBN 123456789
19088 ISBN 1234567890
19090 ISBN 12345678901
19091 !! html
19092 <p>ISBN 123456789
19093 </p><p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1234567890</a>
19094 </p><p>ISBN 12345678901
19095 </p>
19096 !! end
19099 !! test
19100 ISBN with trailing year (bug 8110)
19101 !! wikitext
19102 ISBN 1-234-56789-0 - 2006
19104 ISBN 1 234 56789 0 - 2006
19105 !! html
19106 <p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1-234-56789-0</a> - 2006
19107 </p><p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1 234 56789 0</a> - 2006
19108 </p>
19109 !! end
19112 !! test
19113 anchorencode
19114 !! wikitext
19115 {{anchorencode:foo bar©#%n}}
19116 !! html
19117 <p>foo_bar.C2.A9.23.25n
19118 </p>
19119 !! end
19121 !! test
19122 anchorencode trims spaces
19123 !! wikitext
19124 {{anchorencode: __pretty__please__}}
19125 !! html
19126 <p>pretty_please
19127 </p>
19128 !! end
19130 !! test
19131 anchorencode deals with links
19132 !! wikitext
19133 {{anchorencode: [[hello|world]] [[hi]]}}
19134 !! html
19135 <p>world_hi
19136 </p>
19137 !! end
19139 !! test
19140 anchorencode deals with templates
19141 !! wikitext
19142 {{anchorencode: {{Foo}} }}
19143 !! html
19144 <p>FOO
19145 </p>
19146 !! end
19148 !! test
19149 anchorencode encodes like the TOC generator: (bug 18431)
19150 !! wikitext
19151 === _ +:.3A%3A&&amp;]] ===
19152 {{anchorencode: _ +:.3A%3A&&amp;]] }}
19153 __NOEDITSECTION__
19154 !! html
19155 <h3><span class="mw-headline" id=".2B:.3A.253A.26.26.5D.5D">_ +:.3A%3A&amp;&amp;]]</span></h3>
19156 <p>.2B:.3A.253A.26.26.5D.5D
19157 </p>
19158 !! end
19160 !! test
19161 Bug 6200: blockquotes and paragraph formatting
19162 !! wikitext
19163 <blockquote>
19165 </blockquote>
19169  baz
19170 !! html
19171 <blockquote>
19172 <p>foo
19173 </p>
19174 </blockquote>
19175 <p>bar
19176 </p>
19177 <pre>baz
19178 </pre>
19179 !! end
19181 !! test
19182 Bug 8293: Use of center tag ruins paragraph formatting
19183 !! wikitext
19184 <center>
19186 </center>
19190  baz
19191 !! html
19192 <center>
19193 <p>foo
19194 </p>
19195 </center>
19196 <p>bar
19197 </p>
19198 <pre>baz
19199 </pre>
19200 !! end
19202 !!test
19203 Parsing of overlapping (improperly nested) inline html tags
19204 !! wikitext
19205 <span><s>x</span></s>
19206 !! html/php
19207 <p><span><s>x&lt;/span&gt;</s></span>
19208 </p>
19209 !! html/parsoid
19210 <p><span><s>x</s></span>
19211 </p>
19212 !!end
19215 ### Language variants related tests
19217 !! test
19218 Self-link in language variants
19219 !! options
19220 title=[[Dunav]] language=sr
19221 !! wikitext
19222 Both [[Dunav]] and [[Дунав]] are names for this river.
19223 !! html
19224 <p>Both <strong class="selflink">Dunav</strong> and <strong class="selflink">Дунав</strong> are names for this river.
19225 </p>
19226 !!end
19228 !! article
19229 Дуна
19230 !! text
19231 content
19232 !! endarticle
19234 !! test
19235 Link to another existing title shouldn't be parsed as self-link even if it's a variant of this title
19236 !! options
19237 title=[[Duna]] language=sr
19238 !! wikitext
19239 [[Дуна]] is not a self-link while [[Duna]] and [[Dуна]] are still self-links.
19240 !! html
19241 <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.
19242 </p>
19243 !! end
19245 !! test
19246 Link to a section of a variant of this title shouldn't be parsed as self-link
19247 !! options
19248 title=[[Duna]] language=sr
19249 !! wikitext
19250 [[Dуна]] is a self-link while [[Dunа#Foo]] and [[Dуна#Foo]] are not self-links.
19251 !! html
19252 <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.
19253 </p>
19254 !! end
19256 !! test
19257 Link to pages in language variants
19258 !! options
19259 language=sr
19260 !! wikitext
19261 Main Page can be written as [[Маин Паге]]
19262 !! html
19263 <p>Main Page can be written as <a href="/wiki/Main_Page" title="Main Page">Маин Паге</a>
19264 </p>
19265 !!end
19268 !! test
19269 Multiple links to pages in language variants
19270 !! options
19271 language=sr
19272 !! wikitext
19273 [[Main Page]] can be written as [[Маин Паге]] same as [[Маин Паге]].
19274 !! html
19275 <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>.
19276 </p>
19277 !!end
19280 !! test
19281 Simple template in language variants
19282 !! options
19283 language=sr
19284 !! wikitext
19285 {{тест}}
19286 !! html
19287 <p>This is a test template
19288 </p>
19289 !! end
19292 !! test
19293 Template with explicit namespace in language variants
19294 !! options
19295 language=sr
19296 !! wikitext
19297 {{Template:тест}}
19298 !! html
19299 <p>This is a test template
19300 </p>
19301 !! end
19304 !! test
19305 Basic test for template parameter in language variants
19306 !! options
19307 language=sr
19308 !! wikitext
19309 {{парамтест|param=foo}}
19310 !! html
19311 <p>This is a test template with parameter foo
19312 </p>
19313 !! end
19316 !! test
19317 Simple category in language variants
19318 !! options
19319 language=sr cat
19320 !! wikitext
19321 [[Category:МедиаWики Усер'с Гуиде]]
19322 !! html
19323 <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>
19324 !! end
19327 !! article
19328 Category:分类
19329 !! text
19330 blah
19331 !! endarticle
19333 !! article
19334 Category:分類
19335 !! text
19336 blah
19337 !! endarticle
19339 ## We used to, but no longer wt2wt this test since the default serializer
19340 ## will normalize all categories to serialize on their own line.
19341 ## This wikitext usage is going to be fairly uncommon in production and
19342 ## selser will take care of preserving formatting in those scenarios.
19343 !! test
19344 Don't convert blue categorylinks to another variant (bug 33210)
19345 !! options
19347 language=zh
19348 parsoid=wt2html
19349 !! wikitext
19350 [[A]][[Category:分类]]
19351 !! html/php
19352 <a href="/wiki/Category:%E5%88%86%E7%B1%BB" title="Category:分类">分类</a>
19353 !! html/parsoid
19354 <p><a rel="mw:WikiLink" href="A" title="A">A</a></p>
19355 <link rel="mw:PageProp/Category" href="Category:分类"/>
19356 !! end
19358 !! test
19359 Stripping -{}- tags (language variants)
19360 !! options
19361 language=sr
19362 !! wikitext
19363 Latin proverb: -{Ne nuntium necare}-
19364 !! html
19365 <p>Latin proverb: Ne nuntium necare
19366 </p>
19367 !! end
19370 !! test
19371 Prevent conversion with -{}- tags (language variants)
19372 !! options
19373 language=sr variant=sr-ec
19374 !! wikitext
19375 Latinski: -{Ne nuntium necare}-
19376 !! html
19377 <p>Латински: Ne nuntium necare
19378 </p>
19379 !! end
19382 !! test
19383 Prevent conversion of text with -{}- tags (language variants)
19384 !! options
19385 language=sr variant=sr-ec
19386 !! wikitext
19387 Latinski: -{Ne nuntium necare}-
19388 !! html
19389 <p>Латински: Ne nuntium necare
19390 </p>
19391 !! end
19394 !! test
19395 Prevent conversion of links with -{}- tags (language variants)
19396 !! options
19397 language=sr variant=sr-ec
19398 !! wikitext
19399 -{[[Main Page]]}-
19400 !! html
19401 <p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
19402 </p>
19403 !! end
19406 !! test
19407 -{}- tags within headlines (within html for parserConvert())
19408 !! options
19409 language=sr variant=sr-ec
19410 !! wikitext
19411 == -{Naslov}- ==
19412 !! html
19413 <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&amp;action=edit&amp;section=1" title="Уреди одељак „Naslov“">уреди</a><span class="mw-editsection-bracket">]</span></span></h2>
19415 !! end
19418 !! test
19419 Explicit definition of language variant alternatives
19420 !! options
19421 language=zh variant=zh-tw
19422 !! wikitext
19423 -{zh:China;zh-tw:Taiwan}-, not China
19424 !! html
19425 <p>Taiwan, not China
19426 </p>
19427 !! end
19430 !! test
19431 Conversion around HTML tags
19432 !! options
19433 language=sr variant=sr-ec
19434 !! wikitext
19435 -{H|span=>sr-ec:script;title=>sr-ec:src;}-
19436 <span title="La-{sr-el:L;sr-ec:C;}-tin">ski</span>
19437 !! html
19439 <span title="ЛаCтин">ски</span>
19440 </p>
19441 !! end
19444 !! test
19445 Explicit session-wise language variant mapping (A flag and - flag)
19446 !! options
19447 language=zh variant=zh-tw
19448 !! wikitext
19449 Taiwan is not China.
19450 But -{A|zh:China;zh-tw:Taiwan}- is China,
19451 (This-{-|zh:China;zh-tw:Taiwan}- should be stripped!)
19452 and -{China}- is China.
19453 !! html
19454 <p>Taiwan is not China.
19455 But Taiwan is Taiwan,
19456 (This should be stripped!)
19457 and China is China.
19458 </p>
19459 !! end
19461 !! test
19462 Explicit session-wise language variant mapping (H flag for hide)
19463 !! options
19464 language=zh variant=zh-tw
19465 !! wikitext
19466 (This-{H|zh:China;zh-tw:Taiwan}- should be stripped!)
19467 Taiwan is China.
19468 !! html
19469 <p>(This should be stripped!)
19470 Taiwan is Taiwan.
19471 </p>
19472 !! end
19474 !! test
19475 Adding explicit conversion rule for title (T flag)
19476 !! options
19477 language=zh variant=zh-tw showtitle
19478 !! wikitext
19479 Should be stripped-{T|zh:China;zh-tw:Taiwan}-!
19480 !! html
19481 Taiwan
19482 <p>Should be stripped!
19483 </p>
19484 !! end
19486 !! test
19487 Testing that changing the language variant here in the tests actually works
19488 !! options
19489 language=zh variant=zh showtitle
19490 !! wikitext
19491 Should be stripped-{T|zh:China;zh-tw:Taiwan}-!
19492 !! html
19493 China
19494 <p>Should be stripped!
19495 </p>
19496 !! end
19498 !! test
19499 Recursive conversion of alt and title attrs shouldn't clear converter state
19500 !! options
19501 language=zh variant=zh-cn showtitle
19502 !! wikitext
19503 -{H|zh-cn:Exclamation;zh-tw:exclamation;}-
19504 Should be stripped-{T|zh-cn:China;zh-tw:Taiwan}-<span title="exclamation">!</span>
19505 !! html
19506 China
19508 Should be stripped<span title="Exclamation">!</span>
19509 </p>
19510 !! end
19512 !! test
19513 Bug 24072: more test on conversion rule for title
19514 !! options
19515 language=zh variant=zh-tw showtitle
19516 !! wikitext
19517 This should be stripped-{T|zh:China;zh-tw:Taiwan}-!
19518 This won't take interferes with the title rule-{H|zh:Beijing;zh-tw:Taipei}-.
19519 !! html
19520 Taiwan
19521 <p>This should be stripped!
19522 This won't take interferes with the title rule.
19523 </p>
19524 !! end
19526 !! test
19527 Partly disable title conversion if variant == main language code
19528 !! options
19529 language=zh variant=zh title=[[ZH]] showtitle
19530 !! wikitext
19531 -{T|zh-cn:CN;zh-tw:TW}-
19532 !! html
19535 </p>
19536 !! end
19538 !! test
19539 Partly disable title conversion if variant == main language code, more
19540 !! options
19541 language=zh variant=zh title=[[ZH]] showtitle
19542 !! wikitext
19543 -{T|TW}-
19544 !! html
19547 </p>
19548 !! end
19550 !! test
19551 Raw output of variant escape tags (R flag)
19552 !! options
19553 language=zh variant=zh-tw
19554 !! wikitext
19555 Raw: -{R|zh:China;zh-tw:Taiwan}-
19556 !! html
19557 <p>Raw: zh:China;zh-tw:Taiwan
19558 </p>
19559 !! end
19561 !! test
19562 Strings evaluating false shouldn't be ignored by Language converter (T51072)
19563 !! options
19564 language=zh variant=zh-cn
19565 !! input
19566 -{zh-cn:0;zh-sg:1;zh-tw:2;zh-hk:3}-
19567 !! result
19568 <p>0
19569 </p>
19570 !! end
19572 !! test
19573 Conversion rules from [numeric-only string] to [something else] (T48634)
19574 !! options
19575 language=zh variant=zh-cn
19576 !! input
19577 -{H|0=>zh-cn:B}--{H|0=>zh-cn:C;0=>zh-cn:D}--{H|0=>zh-hans:A}-012345-{A|zh-tw:0;zh-cn:E;}-012345
19578 !! result
19579 <p>D12345EE12345
19580 </p>
19581 !! end
19583 !! test
19584 Bidirectional converter rule entries with an empty value should be ignored (T53551)
19585 !! options
19586 language=zh variant=zh-cn
19587 !! input
19588 -{H|zh-cn:foo;zh-tw:;}-foobar
19589 !! result
19590 <p>foobar
19591 </p>
19592 !! end
19594 !! test
19595 Unidirectional converter rule entries with an empty "from" string should be ignored (T53551)
19596 !! options
19597 language=zh variant=zh-cn
19598 !! input
19599 -{H|=>zh-cn:foo;}-foobar
19600 !! result
19601 <p>foobar
19602 </p>
19603 !! end
19605 !! test
19606 Empty converter rule entries shouldn't be inserted into the conversion table (T53551)
19607 !! options
19608 language=zh variant=zh-cn
19609 !! input
19610 -{H|}-foobar
19611 !! result
19612 <p>foobar
19613 </p>
19614 !! end
19616 !! test
19617 Nested using of manual convert syntax
19618 !! options
19619 language=zh variant=zh-hk
19620 !! wikitext
19621 Nested: -{zh-hans:Hi -{zh-cn:China;zh-sg:Singapore;}-;zh-hant:Hello -{zh-tw:Taiwan;zh-hk:H-{ong}- K-{}-ong;}-;}-!
19622 !! html
19623 <p>Nested: Hello Hong Kong!
19624 </p>
19625 !! end
19627 !! test
19628 Proper conversion of text in external links
19629 !! options
19630 language=sr variant=sr-ec
19631 !! wikitext
19632 http://www.google.com
19633 gopher://www.google.com
19634 [http://www.google.com http://www.google.com]
19635 [gopher://www.google.com gopher://www.google.com]
19636 [https://www.google.com irc://www.google.com]
19637 [ftp://www.google.com www.google.com/ftp://dir]
19638 [//www.google.com www.google.com]
19639 !! html
19640 <p><a rel="nofollow" class="external free" href="http://www.google.com">http://www.google.com</a>
19641 <a rel="nofollow" class="external free" href="gopher://www.google.com">gopher://www.google.com</a>
19642 <a rel="nofollow" class="external free" href="http://www.google.com">http://www.google.com</a>
19643 <a rel="nofollow" class="external free" href="gopher://www.google.com">gopher://www.google.com</a>
19644 <a rel="nofollow" class="external text" href="https://www.google.com">irc://www.google.com</a>
19645 <a rel="nofollow" class="external text" href="ftp://www.google.com">www.гоогле.цом/фтп://дир</a>
19646 <a rel="nofollow" class="external text" href="//www.google.com">www.гоогле.цом</a>
19647 </p>
19648 !! end
19650 !! test
19651 Do not convert roman numbers to language variants
19652 !! options
19653 language=sr variant=sr-ec
19654 !! wikitext
19655 Fridrih IV je car.
19656 !! html
19657 <p>Фридрих IV је цар.
19658 </p>
19659 !! end
19661 !! test
19662 Unclosed language converter markup "-{"
19663 !! options
19664 language=sr
19665 !! wikitext
19666 -{T|hello
19667 !! html
19668 <p>-{T|hello
19669 </p>
19670 !! end
19672 !! test
19673 Don't convert raw rule "-{R|=&gt;}-" to "=>"
19674 !! options
19675 language=sr
19676 !! wikitext
19677 -{R|=&gt;}-
19678 !! html
19679 <p>=&gt;
19680 </p>
19681 !!end
19683 !! test
19684 Don't break link parsing if language converter markup is in the caption.
19685 !! options
19686 language=sr variant=sr-ec
19687 !! wikitext
19688 [[Main Page|-{R|main page}-]]
19689 !! html
19690 <p><a href="/wiki/Main_Page" title="Маин Паге">main page</a>
19691 </p>
19692 !! end
19694 # FIXME: This test is currently broken in the PHP parser (bug 52661)
19695 !! test
19696 Don't break image parsing if language converter markup is in the caption.
19697 !! options
19698 language=sr
19699 !! wikitext
19700 [[File:Foobar.jpg|-{R|caption}-]]
19701 !! html/parsoid
19702 <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>
19703 </p>
19704 !! end
19706 # FIXME: This test is currently broken in the PHP parser (bug 52661)
19707 !! test
19708 Don't break list handling if language converter markup is in the item.
19709 !! options
19710 language=zh variant=zh-cn
19711 !! wikitext
19712 ;-{zh-cn:AAA;zh-tw:BBB}-
19713 !! html/php
19714 <dl><dt><span class="error">在手动语言转换规则中检测到错误</span></dd></dl>
19716 !! html/parsoid
19717 <dl><dt>AAA
19718 </dt></dl>
19719 !! end
19721 # FIXME: This test is currently broken in the PHP parser (bug 52661)
19722 !! test
19723 Don't break table handling if language converter markup is in the cell.
19724 !! options
19725 language=sr variant=sr-ec
19726 !! wikitext
19729 | -{R|B}-
19731 !! html/php
19732 <table>
19734 <tr>
19735 <td>Б}-
19736 </td></tr></table>
19738 !! html/parsoid
19739 <table>
19741 <tr>
19742 <td> B
19743 </td></tr></table>
19745 !! end
19747 !! test
19748 Bug 529: Uncovered bullet
19749 !! wikitext
19750 * Foo {{bullet}}
19751 !! html
19752 <ul><li> Foo </li>
19753 <li> Bar</li></ul>
19755 !! end
19757 # Plain MediaWiki does not remove empty lists, but tidy actually does.
19758 # Templates in Wikipedia rely on this behavior, as tidy has always been
19759 # enabled there. These tests are normally run *without* tidy, so specify the
19760 # full output here. 
19761 # To test realistic parsing behavior, apply a tidy-like transformation to both
19762 # the expected output and your parser's output.
19763 !! test
19764 Bug 529: Uncovered bullet leaving empty list, normally removed by tidy
19765 !! wikitext
19766 ******* Foo {{bullet}}
19767 !! html
19768 <ul><li><ul><li><ul><li><ul><li><ul><li><ul><li><ul><li> Foo </li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li>
19769 <li> Bar</li></ul>
19771 !! end
19773 !! test
19774 Bug 529: Uncovered table already at line-start
19775 !! wikitext
19778 {{table}}
19780 !! html
19781 <p>x
19782 </p>
19783 <table>
19784 <tr>
19785 <td> 1 </td>
19786 <td> 2
19787 </td></tr>
19788 <tr>
19789 <td> 3 </td>
19790 <td> 4
19791 </td></tr></table>
19792 <p>y
19793 </p>
19794 !! end
19796 !! test
19797 Bug 529: Uncovered bullet in parser function result
19798 !! wikitext
19799 * Foo {{lc:{{bullet}} }}
19800 !! html
19801 <ul><li> Foo </li>
19802 <li> bar</li></ul>
19804 !! end
19806 !! test
19807 Bug 5678: Double-parsed template argument
19808 !! wikitext
19809 {{lc:{{{1}}}|hello}}
19810 !! html
19811 <p>{{{1}}}
19812 </p>
19813 !! end
19815 !! test
19816 Bug 5678: Double-parsed template invocation
19817 !! wikitext
19818 {{lc:{{paramtest {{!}} param = hello }} }}
19819 !! html
19820 <p>{{paramtest | param = hello }}
19821 </p>
19822 !! end
19824 !! test
19825 Case insensitivity of parser functions for non-ASCII characters (bug 8143)
19826 !! options
19827 language=cs
19828 title=[[Main Page]]
19829 !! wikitext
19830 {{PRVNÍVELKÉ:ěščř}}
19831 {{prvnívelké:ěščř}}
19832 {{PRVNÍMALÉ:ěščř}}
19833 {{prvnímalé:ěščř}}
19834 {{MALÁ:ěščř}}
19835 {{malá:ěščř}}
19836 {{VELKÁ:ěščř}}
19837 {{velká:ěščř}}
19838 !! html
19839 <p>Ěščř
19840 Ěščř
19841 ěščř
19842 ěščř
19843 ěščř
19844 ěščř
19845 ĚŠČŘ
19846 ĚŠČŘ
19847 </p>
19848 !! end
19850 !! test
19851 Morwen/13: Unclosed link followed by heading
19852 !! wikitext
19853 [[link
19854 ==heading==
19855 !! html
19856 <p>[[link
19857 </p>
19858 <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&amp;action=edit&amp;section=1" title="Edit section: heading">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
19860 !! end
19862 !! test
19863 HHP2.1: Heuristics for headings in preprocessor parenthetical structures
19864 !! wikitext
19865 {{foo|
19866 =heading=
19867 !! html
19868 <p>{{foo|
19869 </p>
19870 <h1><span class="mw-headline" id="heading">heading</span></h1>
19872 !! end
19874 !! test
19875 HHP2.2: Heuristics for headings in preprocessor parenthetical structures
19876 !! wikitext
19877 {{foo|
19878 ==heading==
19879 !! html
19880 <p>{{foo|
19881 </p>
19882 <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&amp;action=edit&amp;section=1" title="Edit section: heading">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
19884 !! end
19886 !! test
19887 Tildes in comments
19888 !! options
19890 !! wikitext
19891 <!-- ~~~~ -->
19892 !! html/php
19893 <!-- ~~~~ -->
19894 !! end
19896 !! test
19897 Paragraphs inside divs (no extra line breaks)
19898 !! wikitext
19899 <div>Line one
19901 Line two</div>
19902 !! html
19903 <div>Line one
19904 Line two</div>
19906 !! end
19908 !! test
19909 Paragraphs inside divs (extra line break on open)
19910 !! wikitext
19911 <div>
19912 Line one
19914 Line two</div>
19915 !! html
19916 <div>
19917 <p>Line one
19918 </p>
19919 Line two</div>
19921 !! end
19923 !! test
19924 Paragraphs inside divs (extra line break on close)
19925 !! wikitext
19926 <div>Line one
19928 Line two
19929 </div>
19930 !! html
19931 <div>Line one
19932 <p>Line two
19933 </p>
19934 </div>
19936 !! end
19938 !! test
19939 Paragraphs inside divs (extra line break on open and close)
19940 !! wikitext
19941 <div>
19942 Line one
19944 Line two
19945 </div>
19946 !! html
19947 <div>
19948 <p>Line one
19949 </p><p>Line two
19950 </p>
19951 </div>
19953 !! end
19955 !! test
19956 Nesting tags, paragraphs on lines which begin with <div>
19957 !! wikitext
19958 <div></div><strong>A
19959 B</strong>
19960 !! html/php+tidy
19961 <p><strong>A</strong></p>
19962 <p><strong>B</strong></p>
19963 !! html/parsoid
19964 <div></div>
19965 <p><strong>A
19966 B</strong>
19967 </p>
19968 !! end
19970 # Bug 6200: <blockquote> should behave like <div> with respect to line breaks
19971 !! test
19972 Bug 6200: paragraphs inside blockquotes (no extra line breaks)
19973 !! wikitext
19974 <blockquote>Line one
19976 Line two</blockquote>
19977 !! html
19978 <blockquote>Line one
19979 Line two</blockquote>
19981 !! html+tidy
19982 <blockquote>
19983 <p>Line one Line two</p>
19984 </blockquote>
19985 !! end
19987 !! test
19988 Bug 6200: paragraphs inside blockquotes (extra line break on open)
19989 !! wikitext
19990 <blockquote>
19991 Line one
19993 Line two</blockquote>
19994 !! html
19995 <blockquote>
19996 <p>Line one
19997 </p>
19998 Line two</blockquote>
20000 !! html+tidy
20001 <blockquote>
20002 <p>Line one</p>
20003 Line two</blockquote>
20004 !! end
20006 !! test
20007 Bug 6200: paragraphs inside blockquotes (extra line break on close)
20008 !! wikitext
20009 <blockquote>Line one
20011 Line two
20012 </blockquote>
20013 !! html
20014 <blockquote>Line one
20015 <p>Line two
20016 </p>
20017 </blockquote>
20019 !! html+tidy
20020 <blockquote>
20021 <p>Line one</p>
20022 <p>Line two</p>
20023 </blockquote>
20024 !! end
20026 !! test
20027 Bug 6200: paragraphs inside blockquotes (extra line break on open and close)
20028 !! wikitext
20029 <blockquote>
20030 Line one
20032 Line two
20033 </blockquote>
20034 !! html
20035 <blockquote>
20036 <p>Line one
20037 </p><p>Line two
20038 </p>
20039 </blockquote>
20041 !! html+tidy
20042 <blockquote>
20043 <p>Line one</p>
20044 <p>Line two</p>
20045 </blockquote>
20046 !! end
20048 !! test
20049 Paragraphs inside blockquotes/divs (no extra line breaks)
20050 !! wikitext
20051 <blockquote><div>Line one
20053 Line two</div></blockquote>
20054 !! html
20055 <blockquote><div>Line one
20056 Line two</div></blockquote>
20058 !! end
20060 !! test
20061 Paragraphs inside blockquotes/divs (extra line break on open)
20062 !! wikitext
20063 <blockquote><div>
20064 Line one
20066 Line two</div></blockquote>
20067 !! html
20068 <blockquote><div>
20069 <p>Line one
20070 </p>
20071 Line two</div></blockquote>
20073 !! end
20075 !! test
20076 Paragraphs inside blockquotes/divs (extra line break on close)
20077 !! wikitext
20078 <blockquote><div>Line one
20080 Line two
20081 </div></blockquote>
20082 !! html
20083 <blockquote><div>Line one
20084 <p>Line two
20085 </p>
20086 </div></blockquote>
20088 !! end
20090 !! test
20091 Paragraphs inside blockquotes/divs (extra line break on open and close)
20092 !! wikitext
20093 <blockquote><div>
20094 Line one
20096 Line two
20097 </div></blockquote>
20098 !! html
20099 <blockquote><div>
20100 <p>Line one
20101 </p><p>Line two
20102 </p>
20103 </div></blockquote>
20105 !! end
20107 !! test
20108 Interwiki links trounced by replaceExternalLinks after early LinkHolderArray expansion
20109 !! options
20110 wgLinkHolderBatchSize=0
20111 !! wikitext
20112 [[meatball:1]]
20113 [[meatball:2]]
20114 [[meatball:3]]
20115 !! html
20116 <p><a href="http://www.usemod.com/cgi-bin/mb.pl?1" class="extiw" title="meatball:1">meatball:1</a>
20117 <a href="http://www.usemod.com/cgi-bin/mb.pl?2" class="extiw" title="meatball:2">meatball:2</a>
20118 <a href="http://www.usemod.com/cgi-bin/mb.pl?3" class="extiw" title="meatball:3">meatball:3</a>
20119 </p>
20120 !! end
20122 !! test
20123 Free external link invading image caption
20124 !! wikitext
20125 [[Image:Foobar.jpg|thumb|http://x|hello]]
20126 !! html
20127 <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"></a></div>hello</div></div></div>
20129 !! end
20131 !! test
20132 Bug 15196: localised external link numbers
20133 !! options
20134 language=fa
20135 !! wikitext
20136 [http://en.wikipedia.org/]
20137 !! html/php
20138 <p><a rel="nofollow" class="external autonumber" href="http://en.wikipedia.org/">[۱]</a>
20139 </p>
20140 !! html/parsoid
20141 <p><a rel="mw:ExtLink" href="http://en.wikipedia.org/"></a></p>
20142 !! end
20144 !! test
20145 Multibyte character in padleft
20146 !! wikitext
20147 {{padleft:-Hello|7|Æ}}
20148 !! html
20149 <p>Æ-Hello
20150 </p>
20151 !! end
20153 !! test
20154 Multibyte character in padright
20155 !! wikitext
20156 {{padright:Hello-|7|Æ}}
20157 !! html
20158 <p>Hello-Æ
20159 </p>
20160 !! end
20162 !!test
20163 formatdate parser function
20164 !! wikitext
20165 {{#formatdate:2009-03-24}}
20166 !! html
20167 <p><span class="mw-formatted-date" title="2009-03-24">2009-03-24</span>
20168 </p>
20169 !! end
20171 !!test
20172 formatdate parser function, with default format
20173 !! wikitext
20174 {{#formatdate:2009-03-24|mdy}}
20175 !! html
20176 <p><span class="mw-formatted-date" title="2009-03-24">March 24, 2009</span>
20177 </p>
20178 !! end
20180 !! test
20181 Spacing of numbers in formatted dates
20182 !! wikitext
20183 {{#formatdate:January 15}}
20184 !! html
20185 <p><span class="mw-formatted-date" title="01-15">January 15</span>
20186 </p>
20187 !! end
20189 !! test
20190 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
20191 !! options
20192 language=nl title=[[MediaWiki:Common.css]]
20193 !! wikitext
20194 {{#formatdate:2009-03-24|dmy}}
20195 !! html
20196 <p><span class="mw-formatted-date" title="2009-03-24">24 March 2009</span>
20197 </p>
20198 !! end
20205 # Edit comments
20208 !! test
20209 Edit comment with link
20210 !! options
20211 comment
20212 !! wikitext
20213 I like the [[Main Page]] a lot
20214 !! html/php
20215 I like the <a href="/wiki/Main_Page" title="Main Page">Main Page</a> a lot
20216 !!end
20218 !! test
20219 Edit comment with link and link text
20220 !! options
20221 comment
20222 !! wikitext
20223 I like the [[Main Page|best pages]] a lot
20224 !! html/php
20225 I like the <a href="/wiki/Main_Page" title="Main Page">best pages</a> a lot
20226 !!end
20228 !! test
20229 Edit comment with link and link text with suffix
20230 !! options
20231 comment
20232 !! wikitext
20233 I like the [[Main Page|best page]]s a lot
20234 !! html/php
20235 I like the <a href="/wiki/Main_Page" title="Main Page">best pages</a> a lot
20236 !!end
20238 !! test
20239 Edit comment with section link (non-local, eg in history list)
20240 !! options
20241 comment title=[[Main Page]]
20242 !! wikitext
20243 /* External links */ removed bogus entries
20244 !! html/php
20245 <a href="/wiki/Main_Page#External_links" title="Main Page">→</a>‎<span dir="auto"><span class="autocomment">External links: </span> removed bogus entries</span>
20246 !!end
20248 !! test
20249 Edit comment with section link and text before it (non-local, eg in history list)
20250 !! options
20251 comment title=[[Main Page]]
20252 !! wikitext
20253 pre-comment text /* External links */ removed bogus entries
20254 !! html/php
20255 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>
20256 !!end
20258 !! test
20259 Edit comment with section link (local, eg in diff view)
20260 !! options
20261 comment local title=[[Main Page]]
20262 !! wikitext
20263 /* External links */ removed bogus entries
20264 !! html/php
20265 <a href="#External_links">→</a>‎<span dir="auto"><span class="autocomment">External links: </span> removed bogus entries</span>
20266 !!end
20268 !! test
20269 Edit comment with subpage link (bug 14080)
20270 !! options
20271 comment
20272 subpage
20273 title=[[Subpage test]]
20274 !! wikitext
20275 Poked at a [[/subpage]] here...
20276 !! html/php
20277 Poked at a <a href="/wiki/Subpage_test/subpage" title="Subpage test/subpage">/subpage</a> here...
20278 !!end
20280 !! test
20281 Edit comment with subpage link and link text (bug 14080)
20282 !! options
20283 comment
20284 subpage
20285 title=[[Subpage test]]
20286 !! wikitext
20287 Poked at a [[/subpage|neat little page]] here...
20288 !! html/php
20289 Poked at a <a href="/wiki/Subpage_test/subpage" title="Subpage test/subpage">neat little page</a> here...
20290 !!end
20292 !! test
20293 Edit comment with bogus subpage link in non-subpage NS (bug 14080)
20294 !! options
20295 comment
20296 title=[[Subpage test]]
20297 !! wikitext
20298 Poked at a [[/subpage]] here...
20299 !! html/php
20300 Poked at a <a href="/index.php?title=/subpage&amp;action=edit&amp;redlink=1" class="new" title="/subpage (page does not exist)">/subpage</a> here...
20301 !!end
20303 !! test
20304 Edit comment with bare anchor link (local, as on diff)
20305 !! options
20306 comment
20307 local
20308 title=[[Main Page]]
20309 !! wikitext
20310 [[#section]]
20311 !! html/php
20312 <a href="#section">#section</a>
20313 !! end
20315 !! test
20316 Edit comment with bare anchor link (non-local, as on history)
20317 !! options
20318 comment
20319 title=[[Main Page]]
20320 !! wikitext
20321 [[#section]]
20322 !! html/php
20323 <a href="/wiki/Main_Page#section" title="Main Page">#section</a>
20324 !! end
20326 !! test
20327 Anchor starting with underscore
20328 !! options
20329 title=[[Foo]]
20330 !! wikitext
20331 [[#_ref|One]]
20332 !! html/php
20333 <p><a href="#_ref">One</a>
20334 </p>
20335 !! html/parsoid
20336 <p><a rel="mw:WikiLink" href="./Foo#_ref" data-parsoid='{"stx":"piped","a":{"href":"./Foo#_ref"},"sa":{"href":"#_ref"}}'>One</a></p>
20337 !! end
20339 !! test
20340 Id starting with underscore
20341 !! wikitext
20342 <div id="_ref"></div>
20343 !! html/*
20344 <div id="_ref"></div>
20346 !! end
20348 !! test
20349 Space normalisation on autocomment (bug 22784)
20350 !! options
20351 comment
20352 title=[[Main Page]]
20353 !! wikitext
20354 /* __hello__world__ */
20355 !! html/php
20356 <a href="/wiki/Main_Page#hello_world" title="Main Page">→</a>‎<span dir="auto"><span class="autocomment">__hello__world__</span></span>
20357 !! end
20359 !! test
20360 percent-encoding and + signs in comments (Bug 26410)
20361 !! options
20362 comment
20363 !! wikitext
20364 [[ABC%33D% ++]] [[ABC%33D% ++|+%20]]
20365 !! html/php
20366 <a href="/index.php?title=ABC3D%25_%2B%2B&amp;action=edit&amp;redlink=1" class="new" title="ABC3D% ++ (page does not exist)">ABC3D% ++</a> <a href="/index.php?title=ABC3D%25_%2B%2B&amp;action=edit&amp;redlink=1" class="new" title="ABC3D% ++ (page does not exist)">+%20</a>
20367 !! end
20369 # Parsoid doesn't support this yet: see bug 73581
20370 # but it *should* omit the 'src' attribute if the image is bad.
20371 # PHP side of tests was disabled in
20372 # mediawiki/core:6bd31e7d95161a6e88fa86df60871051da997c3c
20373 # because of issues in the PHP parserTests infrastructure
20374 # (but the output below is indeed what the PHP side emits)
20375 !! test
20376 Bad images - basic functionality
20377 !! wikitext
20378 [[File:Bad.jpg]]
20379 !! DISABLED/html/php
20380 !! html/parsoid
20381 <p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"bad-image","message":"This image is blacklisted in this context."}]}'><a href="./File:Bad.jpg"><img resource="./File:Bad.jpg" height="220" width="220"/></a></span></p>
20382 !! end
20384 !! test
20385 Bad images - bug 16039: text after bad image disappears
20386 !! wikitext
20387 Foo bar
20388 [[File:Bad.jpg]]
20389 Bar foo
20390 !! DISABLED/html/php
20391 <p>Foo bar
20392 </p><p>Bar foo
20393 </p>
20394 !! html/parsoid
20395 <p>Foo bar
20396 <span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"bad-image","message":"This image is blacklisted in this context."}]}'><a href="./File:Bad.jpg"><img resource="./File:Bad.jpg" height="220" width="220"/></a></span>
20397 Bar foo</p>
20398 !! end
20400 !! test
20401 Verify that displaytitle works (bug #22501) no displaytitle
20402 !! options
20403 showtitle
20404 !! config
20405 wgAllowDisplayTitle=true
20406 wgRestrictDisplayTitle=false
20407 !! wikitext
20408 this is not the the title
20409 !! html/php
20410 Parser test
20411 <p>this is not the the title
20412 </p>
20413 !! end
20415 !! test
20416 Verify that displaytitle works (bug #22501) RestrictDisplayTitle=false
20417 !! options
20418 showtitle
20419 title=[[Screen]]
20420 !! config
20421 wgAllowDisplayTitle=true
20422 wgRestrictDisplayTitle=false
20423 !! wikitext
20424 this is not the the title
20425 {{DISPLAYTITLE:whatever}}
20426 !! html/php
20427 whatever
20428 <p>this is not the the title
20429 </p>
20430 !! end
20432 !! test
20433 Verify that displaytitle works (bug #22501) RestrictDisplayTitle=true mismatch
20434 !! options
20435 showtitle
20436 title=[[Screen]]
20437 !! config
20438 wgAllowDisplayTitle=true
20439 wgRestrictDisplayTitle=true
20440 !! wikitext
20441 this is not the the title
20442 {{DISPLAYTITLE:whatever}}
20443 !! html/php
20444 Screen
20445 <p>this is not the the title
20446 </p>
20447 !! end
20449 !! test
20450 Verify that displaytitle works (bug #22501) RestrictDisplayTitle=true matching
20451 !! options
20452 showtitle
20453 title=[[Screen]]
20454 !! config
20455 wgAllowDisplayTitle=true
20456 wgRestrictDisplayTitle=true
20457 !! wikitext
20458 this is not the the title
20459 {{DISPLAYTITLE:screen}}
20460 !! html/php
20461 screen
20462 <p>this is not the the title
20463 </p>
20464 !! end
20466 !! test
20467 Verify that displaytitle works (bug #22501) AllowDisplayTitle=false
20468 !! options
20469 showtitle
20470 title=[[Screen]]
20471 !! config
20472 wgAllowDisplayTitle=false
20473 !! wikitext
20474 this is not the the title
20475 {{DISPLAYTITLE:screen}}
20476 !! html/php
20477 Screen
20478 <p>this is not the the title
20479 <a href="/index.php?title=Template:DISPLAYTITLE:screen&amp;action=edit&amp;redlink=1" class="new" title="Template:DISPLAYTITLE:screen (page does not exist)">Template:DISPLAYTITLE:screen</a>
20480 </p>
20481 !! end
20483 !! test
20484 Verify that displaytitle works (bug #22501) AllowDisplayTitle=false no DISPLAYTITLE
20485 !! options
20486 showtitle
20487 title=[[Screen]]
20488 !! config
20489 wgAllowDisplayTitle=false
20490 !! wikitext
20491 this is not the the title
20492 !! html/php
20493 Screen
20494 <p>this is not the the title
20495 </p>
20496 !! end
20498 !! test
20499 Verify that displaytitle handles inline CSS styles (bug 26547) - rejected value
20500 !! options
20501 showtitle
20502 title=[[Screen]]
20503 !! config
20504 wgAllowDisplayTitle=true
20505 wgRestrictDisplayTitle=true
20506 !! wikitext
20507 this is not the the title
20508 {{DISPLAYTITLE:<span style="display: none;">s</span>creen}}
20509 !! html/php
20510 <span style="/* attempt to bypass $wgRestrictDisplayTitle */">s</span>creen
20511 <p>this is not the the title
20512 </p>
20513 !! end
20515 !! test
20516 Verify that displaytitle handles inline CSS styles (bug 26547) - accepted value
20517 !! options
20518 showtitle
20519 title=[[Screen]]
20520 !! config
20521 wgAllowDisplayTitle=true
20522 wgRestrictDisplayTitle=true
20523 !! wikitext
20524 this is not the the title
20525 {{DISPLAYTITLE:<span style="color: red;">s</span>creen}}
20526 !! html/php
20527 <span style="color: red;">s</span>creen
20528 <p>this is not the the title
20529 </p>
20530 !! end
20532 !! test
20533 Page status indicators: Empty name is invalid
20534 !! options
20535 showindicators
20536 !! wikitext
20537 <indicator name=" "></indicator>
20538 <indicator></indicator>
20539 !! html
20540 <p><span class="error"><strong>Error:</strong> Page status indicators' <code>name</code> attribute must not be empty.</span>
20541 <span class="error"><strong>Error:</strong> Page status indicators' <code>name</code> attribute must not be empty.</span>
20542 </p>
20543 !! end
20545 !! test
20546 Page status indicators: Weird syntaxes that are okay
20547 !! options
20548 showindicators
20549 !! wikitext
20550 <indicator name="empty" />
20551 <indicator name="name"></indicator>
20552 !! html
20553 empty=
20554 name=
20555 <p><br />
20556 </p>
20557 !! end
20559 !! test
20560 Page status indicators: Torture test
20561 !! options
20562 showindicators
20563 !! wikitext
20564 <indicator name="01">hello world</indicator>
20565 <indicator name="02">[[Main Page]]</indicator>
20566 <indicator name="03">[[File:Foobar.jpg|25px|link=]]</indicator>
20567 <indicator name="04">[[File:Foobar.jpg|25px]]</indicator>
20568 <indicator name="05">* foo
20569 * bar</indicator>
20570 <indicator name="06"><nowiki>foo</nowiki></indicator>
20571 <indicator name="07"> Preformatted</indicator>
20572 <indicator name="08"><div>Broken tag</indicator>
20573 <indicator name="09">{| class=wikitable
20574 | cell
20575 |}</indicator>
20576 <indicator name="10">Two
20578 paragraphs</indicator>
20579 !! html
20580 01=hello world
20581 02=<a href="/wiki/Main_Page" title="Main Page">Main Page</a>
20582 03=<img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg" width="25" height="3" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/38px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg 2x" />
20583 04=<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg" width="25" height="3" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/38px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg 2x" /></a>
20584 05=<ul><li> foo</li>
20585 <li> bar</li></ul>
20587 06=foo
20588 07=<pre>Preformatted
20589 </pre>
20590 08=<div>Broken tag</div>
20592 09=<table class="wikitable">
20593 <tr>
20594 <td> cell
20595 </td></tr></table>
20597 10=<p>Two
20598 </p><p>paragraphs
20599 </p>
20600 <p><br />
20601 </p><p><br />
20602 </p><p><br />
20603 </p><p><br />
20604 </p><p><br />
20605 </p>
20606 !! end
20608 !! test
20609 preload: check <noinclude> and <includeonly>
20610 !! options
20611 preload
20612 !! wikitext
20613 Hello <noinclude>cruel</noinclude><includeonly>kind</includeonly> world.
20614 !! html/php
20615 Hello kind world.
20616 !! end
20618 !! test
20619 preload: check <onlyinclude>
20620 !! options
20621 preload
20622 !! wikitext
20623 Goodbye <onlyinclude>Hello world</onlyinclude>
20624 !! html/php
20625 Hello world
20626 !! end
20628 !! test
20629 preload: can pass tags through if we want to
20630 !! options
20631 preload
20632 !! wikitext
20633 <includeonly><</includeonly>includeonly>Hello world<includeonly><</includeonly>/includeonly>
20634 !! html/php
20635 <includeonly>Hello world</includeonly>
20636 !! end
20638 !! test
20639 preload: check that it doesn't try to do tricks
20640 !! options
20641 preload
20642 !! wikitext
20643 * <!-- Hello --> ''{{world}}'' {{<includeonly>subst:</includeonly>How are you}}{{ {{{|safesubst:}}} #if:1|2|3}}
20644 !! html/php
20645 * <!-- Hello --> ''{{world}}'' {{subst:How are you}}{{ {{{|safesubst:}}} #if:1|2|3}}
20646 !! end
20648 !! test
20649 Play a bit with r67090 and bug 3158
20650 !! wikitext
20651 <div style="width:50% !important">&nbsp;</div>
20652 <div style="width:50%&nbsp;!important">&nbsp;</div>
20653 <div style="width:50%&#160;!important">&nbsp;</div>
20654 <div style="border : solid;">&nbsp;</div>
20655 !! html/php
20656 <div style="width:50% !important">&#160;</div>
20657 <div style="width:50% !important">&#160;</div>
20658 <div style="width:50% !important">&#160;</div>
20659 <div style="border&#160;: solid;">&#160;</div>
20661 !! html/parsoid
20662 <div style="width:50% !important" data-parsoid='{"stx":"html"}'><span typeof="mw:Entity" data-parsoid='{"srcContent":" "}'> </span></div>
20663 <div style="width:50% !important" data-parsoid='{"stx":"html","a":{"style":"width:50% !important"},"sa":{"style":"width:50%&amp;nbsp;!important"}}'><span typeof="mw:Entity" data-parsoid='{"srcContent":" "}'> </span></div>
20664 <div style="width:50% !important" data-parsoid='{"stx":"html","a":{"style":"width:50% !important"},"sa":{"style":"width:50%&amp;#160;!important"}}'><span typeof="mw:Entity" data-parsoid='{"srcContent":" "}'> </span></div>
20665 <div style="border : solid;" data-parsoid='{"stx":"html"}'><span typeof="mw:Entity" data-parsoid='{"srcContent":" "}'> </span></div>
20667 !! end
20669 !! test
20670 HTML5 data attributes
20671 !! wikitext
20672 <span data-foo="bar">Baz</span>
20673 <p data-abc-def_hij="">Quuz</p>
20674 !! html/php
20675 <p><span data-foo="bar">Baz</span>
20676 </p>
20677 <p data-abc-def_hij="">Quuz</p>
20679 !! html/parsoid
20680 <p><span data-foo="bar" data-parsoid='{"stx":"html"}'>Baz</span></p>
20681 <p data-abc-def_hij="" data-parsoid='{"stx":"html"}'>Quuz</p>
20682 !! end
20684 !! test
20685 Strip reserved data attributes
20686 !! wikitext
20687 <div data-mw="foo" data-parsoid="bar" data-mw-someext="baz" data-ok="fred" data-ooui="xyzzy" data-bad:ns="ns">d</div>
20688 !! html
20689 <div data-ok="fred">d</div>
20691 !! end
20693 !! test
20694 percent-encoding and + signs in internal links (Bug 26410)
20695 !! wikitext
20696 [[User:+%]] [[Page+title%]]
20697 [[%+]] [[%+|%20]] [[%+ ]] [[%+r]]
20698 [[%]] [[+]] [[File:%+abc%39|foo|[[bar]]]]
20699 [[%33%45]] [[%33%45+]]
20700 !! html/php
20701 <p><a href="/index.php?title=User:%2B%25&amp;action=edit&amp;redlink=1" class="new" title="User:+% (page does not exist)">User:+%</a> <a href="/index.php?title=Page%2Btitle%25&amp;action=edit&amp;redlink=1" class="new" title="Page+title% (page does not exist)">Page+title%</a>
20702 <a href="/index.php?title=%25%2B&amp;action=edit&amp;redlink=1" class="new" title="%+ (page does not exist)">%+</a> <a href="/index.php?title=%25%2B&amp;action=edit&amp;redlink=1" class="new" title="%+ (page does not exist)">%20</a> <a href="/index.php?title=%25%2B&amp;action=edit&amp;redlink=1" class="new" title="%+ (page does not exist)">%+ </a> <a href="/index.php?title=%25%2Br&amp;action=edit&amp;redlink=1" class="new" title="%+r (page does not exist)">%+r</a>
20703 <a href="/index.php?title=%25&amp;action=edit&amp;redlink=1" class="new" title="% (page does not exist)">%</a> <a href="/index.php?title=%2B&amp;action=edit&amp;redlink=1" class="new" title="+ (page does not exist)">+</a> <a href="/index.php?title=Special:Upload&amp;wpDestFile=%25%2Babc9" class="new" title="File:%+abc9">bar</a>
20704 <a href="/index.php?title=3E&amp;action=edit&amp;redlink=1" class="new" title="3E (page does not exist)">3E</a> <a href="/index.php?title=3E%2B&amp;action=edit&amp;redlink=1" class="new" title="3E+ (page does not exist)">3E+</a>
20705 </p>
20706 !! html/parsoid
20707 <p><a rel="mw:WikiLink" href="./User:+%25" title="User:+%">User:+%</a> <a rel="mw:WikiLink" href="Page+title%25" title="Page+title%">Page+title%</a>
20708 <a rel="mw:WikiLink" href="%25+" title="%+">%+</a> <a rel="mw:WikiLink" href="%25+" title="%+">%20</a> <a rel="mw:WikiLink" href="%25+" title="%+">%+ </a> <a rel="mw:WikiLink" href="%25+r" title="%+r">%+r</a>
20709 <a rel="mw:WikiLink" href="%25" title="%">%</a> <a rel="mw:WikiLink" href="+" title="+">+</a> <span class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"bogus","ak":"foo"},{"ck":"caption","ak":"[[bar]]"}]}' data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"&lt;a rel=\"mw:WikiLink\" href=\"./Bar\" title=\"Bar\" data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;simple&amp;quot;,&amp;quot;a&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;./Bar&amp;quot;},&amp;quot;sa&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;bar&amp;quot;},&amp;quot;dsr&amp;quot;:[94,101,2,2]}\">bar&lt;/a>"}'><a href="./File:%25+abc9"><img resource="./File:%25+abc9" src="./Special:FilePath/%25+abc9" height="220" width="220" data-parsoid='{"a":{"resource":"./File:%25+abc9","height":"220","width":"220"},"sa":{"resource":"File:%+abc%39"}}'/></a></span>
20710 <a rel="mw:WikiLink" href="./3E" title="3E" data-parsoid='{"stx":"simple","a":{"href":"./3E"},"sa":{"href":"%33%45"}}'>3E</a> <a rel="mw:WikiLink" href="./3E+" title="3E+" data-parsoid='{"stx":"simple","a":{"href":"./3E+"},"sa":{"href":"%33%45+"}}'>3E+</a></p>
20711 !! end
20713 !! test
20714 Special characters in embedded file links (bug 27679)
20715 !! wikitext
20716 [[File:Contains & ampersand.jpg]]
20717 [[File:Does not exist.jpg|Title with & ampersand]]
20718 !! html/php
20719 <p><a href="/index.php?title=Special:Upload&amp;wpDestFile=Contains_%26_ampersand.jpg" class="new" title="File:Contains &amp; ampersand.jpg">File:Contains &amp; ampersand.jpg</a>
20720 <a href="/index.php?title=Special:Upload&amp;wpDestFile=Does_not_exist.jpg" class="new" title="File:Does not exist.jpg">Title with &amp; ampersand</a>
20721 </p>
20722 !! html/parsoid
20723 <p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}]}'><a href="./File:Contains_&amp;_ampersand.jpg"><img resource="./File:Contains_&amp;_ampersand.jpg" src="./Special:FilePath/Contains_&amp;_ampersand.jpg" height="220" width="220"/></a></span>
20724 <span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"Title with &amp;amp; ampersand"}'><a href="./File:Does_not_exist.jpg"><img resource="./File:Does_not_exist.jpg" src="./Special:FilePath/Does_not_exist.jpg" height="220" width="220"/></a></span></p>
20725 !! end
20727 !! test
20728 Confirm that 'apos' named character reference doesn't make it to output (not legal in HTML 4)
20729 !! wikitext
20730 Text&apos;s been normalized?
20731 !! html
20732 <p>Text&#39;s been normalized?
20733 </p>
20734 !! end
20736 !! test
20737 Bug 19052 U+3000 IDEOGRAPHIC SPACE should terminate free external links
20738 !! wikitext
20739 http://www.example.org/ <-- U+3000 (vim: ^Vu3000)
20740 !! html
20741 <p><a rel="nofollow" class="external free" href="http://www.example.org/">http://www.example.org/</a> &lt;-- U+3000 (vim: ^Vu3000)
20742 </p>
20743 !! end
20745 !! test
20746 Bug 19052 U+3000 IDEOGRAPHIC SPACE should terminate bracketed external links
20747 !! wikitext
20748 [http://www.example.org/ ideograms]
20749 !! html
20750 <p><a rel="nofollow" class="external text" href="http://www.example.org/">ideograms</a>
20751 </p>
20752 !! end
20754 !! test
20755 Bug 19052 U+3000 IDEOGRAPHIC SPACE should terminate external images links
20756 !! wikitext
20757 http://www.example.org/pic.png <-- U+3000 (vim: ^Vu3000)
20758 !! html
20759 <p><img src="http://www.example.org/pic.png" alt="pic.png" /> &lt;-- U+3000 (vim: ^Vu3000)
20760 </p>
20761 !! end
20763 !! article
20764 Mediawiki:loop1
20765 !! text
20766 {{Identical|A}}
20767 !! endarticle
20769 !! article
20770 Mediawiki:loop2
20771 !! text
20772 {{Identical|B}}
20773 !! endarticle
20775 !! article
20776 Template:Identical
20777 !! text
20778 {{int:loop1}}
20779 {{int:loop2}}
20780 !! endarticle
20782 !! test
20783 Bug 31098 Template which includes system messages which includes the template
20784 !! wikitext
20785 {{Identical}}
20786 !! html
20787 <p><span class="error">Template loop detected: <a href="/wiki/Template:Identical" title="Template:Identical">Template:Identical</a></span>
20788 <span class="error">Template loop detected: <a href="/wiki/Template:Identical" title="Template:Identical">Template:Identical</a></span>
20789 </p>
20790 !! end
20792 !! test
20793 Bug31490 Turkish: ucfirst 'blah'
20794 !! options
20795 language=tr
20796 !! wikitext
20797 {{ucfirst:blah}}
20798 !! html
20799 <p>Blah
20800 </p>
20801 !! end
20803 !! test
20804 Bug31490 Turkish: ucfirst 'ix'
20805 !! options
20806 language=tr
20807 !! wikitext
20808 {{ucfirst:ix}}
20809 !! html
20810 <p>İx
20811 </p>
20812 !! end
20814 !! test
20815 Bug31490 Turkish: lcfirst 'BLAH'
20816 !! options
20817 language=tr
20818 !! wikitext
20819 {{lcfirst:BLAH}}
20820 !! html
20821 <p>bLAH
20822 </p>
20823 !! end
20825 !! test
20826 Bug31490 Turkish: ucfırst (with a dotless i)
20827 !! options
20828 language=tr
20829 !! wikitext
20830 {{ucfırst:blah}}
20831 !! html
20832 <p><a href="/index.php?title=%C5%9Eablon:Ucf%C4%B1rst:blah&amp;action=edit&amp;redlink=1" class="new" title="Şablon:Ucfırst:blah (sayfa mevcut değil)">Şablon:Ucfırst:blah</a>
20833 </p>
20834 !! end
20836 !! test
20837 Bug31490 ucfırst (with a dotless i) with English language
20838 !! options
20839 language=en
20840 !! wikitext
20841 {{ucfırst:blah}}
20842 !! html
20843 <p><a href="/index.php?title=Template:Ucf%C4%B1rst:blah&amp;action=edit&amp;redlink=1" class="new" title="Template:Ucfırst:blah (page does not exist)">Template:Ucfırst:blah</a>
20844 </p>
20845 !! end
20847 !! test
20848 Bug 26375: TOC with italics
20849 !! options
20850 title=[[Main Page]]
20851 !! wikitext
20852 __TOC__
20853 == ''Lost'' episodes ==
20854 !! html
20855 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
20856 <ul>
20857 <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>
20858 </ul>
20859 </div>
20861 <h2><span class="mw-headline" id="Lost_episodes"><i>Lost</i> episodes</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: Lost episodes">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
20863 !! end
20865 !! test
20866 Bug 26375: TOC with bold
20867 !! options
20868 title=[[Main Page]]
20869 !! wikitext
20870 __TOC__
20871 == '''should be bold''' then normal text ==
20872 !! html
20873 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
20874 <ul>
20875 <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>
20876 </ul>
20877 </div>
20879 <h2><span class="mw-headline" id="should_be_bold_then_normal_text"><b>should be bold</b> then normal text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: should be bold then normal text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
20881 !! end
20883 !! test
20884 Bug 33845: Headings become cursive in TOC when they contain an image
20885 !! options
20886 title=[[Main Page]]
20887 !! wikitext
20888 __TOC__
20889 == Image [[Image:foobar.jpg]] ==
20890 !! html
20891 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
20892 <ul>
20893 <li class="toclevel-1 tocsection-1"><a href="#Image"><span class="tocnumber">1</span> <span class="toctext">Image</span></a></li>
20894 </ul>
20895 </div>
20897 <h2><span class="mw-headline" id="Image">Image <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></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: Image">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
20899 !! end
20901 !! test
20902 Bug 33845 (2): Headings become bold in TOC when they contain a blockquote
20903 !! options
20904 title=[[Main Page]]
20905 !! wikitext
20906 __TOC__
20907 == <blockquote>Quote</blockquote> ==
20908 !! html
20909 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
20910 <ul>
20911 <li class="toclevel-1 tocsection-1"><a href="#Quote"><span class="tocnumber">1</span> <span class="toctext">Quote</span></a></li>
20912 </ul>
20913 </div>
20915 <h2><span class="mw-headline" id="Quote"><blockquote>Quote</blockquote></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: Quote">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
20917 !! html+tidy
20918 <p></p>
20919 <div id="toc" class="toc">
20920 <div id="toctitle">
20921 <h2>Contents</h2>
20922 </div>
20923 <ul>
20924 <li class="toclevel-1 tocsection-1"><a href="#Quote"><span class="tocnumber">1</span> <span class="toctext">Quote</span></a></li>
20925 </ul>
20926 </div>
20927 <p></p>
20928 <h2><span class="mw-headline" id="Quote"></span></h2>
20929 <blockquote>
20930 <p><span class="mw-headline" id="Quote">Quote</span></p>
20931 </blockquote>
20932 <p><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: Quote">edit</a><span class="mw-editsection-bracket">]</span></span></p>
20933 !! end
20935 !! test
20936 Unclosed tags in TOC
20937 !! options
20938 title=[[Main Page]]
20939 !! wikitext
20940 __TOC__
20941 == Proof: 2 < 3 ==
20942 <small>Hanc marginis exiguitas non caperet.</small>
20944 !! html
20945 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
20946 <ul>
20947 <li class="toclevel-1 tocsection-1"><a href="#Proof:_2_.3C_3"><span class="tocnumber">1</span> <span class="toctext">Proof: 2 &lt; 3</span></a></li>
20948 </ul>
20949 </div>
20951 <h2><span class="mw-headline" id="Proof:_2_.3C_3">Proof: 2 &lt; 3</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: Proof: 2 &lt; 3">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
20952 <p><small>Hanc marginis exiguitas non caperet.</small>
20954 </p>
20955 !! end
20957 !! test
20958 Multiple tags in TOC
20959 !! wikitext
20960 __TOC__
20961 == <i>Foo</i> <b>Bar</b> ==
20963 == <i>Foo</i> <blockquote>Bar</blockquote> ==
20964 !! html
20965 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
20966 <ul>
20967 <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>
20968 <li class="toclevel-1 tocsection-2"><a href="#Foo_Bar_2"><span class="tocnumber">2</span> <span class="toctext"><i>Foo</i> Bar</span></a></li>
20969 </ul>
20970 </div>
20972 <h2><span class="mw-headline" id="Foo_Bar"><i>Foo</i> <b>Bar</b></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
20973 <h2><span class="mw-headline" id="Foo_Bar_2"><i>Foo</i> <blockquote>Bar</blockquote></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
20975 !! html+tidy
20976 <p></p>
20977 <div id="toc" class="toc">
20978 <div id="toctitle">
20979 <h2>Contents</h2>
20980 </div>
20981 <ul>
20982 <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>
20983 <li class="toclevel-1 tocsection-2"><a href="#Foo_Bar_2"><span class="tocnumber">2</span> <span class="toctext"><i>Foo</i> Bar</span></a></li>
20984 </ul>
20985 </div>
20986 <p></p>
20987 <h2><span class="mw-headline" id="Foo_Bar"><i>Foo</i> <b>Bar</b></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
20988 <h2><span class="mw-headline" id="Foo_Bar_2"><i>Foo</i></span></h2>
20989 <blockquote>
20990 <p><span class="mw-headline" id="Foo_Bar_2">Bar</span></p>
20991 </blockquote>
20992 <p><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></p>
20993 !! end
20995 # Don't expect Parsoid to roundtrip this until the php parser comes closer to
20996 # html5 tag parsing.
20997 !! test
20998 Tags with parameters in TOC
20999 !! options
21000 parsoid=wt2html
21001 !! wikitext
21002 __TOC__
21003 == <sup class="in-h2">Hello</sup> ==
21005 == <sup class="a > b">Evilbye</sup> ==
21006 !! html/php
21007 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
21008 <ul>
21009 <li class="toclevel-1 tocsection-1"><a href="#Hello"><span class="tocnumber">1</span> <span class="toctext"><sup>Hello</sup></span></a></li>
21010 <li class="toclevel-1 tocsection-2"><a href="#b.22.3EEvilbye"><span class="tocnumber">2</span> <span class="toctext"><sup> b"&gt;Evilbye</sup></span></a></li>
21011 </ul>
21012 </div>
21014 <h2><span class="mw-headline" id="Hello"><sup class="in-h2">Hello</sup></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Hello">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21015 <h2><span class="mw-headline" id="b.22.3EEvilbye"><sup class="a"> b"&gt;Evilbye</sup></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: b&quot;&gt;Evilbye">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21017 !! html/parsoid
21018 <meta property="mw:PageProp/toc" />
21019 <h2> <sup class="in-h2" data-parsoid='{"stx":"html"}'>Hello</sup> </h2>
21021 <h2> <sup class="a " data-parsoid='{"stx":"html"}'> b">Evilbye</sup> </h2>
21022 !! end
21024 !! test
21025 span tags with directionality in TOC
21026 !! wikitext
21027 __TOC__
21028 == <span dir="ltr">C++</span> ==
21030 == <span dir="rtl">זבנג!</span> ==
21032 == <span style="font-style: italic">The attributes on these span tags must be deleted from the TOC</span> ==
21034 == <span style="font-style: italic" dir="ltr">All attributes on these span tags must be deleted from the TOC</span> ==
21036 == <span dir="ltr" style="font-style: italic">Attributes after dir on these span tags must be deleted from the TOC</span> ==
21037 !! html
21038 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
21039 <ul>
21040 <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>
21041 <li class="toclevel-1 tocsection-2"><a href="#.D7.96.D7.91.D7.A0.D7.92.21"><span class="tocnumber">2</span> <span class="toctext"><span dir="rtl">זבנג!</span></span></a></li>
21042 <li class="toclevel-1 tocsection-3"><a href="#The_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"><span class="tocnumber">3</span> <span class="toctext"><span>The attributes on these span tags must be deleted from the TOC</span></span></a></li>
21043 <li class="toclevel-1 tocsection-4"><a href="#All_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"><span class="tocnumber">4</span> <span class="toctext"><span>All attributes on these span tags must be deleted from the TOC</span></span></a></li>
21044 <li class="toclevel-1 tocsection-5"><a href="#Attributes_after_dir_on_these_span_tags_must_be_deleted_from_the_TOC"><span class="tocnumber">5</span> <span class="toctext"><span dir="ltr">Attributes after dir on these span tags must be deleted from the TOC</span></span></a></li>
21045 </ul>
21046 </div>
21048 <h2><span class="mw-headline" id="C.2B.2B"><span dir="ltr">C++</span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: C++">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21049 <h2><span class="mw-headline" id=".D7.96.D7.91.D7.A0.D7.92.21"><span dir="rtl">זבנג!</span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: זבנג!">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21050 <h2><span class="mw-headline" id="The_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"><span style="font-style: italic">The attributes on these span tags must be deleted from the TOC</span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: The attributes on these span tags must be deleted from the TOC">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21051 <h2><span class="mw-headline" id="All_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"><span style="font-style: italic" dir="ltr">All attributes on these span tags must be deleted from the TOC</span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: All attributes on these span tags must be deleted from the TOC">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21052 <h2><span class="mw-headline" id="Attributes_after_dir_on_these_span_tags_must_be_deleted_from_the_TOC"><span dir="ltr" style="font-style: italic">Attributes after dir on these span tags must be deleted from the TOC</span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: Attributes after dir on these span tags must be deleted from the TOC">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21054 !! end
21056 !! test
21057 Bug 72884: bdi element in ToC
21058 !! wikitext
21059 __TOC__
21060 == <bdi>test</bdi> ==
21061 !! html
21062 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
21063 <ul>
21064 <li class="toclevel-1 tocsection-1"><a href="#test"><span class="tocnumber">1</span> <span class="toctext"><bdi>test</bdi></span></a></li>
21065 </ul>
21066 </div>
21068 <h2><span class="mw-headline" id="test"><bdi>test</bdi></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: test">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21070 !! end
21072 # Note that the html output does not have the <p></p>, but the
21073 # html+tidy output *does*.  This is because the empty <p></p> is
21074 # removed by the sanitizer, but only when tidy is *not* enabled (!).
21075 !! test
21076 Empty <p> tag in TOC, removed by Sanitizer (T92892)
21077 !! wikitext
21078 __TOC__
21079 == x ==
21080 !! html
21081 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
21082 <ul>
21083 <li class="toclevel-1 tocsection-1"><a href="#x"><span class="tocnumber">1</span> <span class="toctext">x</span></a></li>
21084 </ul>
21085 </div>
21087 <h2><span class="mw-headline" id="x">x</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: x">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21089 !! html+tidy
21090 <p></p>
21091 <div id="toc" class="toc">
21092 <div id="toctitle">
21093 <h2>Contents</h2>
21094 </div>
21095 <ul>
21096 <li class="toclevel-1 tocsection-1"><a href="#x"><span class="tocnumber">1</span> <span class="toctext">x</span></a></li>
21097 </ul>
21098 </div>
21099 <p></p>
21100 <h2><span class="mw-headline" id="x">x</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: x">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21101 !! end
21103 !! article
21104 MediaWiki:Bug32057
21105 !! text
21106 == {{int:headline_sample}} ==
21107 !! endarticle
21109 !! test
21110 Bug 32057: Title needed when expanding <h> nodes.
21111 !! options
21112 title=[[Main Page]]
21113 !! wikitext
21114 {{int:Bug32057}}
21115 !! html
21116 <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&amp;action=edit&amp;section=1" title="Edit section: Headline text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21118 !! end
21120 !! test
21121 Strip marker in urlencode
21122 !! wikitext
21123 {{urlencode:x<nowiki/>y}}
21124 {{urlencode:x<nowiki/>y|wiki}}
21125 {{urlencode:x<nowiki/>y|path}}
21126 {{urlencode:x<pre id="one">two</pre>y}}
21127 !! html
21128 <p>xy
21132 </p>
21133 !! end
21135 !! test
21136 Strip marker in lc
21137 !! wikitext
21138 {{lc:x<nowiki/>y}}
21139 !! html
21140 <p>xy
21141 </p>
21142 !! end
21144 !! test
21145 Strip marker in uc
21146 !! wikitext
21147 {{uc:x<nowiki/>y}}
21148 !! html
21149 <p>XY
21150 </p>
21151 !! end
21153 !! test
21154 Strip marker in formatNum
21155 !! wikitext
21156 {{formatnum:1<nowiki/>2}}
21157 {{formatnum:1<nowiki/>2|R}}
21158 !! html
21159 <p>12
21161 </p>
21162 !! end
21164 !! test
21165 Check noCommafy in formatNum
21166 !! options
21167 language=be-tarask
21168 !! wikitext
21169 {{formatnum:123456.78}}
21170 {{formatnum:123456.78|NOSEP}}
21171 !! html
21172 <p>123 456,78
21173 123456.78
21174 </p>
21175 !! end
21177 !! test
21178 Wrong option for formatNum (bug 56199)
21179 !! wikitext
21180 {{formatnum:1,234.56|Random}}
21181 {{formatnum:1,234.56|EVERYTHING}}
21182 {{formatnum:1234.56|any argument that has the string 'NOSEP'}}
21183 !! html
21184 <p>1,234.56
21185 1,234.56
21186 1,234.56
21187 </p>
21188 !! end
21190 !! test
21191 Strip marker in grammar
21192 !! options
21193 language=fi
21194 !! wikitext
21195 {{grammar:elative|foo<nowiki/>bar}}
21196 !! html
21197 <p>foobarista
21198 </p>
21199 !! end
21201 !! test
21202 Strip marker in padleft
21203 !! wikitext
21204 {{padleft:|2|x<nowiki/>y}}
21205 !! html
21206 <p>xy
21207 </p>
21208 !! end
21210 !! test
21211 Strip marker in padright
21212 !! wikitext
21213 {{padright:|2|x<nowiki/>y}}
21214 !! html
21215 <p>xy
21216 </p>
21217 !! end
21219 !! test
21220 Strip marker in anchorencode
21221 !! wikitext
21222 {{anchorencode:x<nowiki/>y}}
21223 !! html
21224 <p>xy
21225 </p>
21226 !! end
21228 !! test
21229 nowiki inside link inside heading (bug 18295)
21230 !! wikitext
21231 ==[[foo|x<nowiki>y</nowiki>z]]==
21232 !! html
21233 <h2><span class="mw-headline" id="xyz"><a href="/wiki/Foo" title="Foo">xyz</a></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: xyz">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21235 !! end
21237 !! test
21238 new support for bdi element (bug 31817)
21239 !! wikitext
21240 <p dir="rtl" lang="he">ולדימיר לנין (ברוסית: <bdi lang="ru">Владимир Ленин</bdi>, 24 באפריל 1870–22 בינואר 1924) הוא מנהיג פוליטי קומוניסטי רוסי.</p>
21241 !! html
21242 <p dir="rtl" lang="he">ולדימיר לנין (ברוסית: <bdi lang="ru">Владимир Ленин</bdi>, 24 באפריל 1870–22 בינואר 1924) הוא מנהיג פוליטי קומוניסטי רוסי.</p>
21244 !!end
21246 !! test
21247 Ignore pipe between table row attributes
21248 !! wikitext
21250 | quux
21251 |- id=foo | style='color: red'
21252 | bar
21254 !! html
21255 <table>
21256 <tr>
21257 <td> quux
21258 </td></tr>
21259 <tr id="foo" style="color: red">
21260 <td> bar
21261 </td></tr></table>
21263 !! end
21265 !!test
21266 Gallery override link with WikiLink (bug 34852)
21267 !! wikitext
21268 <gallery>
21269 File:foobar.jpg|caption|alt=galleryalt|link=InterWikiLink
21270 </gallery>
21271 !! html
21272 <ul class="gallery mw-gallery-traditional">
21273                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21274                         <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" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21275                         <div class="gallerytext">
21276 <p>caption
21277 </p>
21278                         </div>
21279                 </div></li>
21280 </ul>
21282 !! end
21284 !!test
21285 Gallery override link with absolute external link (bug 34852)
21286 !! wikitext
21287 <gallery>
21288 File:foobar.jpg|caption|alt=galleryalt|link=http://www.example.org
21289 </gallery>
21290 !! html
21291 <ul class="gallery mw-gallery-traditional">
21292                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21293                         <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" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21294                         <div class="gallerytext">
21295 <p>caption
21296 </p>
21297                         </div>
21298                 </div></li>
21299 </ul>
21301 !! end
21303 !!test
21304 Gallery override link with malicious javascript (bug 34852)
21305 !! wikitext
21306 <gallery>
21307 File:foobar.jpg|caption|alt=galleryalt|link=" onclick="alert('malicious javascript code!');
21308 </gallery>
21309 !! html
21310 <ul class="gallery mw-gallery-traditional">
21311                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21312                         <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" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21313                         <div class="gallerytext">
21314 <p>caption
21315 </p>
21316                         </div>
21317                 </div></li>
21318 </ul>
21320 !! end
21322 !!test
21323 Gallery with invalid title as link (bug 43964)
21324 !! wikitext
21325 <gallery>
21326 File:foobar.jpg|link=<
21327 </gallery>
21328 !! html
21329 <ul class="gallery mw-gallery-traditional">
21330                 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21331                         <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" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21332                         <div class="gallerytext">
21333                         </div>
21334                 </div></li>
21335 </ul>
21337 !! end
21339 !!test
21340 Language parser function
21341 !! wikitext
21342 {{#language:ar}}
21343 !! html
21344 <p>العربية
21345 </p>
21346 !! end
21348 !!test
21349 Padleft and padright as substr
21350 !! wikitext
21351 {{padleft:|3|abcde}}
21352 {{padright:|3|abcde}}
21353 !! html
21354 <p>abc
21356 </p>
21357 !! end
21359 !!test
21360 Special parser function
21361 !! wikitext
21362 {{#special:RandomPage}}
21363 {{#special:BaDtItLe}}
21364 {{#special:Foobar}}
21365 !! html
21366 <p>Special:Random
21367 Special:Badtitle
21368 Special:Foobar
21369 </p>
21370 !! end
21372 !!test
21373 Bug 34939 - Case insensitive link parsing ([HttP://])
21374 !! wikitext
21375 [HttP://MediaWiki.Org/]
21376 !! html/php
21377 <p><a rel="nofollow" class="external autonumber" href="HttP://MediaWiki.Org/">[1]</a>
21378 </p>
21379 !! html/parsoid
21380 <p><a rel="mw:ExtLink" href="HttP://MediaWiki.Org/"></a></p>
21381 !! end
21383 !!test
21384 Bug 34939 - Case insensitive link parsing ([HttP:// title])
21385 !! wikitext
21386 [HttP://MediaWiki.Org/ MediaWiki]
21387 !! html
21388 <p><a rel="nofollow" class="external text" href="HttP://MediaWiki.Org/">MediaWiki</a>
21389 </p>
21390 !! end
21392 !!test
21393 Bug 34939 - Case insensitive link parsing (HttP://)
21394 !! wikitext
21395 HttP://MediaWiki.Org/
21396 !! html/php
21397 <p><a rel="nofollow" class="external free" href="HttP://MediaWiki.Org/">HttP://MediaWiki.Org/</a>
21398 </p>
21399 !! html/parsoid
21400 <p><a rel="mw:ExtLink" href="HttP://MediaWiki.Org/">HttP://MediaWiki.Org/</a></p>
21401 !! end
21403 !!test
21404 Disable TOC
21405 !! options
21406 notoc
21407 !! wikitext
21408 Lead
21409 == Section 1 ==
21410 == Section 2 ==
21411 == Section 3 ==
21412 == Section 4 ==
21413 == Section 5 ==
21414 !! html
21415 <p>Lead
21416 </p>
21418 <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&amp;action=edit&amp;section=1" title="Edit section: Section 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21419 <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=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Section 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21420 <h2><span class="mw-headline" id="Section_3">Section 3</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: Section 3">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21421 <h2><span class="mw-headline" id="Section_4">Section 4</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: Section 4">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21422 <h2><span class="mw-headline" id="Section_5">Section 5</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: Section 5">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
21424 !! end
21428 ### Parsoid-specific tests
21429 ### Parsoid-PHP parser incompatibilities
21431 !!test
21432 1. SOL-sensitive wikitext tokens as template-args
21433 !!options
21434 parsoid=wt2html,wt2wt
21435 !! wikitext
21436 {{echo|*a}}
21437 {{echo|#a}}
21438 {{echo|:a}}
21439 !! html
21440 <span about="#mwt1" typeof="mw:Transclusion">
21441 </span><ul about="#mwt1"><li>a</li>
21442 </ul>
21443 <span about="#mwt2" typeof="mw:Transclusion">
21444 </span><ol about="#mwt2"><li>a</li>
21445 </ol>
21446 <span about="#mwt3" typeof="mw:Transclusion">
21447 </span><dl about="#mwt3"><dd>a</dd>
21448 </dl>
21449 !!end
21451 #### -----------------------------------------------------------------
21452 #### Parsoid-specific functionality tests
21453 #### -----------------------------------------------------------------
21455 # Bug 63642/66749: Formatting elt fixup around images is cleaned up.
21456 # We know wt2wt will fail, but we expect selser to pass.
21457 # Due to the nature of our testing, wt2wt and selser tests will enter the
21458 # blacklist and we'll catch selser regressions based on changes to the
21459 # blacklist entries for selser tests.
21460 !! test
21461 1. Bad treebuilder fixup of formatting elt is cleaned up
21462 !! options
21463 parsoid=wt2html,wt2wt
21464 !! wikitext
21467 <small>
21468 [[Image:Foobar.jpg|right|Test]]
21469 </small>
21471 !! html/parsoid
21472 <table>
21473 <tbody><tr><td>
21474 <small>
21475 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Test</figcaption></figure>
21476 </small>
21477 </td></tr>
21478 </tbody></table>
21479 !! end
21481 !! test
21482 2. Bad treebuilder fixup of formatting elt is cleaned up
21483 !! options
21484 parsoid=wt2html,wt2wt
21485 !! wikitext
21486 '''foo[[File:Foobar.jpg|thumb|caption]]bar'''
21488 <small>[[Image:Foobar.jpg|right|300px]]</small>
21489 !! html/parsoid
21491 <p><b>foo</b></p>
21492 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><b>caption</b></figcaption></figure>
21493 <p><b>bar</b></p>
21494 <small><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/300px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="34" width="300"/></a></figure></small>
21495 !! end
21497 !! test
21498 3. Bad treebuilder fixup of formatting elt is cleaned up
21499 !! options
21500 parsoid=wt2html,wt2wt
21501 !! wikitext
21502 <small>'''foo[[File:Foobar.jpg|thumb|caption]]bar'''</small>
21503 !! html/parsoid
21504 <p><small><b>foo</b></small></p>
21505 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><small><b>caption</b></small></figcaption></figure>
21506 <p><small><b>bar</b></small></p>
21507 !! end
21509 !! test
21510 4. Bad treebuilder fixup of formatting elt is cleaned up: formatting tags around captionless images are ignored
21511 !! options
21512 parsoid=wt2html,wt2wt
21513 !! wikitext
21514 '''<small>[[Image:Foobar.jpg|right|300px]]</small>'''
21515 !! html/parsoid
21516 <p><b><small></small></b></p>
21517 <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/300px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="34" width="300"/></a></figure>
21518 <p></p>
21519 !! end
21521 #### ----------------------------------------------------------------
21522 #### Parsoid-only testing of Parsoid's impl of <ref> and <references>
21523 #### tags. Parsoid's output for these tags differs from that of the
21524 #### PHP parser.
21525 #### ----------------------------------------------------------------
21527 !!test
21528 Ref: 1. ref-location should be replaced with an index span
21529 !! wikitext
21530 A <ref>foo</ref>
21531 B <ref name="x">foo</ref>
21532 C <ref name="y" />
21533 <references />
21534 !! html/parsoid
21535 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span>
21536 B <span about="#mwt4" class="mw-ref" id="cite_ref-x_2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-x-2"},"attrs":{"name":"x"}}'><a href="#cite_note-x-2"><span class="mw-reflink-text">[2]</span></a></span>
21537 C <span about="#mwt6" class="mw-ref" id="cite_ref-y_3-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"y"}}'><a href="#cite_note-y-3"><span class="mw-reflink-text">[3]</span></a></span></p>
21538 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt8" data-mw='{"name":"references","attrs":{}}'>
21539 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li>
21540 <li about="#cite_note-x-2" id="cite_note-x-2"><a href="#cite_ref-x_2-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-x-2" class="mw-reference-text">foo</span></li>
21541 <li about="#cite_note-y-3" id="cite_note-y-3"><a href="#cite_ref-y_3-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-y-3" class="mw-reference-text"></span></li>
21542 </ol>
21543 !!end
21545 !!test
21546 Ref: 2. ref-tags with identical names should all get the same index
21547 !! wikitext
21548 A <ref name="x">foo</ref>
21549 B <ref name="x" />
21550 <references />
21551 !! html/parsoid
21552 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-x_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-x-1"},"attrs":{"name":"x"}}'><a href="#cite_note-x-1"><span class="mw-reflink-text">[1]</span></a></span>
21553 B <span about="#mwt4" class="mw-ref" id="cite_ref-x_1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"x"}}'><a href="#cite_note-x-1"><span class="mw-reflink-text">[1]</span></a></span></p>
21554 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'>
21555 <li about="#cite_note-x-1" id="cite_note-x-1"><span rel="mw:referencedBy"><a href="#cite_ref-x_1-0"><span class="mw-linkback-text">1 </span></a><a href="#cite_ref-x_1-1"><span class="mw-linkback-text">2 </span></a></span> <span id="mw-reference-text-cite_note-x-1" class="mw-reference-text">foo</span></li>
21556 </ol>
21557 !!end
21559 !!test
21560 Ref: 3. spaces in ref-names should be ignored
21561 !! wikitext
21562 A <ref name="x">foo</ref>
21563 B <ref name=" x " />
21564 C <ref name= x  />
21565 <references />
21566 !! html/parsoid
21567 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-x_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-x-1"},"attrs":{"name":"x"}}'><a href="#cite_note-x-1"><span class="mw-reflink-text">[1]</span></a></span>
21568 B <span about="#mwt4" class="mw-ref" id="cite_ref-x_1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"x"}}'><a href="#cite_note-x-1"><span class="mw-reflink-text">[1]</span></a></span>
21569 C <span about="#mwt6" class="mw-ref" id="cite_ref-x_1-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"x"}}'><a href="#cite_note-x-1"><span class="mw-reflink-text">[1]</span></a></span></p>
21570 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt8" data-mw='{"name":"references","attrs":{}}'>
21571 <li about="#cite_note-x-1" id="cite_note-x-1"><span rel="mw:referencedBy"><a href="#cite_ref-x_1-0"><span class="mw-linkback-text">1 </span></a><a href="#cite_ref-x_1-1"><span class="mw-linkback-text">2 </span></a><a href="#cite_ref-x_1-2"><span class="mw-linkback-text">3 </span></a></span> <span id="mw-reference-text-cite_note-x-1" class="mw-reference-text">foo</span></li>
21572 </ol>
21573 !!end
21575 # NOTE: constructor is a predefined property in JS and constructor as a ref-name can clash with it if not handled properly)
21576 !!test
21577 Ref: 4. 'constructor' should be accepted as a valid ref-name
21578 !! wikitext
21579 A <ref name="constructor">foo</ref>
21580 <references />
21581 !! html/parsoid
21582 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-constructor_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-constructor-1"},"attrs":{"name":"constructor"}}'><a href="#cite_note-constructor-1"><span class="mw-reflink-text">[1]</span></a></span></p>
21583 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'>
21584 <li about="#cite_note-constructor-1" id="cite_note-constructor-1"><a href="#cite_ref-constructor_1-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-constructor-1" class="mw-reference-text">foo</span></li>
21585 </ol>
21586 !!end
21588 !!test
21589 Ref: 5. body should accept generic wikitext
21590 !! wikitext
21591 A <ref>
21592  This is a '''[[bolded link]]''' and this is a {{echo|transclusion}}
21593 </ref>
21595 <references />
21596 !! html/parsoid
21597 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span></p>
21599 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{}}'>
21600 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">This is a <b><a rel="mw:WikiLink" href="Bolded_link" title="Bolded link">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}}]}'>transclusion</span>
21601 </span></li>
21602 </ol>
21603 !!end
21605 !!test
21606 Ref: 6. indent-pres should not be output in ref-body
21607 !! wikitext
21608 A <ref>
21609  foo
21610  bar
21611  baz
21612 </ref>
21614 <references />
21615 !! html/parsoid
21616 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span></p>
21618 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'>
21619 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo
21620  bar
21621  baz
21622 </span></li>
21623 </ol>
21624 !!end
21626 !!test
21627 Ref: 7. No p-wrapping in ref-body
21628 !! wikitext
21629 A <ref>
21639 booz
21640 </ref>
21642 <references />
21643 !! html/parsoid
21644 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span></p>
21646 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'>
21647 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo
21656 booz
21657 </span></li>
21658 </ol>
21659 !!end
21661 !!test
21662 Ref: 8. transclusion wikitext has lower precedence
21663 !! wikitext
21664 A <ref> foo {{echo|</ref> B C}}
21666 <references />
21667 !! html/parsoid
21668 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span> B C<span typeof="mw:Nowiki">}}</span></p>
21669 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'>
21670 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo {{echo|</span></li>
21671 </ol>
21672 !!end
21674 !!test
21675 Ref: 9. unclosed comments should not leak out of ref-body
21676 !! wikitext
21677 A <ref> foo <!--</ref> B C
21678 <references />
21679 !! html/parsoid
21680 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span> B C</p>
21681 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'>
21682 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo <!----></span></li>
21683 </ol>
21684 !!end
21686 !!test
21687 Ref: 10. Unclosed HTML tags should not leak out of ref-body
21688 !! wikitext
21689 A <ref> <b> foo </ref> B C
21691 <references />
21692 !! html/parsoid
21693 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span> B C</p>
21696 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'>
21697 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text"><b data-parsoid='{"stx":"html","autoInsertedEnd":true}'> foo </b></span></li>
21698 </ol>
21699 !!end
21701 !!test
21702 Ref: 11. ref-tags acts like an inline element wrt P-wrapping
21703 !! wikitext
21704 A <ref>foo</ref> B
21705 C <ref>bar</ref> D
21706 <references />
21707 !! html/parsoid
21708 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span> B
21709 C <span about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="#cite_note-2"><span class="mw-reflink-text">[2]</span></a></span> D</p>
21710 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'>
21711 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li>
21712 <li about="#cite_note-2" id="cite_note-2"><a href="#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">bar</span></li>
21713 </ol>
21714 !!end
21716 !!test
21717 Ref: 12. ref-tags act as trailing newline migration barrier
21718 !! wikitext
21719 <!--the newline at the end of this line moves out of the p tag-->a
21721 b<!--the newline at the end of this line stays inside the p tag--> <ref />
21722 <ref />
21725 <references />
21726 !! html/parsoid
21727 <!--the newline at the end of this line moves out of the p tag--><p>a</p>
21730 <p>b<!--the newline at the end of this line stays inside the p tag--> <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span>
21731 <span about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{}}'><a href="#cite_note-2"><span class="mw-reflink-text">[2]</span></a></span></p>
21733 <p>c</p>
21734 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'>
21735 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text"></span></li>
21736 <li about="#cite_note-2" id="cite_note-2"><a href="#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text"></span></li></ol>
21737 !!end
21739 !!test
21740 Ref: 13. ref-tags are not SOL-transparent and block indent-pres
21741 !! wikitext
21742 <ref>foo</ref> A
21743 <ref>bar
21744 </ref> B
21745 <references />
21746 !! html/parsoid
21747 <p><span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span> A
21748 <span about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="#cite_note-2"><span class="mw-reflink-text">[2]</span></a></span> B</p>
21749 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'>
21750 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li>
21751 <li about="#cite_note-2" id="cite_note-2"><a href="#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">bar
21752 </span></li>
21753 </ol>
21754 !!end
21756 !!test
21757 Ref: 14. A nested ref-tag should be emitted as plain text
21758 !! wikitext
21759 <ref>foo <ref>bar</ref> baz</ref>
21761 <references />
21762 !! html/parsoid
21763 <p><span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span>
21764 </p>
21765 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{}}'>
21766 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo &lt;ref>bar&lt;/ref> baz</span></li>
21767 </ol>
21768 !!end
21770 !!test
21771 Ref: 15. ref-tags with identical names should get identical indexes
21772 !! wikitext
21773 A1 <ref name="a">foo</ref> A2 <ref name="a" />
21774 B1 <ref name="b" /> B2 <ref name="b">bar</ref>
21776 <references />
21777 !! html/parsoid
21778 <p>A1 <span about="#mwt3" class="mw-ref" id="cite_ref-a_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-a-1"},"attrs":{"name":"a"}}'><a href="#cite_note-a-1"><span class="mw-reflink-text">[1]</span></a></span> A2 <span about="#mwt4" class="mw-ref" id="cite_ref-a_1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"a"}}'><a href="#cite_note-a-1"><span class="mw-reflink-text">[1]</span></a></span>
21779 B1 <span about="#mwt7" class="mw-ref" id="cite_ref-b_2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"b"}}'><a href="#cite_note-b-2"><span class="mw-reflink-text">[2]</span></a></span> B2 <span about="#mwt8" class="mw-ref" id="cite_ref-b_2-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-b-2"},"attrs":{"name":"b"}}'><a href="#cite_note-b-2"><span class="mw-reflink-text">[2]</span></a></span></p>
21781 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt10" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-a-1" id="cite_note-a-1"><span rel="mw:referencedBy"><a href="#cite_ref-a_1-0"><span class="mw-linkback-text">1 </span></a><a href="#cite_ref-a_1-1"><span class="mw-linkback-text">2 </span></a></span> <span id="mw-reference-text-cite_note-a-1" class="mw-reference-text">foo</span></li><li about="#cite_note-b-2" id="cite_note-b-2"><span rel="mw:referencedBy"><a href="#cite_ref-b_2-0"><span class="mw-linkback-text">1 </span></a><a href="#cite_ref-b_2-1"><span class="mw-linkback-text">2 </span></a></span> <span id="mw-reference-text-cite_note-b-2" class="mw-reference-text">bar</span></li>
21782 </ol>
21783 !!end
21785 ## We don't bother wt2wt-ing non-standard whitespace
21786 !!test
21787 Ref: 16. Tokenizer should accept non-standard whitespace in <ref> and </ref> tags
21788 !!options
21789 parsoid=wt2html
21790 !! wikitext
21791 A <ref >foo</ref >
21793 <references />
21794 !! html/parsoid
21795 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span></p>
21796 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'>
21797 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li></ol>
21798 !!end
21800 !!test
21801 Ref: 17. Generate valid HTML5 id/about attributes
21802 !!wikitext
21803 <ref name="a b">foo</ref>
21805 <references />
21806 !!html/parsoid
21807 <p><span class="mw-ref" id="cite_ref-a_b_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-a_b-1"},"attrs":{"name":"a b"}}'><a href="#cite_note-a_b-1"><span class="mw-reflink-text">[1]</span></a></span>
21808 </p>
21810 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'>
21811 <li about="#cite_note-a_b-1" id="cite_note-a_b-1"><a href="#cite_ref-a_b_1-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-a_b-1" class="mw-reference-text">foo</span></li>
21812 </ol>
21813 !!end
21815 !!test
21816 Ref: 18. T58916: Extension attributes should be parsed as plain text
21817 !!wikitext
21818 <ref name="{{echo|a}}">foo</ref>
21820 <references />
21821 !!html/parsoid
21822 <p><span class="mw-ref" id="cite_ref-.7B.7Becho.7Ca.7D.7D_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-.7B.7Becho.7Ca.7D.7D-1"},"attrs":{"name":"{{echo|a}}"}}'><a href="#cite_note-.7B.7Becho.7Ca.7D.7D-1"><span class="mw-reflink-text">[1]</span></a></span>
21823 </p>
21825 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'>
21826 <li about="#cite_note-.7B.7Becho.7Ca.7D.7D-1" id="cite_note-.7B.7Becho.7Ca.7D.7D-1"><a href="#cite_ref-.7B.7Becho.7Ca.7D.7D_1-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-.7B.7Becho.7Ca.7D.7D-1" class="mw-reference-text">foo</span></li>
21827 </ol>
21828 !!end
21830 !!test
21831 Ref: 19. ref-tags with identical name encodings should get identical indexes
21832 !! wikitext
21833 1 <ref name="a & b">foo</ref> 2 <ref name="a &amp; b" />
21835 <references />
21836 !! html/parsoid
21837 <p>1 <span about="#mwt3" class="mw-ref" id="cite_ref-a_.26_b_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-a_.26_b-1"},"attrs":{"name":"a &amp; b"}}'><a href="#cite_note-a_.26_b-1"><span class="mw-reflink-text">[1]</span></a></span> 2 <span about="#mwt4" class="mw-ref" id="cite_ref-a_.26_b_1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"a &amp;amp; b"}}'><a href="#cite_note-a_.26_b-1"><span class="mw-reflink-text">[1]</span></a></span>
21838 </p>
21839 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'>
21840 <li about="#cite_note-a_.26_b-1" id="cite_note-a_.26_b-1"><span rel="mw:referencedBy"><a href="#cite_ref-a_.26_b_1-0"><span class="mw-linkback-text">1 </span></a><a href="#cite_ref-a_.26_b_1-1"><span class="mw-linkback-text">2 </span></a></span> <span id="mw-reference-text-cite_note-a_.26_b-1" class="mw-reference-text">foo</span></li>
21841 </ol>
21842 !!end
21844 !!test
21845 Ref: 20. ref-tags with identical names but different content should keep it
21846 !! wikitext
21847 A <ref name="foo">Foo one</ref>
21848 B <ref name="foo">Foo two</ref>
21849 C <ref name="foo" />
21851 <references />
21852 !! html/parsoid
21853 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-foo_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-foo-1"},"attrs":{"name":"foo"}}'><a href="#cite_note-foo-1"><span class="mw-reflink-text">[1]</span></a></span>
21854 B <span about="#mwt4" class="mw-ref" id="cite_ref-foo_1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"Foo two"},"attrs":{"name":"foo"}}'><a href="#cite_note-foo-1"><span class="mw-reflink-text">[1]</span></a></span>
21855 C <span about="#mwt6" class="mw-ref" id="cite_ref-foo_1-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"foo"}}'><a href="#cite_note-foo-1"><span class="mw-reflink-text">[1]</span></a></span></p>
21857 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt8" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-foo-1" id="cite_note-foo-1"><span rel="mw:referencedBy"><a href="#cite_ref-foo_1-0"><span class="mw-linkback-text">1 </span></a><a href="#cite_ref-foo_1-1"><span class="mw-linkback-text">2 </span></a><a href="#cite_ref-foo_1-2"><span class="mw-linkback-text">3 </span></a></span> <span id="mw-reference-text-cite_note-foo-1" class="mw-reference-text">Foo one</span></li>
21858 </ol>
21859 !!end
21861 !!test
21862 References: 1. references tag without any refs should be handled properly
21863 !! wikitext
21864 <references />
21865 !! html/parsoid
21866 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt2" data-mw='{"name":"references","attrs":{}}'></ol>
21867 !!end
21869 !!test
21870 References: 2. references tag with group only outputs references from that group
21871 !! wikitext
21872 A <ref group="a">foo</ref>
21873 B <ref group="b">bar</ref>
21874 C <ref>baz</ref>
21876 <references group="a" />
21877 <references />
21878 <references group="b" />
21879 !! html/parsoid
21880 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{"group":"a"}}'><a href="#cite_note-1" data-mw-group="a"><span class="mw-reflink-text">[a 1]</span></a></span>
21881 B <span about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{"group":"b"}}'><a href="#cite_note-2" data-mw-group="b"><span class="mw-reflink-text">[b 1]</span></a></span>
21882 C <span class="mw-ref" id="cite_ref-3" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-3"},"attrs":{}}'><a href="#cite_note-3"><span class="mw-reflink-text">[1]</span></a></span></p>
21884 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt8" data-mw-group="a" data-mw='{"name":"references","attrs":{"group":"a"}}'>
21885 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" data-mw-group="a" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li>
21886 </ol>
21887 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt10" data-mw='{"name":"references","attrs":{}}'>
21888 <li about="#cite_note-3" id="cite_note-3"><a href="#cite_ref-3" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-3" class="mw-reference-text">baz</span></li>
21889 </ol>
21890 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt12" data-mw-group="b" data-mw='{"name":"references","attrs":{"group":"b"}}'>
21891 <li about="#cite_note-2" id="cite_note-2"><a href="#cite_ref-2" data-mw-group="b" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">bar</span></li>
21892 </ol>
21893 !!end
21895 !!test
21896 References: 3. ref list should be cleared after processing references
21897 !! wikitext
21898 A <ref>foo</ref>
21900 <references />
21902 B <ref>bar</ref>
21904 <references />
21905 !! html/parsoid
21906 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span></p>
21908 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li>
21909 </ol>
21911 <p>B <span about="#mwt6" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="#cite_note-2"><span class="mw-reflink-text">[1]</span></a></span></p>
21913 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt8" data-mw='{"name":"references","attrs":{}}'>
21914 <li about="#cite_note-2" id="cite_note-2"><a href="#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">bar</span></li>
21915 </ol>
21916 !!end
21918 !!test
21919 References: 4. only referenced group should be cleared after processing references
21920 !! wikitext
21921 A <ref group="a">afoo</ref>
21922 B <ref>bfoo</ref>
21924 <references group="a" />
21926 C <ref>cfoo</ref>
21928 <references />
21929 !! html/parsoid
21930 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{"group":"a"}}'><a href="#cite_note-1" data-mw-group="a"><span class="mw-reflink-text">[a 1]</span></a></span>
21931 B <span about="#mwt4" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{}}'><a href="#cite_note-2"><span class="mw-reflink-text">[1]</span></a></span></p>
21933 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt6" data-mw-group="a" data-mw='{"name":"references","attrs":{"group":"a"}}'><li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" data-mw-group="a" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">afoo</span></li>
21934 </ol>
21936 <p>C <span about="#mwt8" class="mw-ref" id="cite_ref-3" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-3"},"attrs":{}}'><a href="#cite_note-3"><span class="mw-reflink-text">[2]</span></a></span></p>
21938 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt10" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-2" id="cite_note-2"><a href="#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">bfoo</span></li><li about="#cite_note-3" id="cite_note-3"><a href="#cite_ref-3" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-3" class="mw-reference-text">cfoo</span></li>
21939 </ol>
21940 !!end
21942 !!test
21943 References: 5. ref tags in references should be processed while ignoring all other content
21944 !! wikitext
21945 A <ref name="a" />
21946 B <ref name="b">bar</ref>
21948 <references>
21949 <ref name="a">foo</ref>
21950 This should just get lost.
21951 </references>
21952 !! html/parsoid
21953 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-a_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"a"}}'><a href="#cite_note-a-1"><span class="mw-reflink-text">[1]</span></a></span>
21954 B <span about="#mwt4" class="mw-ref" id="cite_ref-b_2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-b-2"},"attrs":{"name":"b"}}'><a href="#cite_note-b-2"><span class="mw-reflink-text">[2]</span></a></span></p>
21957 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","body":{"extsrc":"&lt;ref name=\"a\">foo&lt;/ref>\nThis should just get lost.","html":"\n&lt;span about=\"#mwt8\" class=\"mw-ref\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid=&#39;{\"dsr\":[59,82,14,6]}&#39; data-mw=&#39;{\"name\":\"ref\",\"body\":{\"id\":\"mw-reference-text-cite_note-a-1\"},\"attrs\":{\"name\":\"a\"}}&#39;>&lt;a href=\"#cite_note-a-1\" style=\"counter-reset: mw-Ref 1;\">&lt;span class=\"mw-reflink-text\">[1]&lt;/span>&lt;/a>&lt;/span>\n"},"attrs":{}}'><li about="#cite_note-a-1" id="cite_note-a-1"><a href="#cite_ref-a_1-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-a-1" class="mw-reference-text">foo</span></li><li about="#cite_note-b-2" id="cite_note-b-2"><a href="#cite_ref-b_2-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-b-2" class="mw-reference-text">bar</span></li>
21958 </ol>
21959 !!end
21961 !!test
21962 References: 6. <references /> from a transclusion
21963 !! wikitext
21964 <ref>Foo</ref> {{echo|<references />}}
21965 !! html/parsoid
21966 <p><span about="#mwt3" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span></p> <ol class="mw-references" typeof="mw:Extension/references mw:Transclusion" about="#mwt4" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;references />"}},"i":0}}]}'><li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">Foo</span></li>
21967 </ol>
21968 !!end
21970 !! test
21971 References: 7. Multiple references tags (one without and one with nested refs) should be correctly handled
21972 !! wikitext
21973 A <ref>foo bar for a</ref>
21974 B <ref group="X" name="b" />
21976 <references />
21978 <references group="X">
21979 <ref name="b">foo</ref>
21980 </references>
21981 !! html/parsoid
21982 <p>A <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span>
21983 B <span about="#mwt4" class="mw-ref" id="cite_ref-b_2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"group":"X","name":"b"}}'><a href="#cite_note-b-2" data-mw-group="X"><span class="mw-reflink-text">[X 1]</span></a></span>
21984 </p>
21986 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'>
21987 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo bar for a</span></li>
21988 </ol>
21990 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt8" data-mw-group="X" data-mw='{"name":"references","body":{"extsrc":"&lt;ref name=\"b\">foo&lt;/ref>","html":"\n&lt;span about=\"#mwt10\" class=\"mw-ref\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid=&#39;{\"dsr\":[96,119,14,6]}&#39; data-mw=&#39;{\"name\":\"ref\",\"body\":{\"id\":\"mw-reference-text-cite_note-b-2\"},\"attrs\":{\"name\":\"b\"}}&#39;>&lt;a href=\"#cite_note-b-2\" style=\"counter-reset: mw-Ref 1;\" data-mw-group=\"X\">&lt;span class=\"mw-reflink-text\">[X 1]&lt;/span>&lt;/a>&lt;/span>\n"},"attrs":{"group":"X"}}'>
21991 <li about="#cite_note-b-2" id="cite_note-b-2"><a href="#cite_ref-b_2-0" data-mw-group="X" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-b-2" class="mw-reference-text">foo</span></li>
21992 </ol>
21993 !! end
21995 !! test
21996 References: 8. T88019: Remove <meta>s from templates inside <ref> that's itself inside a template
21997 !! wikitext
21998 X{{echo|<ref>foo {{echo|<b>bar</b>}} and {{echo|baz}} boo</ref>}}
21999 <references />
22000 !! html/parsoid
22001 <p>X<span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Transclusion  mw:Extension/ref" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;ref>foo {{echo|&lt;b>bar&lt;/b>}} and {{echo|baz}} boo&lt;/ref>"}},"i":0}}]}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span></p>
22002 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt7" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo <b data-parsoid='{"stx":"html"}'>bar</b> and baz boo</span></li>
22003 </ol>
22004 !!end
22006 # This test only works in wt2html now as the <references /> are always generated
22007 # unless selser is active. Once T72722 is fixed, we should add a changes test
22008 # here to ensure that unrelated changes don't add the new <references /> in
22009 # wt2wt.
22010 !! test
22011 References: 9. Generate missing references list at the end
22012 !! wikitext
22013 A <ref>foo</ref>
22014 B <ref group="inexistent">bar</ref>
22015 !! html/parsoid
22016 <p>A <span class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span> B <span class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-2"},"attrs":{"group":"inexistent"}}'><a href="#cite_note-2" data-mw-group="inexistent"><span class="mw-reflink-text">[inexistent 1]</span></a></span></p>
22017 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{}}'>
22018 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li>
22019 </ol>
22020 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt6" data-mw-group="inexistent" data-mw='{"name":"references","attrs":{"group":"inexistent"}}'>
22021 <li about="#cite_note-2" id="cite_note-2"><a href="#cite_ref-2" data-mw-group="inexistent" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text">bar</span></li>
22022 </ol>
22023 !! end
22025 !! test
22026 References: 10. New <references/> shouldn't be added for unrelated edits.
22027 !! options
22028 parsoid={
22029   "modes": ["selser"],
22030   "changes": [["#x", "remove"]],
22031   "selser": "noauto"
22033 !! wikitext
22034 Unrelated text<span id="x"> that's going to disappear</span>.
22035 A <ref>foo</ref>
22036 !! wikitext/edited
22037 Unrelated text.
22038 A <ref>foo</ref>
22039 !!end
22041 !! test
22042 Entities in ref name
22043 !! wikitext
22044 <ref name="test &amp; me">hi</ref>
22045 <references />
22046 !! html/parsoid
22047 <p><span about="#mwt2" class="mw-ref" id="cite_ref-test_.26_me_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-test_.26_me-1"},"attrs":{"name":"test &amp;amp; me"}}'><a href="#cite_note-test_.26_me-1"><span class="mw-reflink-text">[1]</span></a></span></p>
22048 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'>
22049 <li about="#cite_note-test_.26_me-1" id="cite_note-test_.26_me-1"><a href="#cite_ref-test_.26_me_1-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-test_.26_me-1" class="mw-reference-text">hi</span></li>
22050 </ol>
22051 !! end
22053 # This test is wt2html only because we're permitting the serializer to produce
22054 # dirty diffs, normalizing the unclosed references to the self-closed version.
22055 !! test
22056 Generate references for unclosed references tag
22057 !! options
22058 parsoid=wt2html
22059 !! wikitext
22060 a<ref>foo</ref>
22062 <references>
22063 !! html/parsoid
22064 <p>a<span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span></p>
22065 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'>
22066 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li></ol>
22067 !! end
22069 !! test
22070 New reference serializes on its own line
22071 !! options
22072 parsoid=wt2wt,html2wt
22073 !! wikitext
22075 <references />
22076 !! html/parsoid
22077 foo<ol class="mw-references" typeof="mw:Extension/references" about="#mwt2" data-mw='{"name":"references","attrs":{}}'></ol>
22078 !! end
22080 #### ----------------------------------------------------------------
22081 #### Parsoid-only testing of Parsoid's impl of LST
22082 #### Not implemented yet, see
22083 #### https://www.mediawiki.org/wiki/Parsoid/HTML_based_LST
22084 #### ----------------------------------------------------------------
22086 !! test
22087 LST Sections: 1. Simple section start and end
22088 !! options
22089 parsoid={ "suppressErrors": true }
22090 !! wikitext
22091 <section begin="2011-05-16" />
22092 <section end="2014-04-10 (MW 1.23wmf22)" />
22093 !! html/parsoid
22094 <p><meta typeof="mw:Extension/LabeledSectionTransclusion/begin" content="2011-05-16"/>
22095 <meta typeof="mw:Extension/LabeledSectionTransclusion/end" content="2014-04-10 (MW 1.23wmf22)"/></p>
22096 !! end
22098 #--------- Test stripping of empty nodes in template content ----------
22099 !!test
22100 Empty LI and TR nodes should be stripped from template content
22101 !!wikitext
22102 {{EmptyLITest}}
22103 {{EmptyTRTest}}
22104 !!html/parsoid
22105 <ul about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"EmptyLITest","href":"./Template:EmptyLITest"},"params":{},"i":0}}]}'>
22106 <li>a</li>
22107 <li>b</li>
22108 </ul>
22109 <table about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"EmptyTRTest","href":"./Template:EmptyTRTest"},"params":{},"i":0}}]}'>
22110 <tbody>
22111 <tr>
22112 <td>foo</td>
22113 </tr>
22114 <tr>
22115 <td>bar</td>
22116 </tr>
22117 </tbody>
22118 </table>
22119 !!end
22121 !!test
22122 Empty LI and TR nodes should not be stripped from top-level content
22123 !!wikitext
22124 * a
22126 * b
22130 |foo
22132 !!html/parsoid
22133 <ul>
22134 <li> a</li>
22135 <li></li>
22136 <li> b</li>
22137 </ul>
22138 <table>
22139 <tbody>
22140 <tr></tr>
22141 <tr>
22142 <td>foo</td>
22143 </tr>
22144 </tbody>
22145 </table>
22146 !!end
22148 !!test
22149 Empty TR nodes should not be stripped if they have any attributes set
22150 !!wikitext
22151 {{EmptyTRWithHTMLAttrTest}}
22152 !!html/parsoid
22153 <table about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"EmptyTRWithHTMLAttrTest","href":"./Template:EmptyTRWithHTMLAttrTest"},"params":{},"i":0}}]}'>
22154 <tr align="center"></tr>
22155 <tr><td>foo</td></tr>
22156 <tr align="center"></tr>
22157 <tr><td>bar</td></tr>
22158 </table>
22159 !!end
22161 #### ----------------------------------------------------------------
22162 #### The following section of tests are primarily to test
22163 #### wikitext escaping capabilities of Parsoid.  Given that
22164 #### escaping can be done any number of ways, the wikitext (input)
22165 #### is always adjusted to reflect how Parsoid adds nowiki
22166 #### escape tags.
22167 ####
22168 #### We are marking several tests as parsoid-only since the
22169 #### HTML in the result section is different from what the
22170 #### PHP parser generates for it.
22171 #### ----------------------------------------------------------------
22174 #### --------------- Headings ---------------
22175 #### 0. Unnested
22176 #### 1. Nested inside html <h1>=foo=</h1>
22177 #### 2. Outside heading nest on a single line <h1>foo</h1>*bar
22178 #### 3. Nested inside html with wikitext split by html tags
22179 #### 4. No escape needed
22180 #### 5. Empty headings <h1></h1>
22181 #### 6. Heading chars in SOL context
22182 #### ----------------------------------------
22183 !! test
22184 Headings: 0. Unnested
22185 !! options
22186 parsoid=html2wt
22187 !! html/parsoid
22188 <p>=foo=</p>
22190 <p> =foo=
22191 <!--cmt-->
22192 =foo=</p>
22194 <p>=foo<i>a</i>=</p>
22195 !! wikitext
22196 <nowiki>=foo=</nowiki>
22198 <nowiki> </nowiki>=foo=
22199 <!--cmt-->
22200 <nowiki>=foo=</nowiki>
22202 =foo''a''<nowiki>=</nowiki>
22203 !!end
22205 # New headings and existing headings are handled differently
22206 !! test
22207 Headings: 1. Nested inside html
22208 !! options
22209 parsoid=html2wt
22210 !! html/parsoid
22211 <h1>=foo=</h1>
22212 <h2>=foo=</h2>
22213 <h3>=foo=</h3>
22215 <h1 data-parsoid=''>=foo=</h1>
22216 <h2 data-parsoid=''>=foo=</h2>
22217 <h3 data-parsoid=''>=foo=</h3>
22218 <h4 data-parsoid=''>=foo=</h4>
22219 <h5 data-parsoid=''>=foo=</h5>
22220 <h6 data-parsoid=''>=foo=</h6>
22221 !! wikitext
22222 = =foo= =
22224 == =foo= ==
22226 === =foo= ===
22228 =<nowiki>=foo=</nowiki>=
22229 ==<nowiki>=foo=</nowiki>==
22230 ===<nowiki>=foo=</nowiki>===
22231 ====<nowiki>=foo=</nowiki>====
22232 =====<nowiki>=foo=</nowiki>=====
22233 ======<nowiki>=foo=</nowiki>======
22235 !!end
22237 !! test
22238 Headings: 2. Outside heading nest on a single line <h1>foo</h1>*bar
22239 !! options
22240 parsoid=html2wt
22241 !! html/parsoid
22242 <h1>foo</h1>*bar
22243 <h1>foo</h1>=bar
22244 <h1>foo</h1>=bar=
22245 !! wikitext
22246 = foo =
22247 <nowiki>*</nowiki>bar
22249 = foo =
22250 =bar
22252 = foo =
22253 <nowiki>=bar=</nowiki>
22254 !!end
22256 !! test
22257 Headings: 3. Nested inside html with wikitext split by html tags
22258 !! options
22259 parsoid=html2wt
22260 !! html/parsoid
22261 <h1>=<b>bold</b>foo=</h1>
22262 !! wikitext
22263 = ='''bold'''<nowiki>foo=</nowiki> =
22264 !!end
22266 !! test
22267 Headings: 4a. No escaping needed (testing just h1 and h2)
22268 !! options
22269 parsoid=html2wt
22270 !! html/parsoid
22271 <h1>=foo</h1>
22272 <h1>foo=</h1>
22273 <h1> =foo= </h1>
22274 <h1>=foo= bar</h1>
22275 <h2>=foo</h2>
22276 <h2>foo=</h2>
22277 <h1>=</h1>
22278 <h1><i>=</i>foo=</h1>
22279 !! wikitext
22280 = =foo =
22282 = foo= =
22284 = =foo= =
22286 = =foo= bar =
22288 == =foo ==
22290 == foo= ==
22292 = = =
22294 = ''=''foo= =
22295 !!end
22297 !! test
22298 Headings: 4b. No escaping needed (inside p-tags)
22299 !! options
22300 parsoid=html2wt
22301 !! html/parsoid
22302 <p>===
22303 =foo= x
22304 =foo= <s></s>
22305 </p>
22306 !! wikitext
22308 =foo= x
22309 =foo= <s></s>
22310 !!end
22312 !! test
22313 Headings: 5. Empty headings
22314 !! options
22315 parsoid=html2wt
22316 !! html/parsoid
22317 <h1 data-parsoid='{}'></h1>
22319 <h2 data-parsoid='{}'></h2>
22321 <h3 data-parsoid='{}'></h3>
22323 <h4 data-parsoid='{}'></h4>
22325 <h5 data-parsoid='{}'></h5>
22327 <h6 data-parsoid='{}'></h6>
22328 !! wikitext
22329 =<nowiki/>=
22331 ==<nowiki/>==
22333 ===<nowiki/>===
22335 ====<nowiki/>====
22337 =====<nowiki/>=====
22339 ======<nowiki/>======
22340 !!end
22342 !! test
22343 Headings: 6a. Heading chars in SOL context (with trailing spaces)
22344 !! options
22345 parsoid=html2wt
22346 !! html/parsoid
22347 <p>=a=</p>
22349 <p>=a=</p> 
22351 <p>=a=</p>      
22352 !! wikitext
22353 <nowiki>=a=</nowiki>
22355 <nowiki>=a=</nowiki> 
22357 <nowiki>=a=</nowiki>    
22358 !!end
22360 !! test
22361 Headings: 6b. Heading chars in SOL context (with trailing newlines)
22362 !! options
22363 parsoid=html2wt
22364 !! html/parsoid
22365 <p>=a=
22366 b</p>
22368 <p>=a= 
22369 b</p>
22371 <p>=a=  
22372 b</p>
22373 !! wikitext
22374 <nowiki>=a=</nowiki>
22377 <nowiki>=a=</nowiki> 
22380 <nowiki>=a=</nowiki>    
22382 !!end
22384 !! test
22385 Headings: 6c. Heading chars in SOL context (leading newline break)
22386 !! options
22387 parsoid=html2wt
22388 !! html/parsoid
22389 <p>a
22390 =b=</p>
22391 !! wikitext
22393 <nowiki>=b=</nowiki>
22394 !!end
22396 !! test
22397 Headings: 6d. Heading chars in SOL context (with interspersed comments)
22398 !! options
22399 parsoid=html2wt
22400 !! html/parsoid
22401 <!--c0--><p>=a=</p>
22403 <!--c1--><p>=a=</p> <!--c2-->    <!--c3-->
22404 !! wikitext
22405 <!--c0--><nowiki>=a=</nowiki>
22407 <!--c1--><nowiki>=a=</nowiki> <!--c2-->  <!--c3-->
22408 !!end
22410 !! test
22411 Headings: 6d. Heading chars in SOL context (No escaping needed)
22412 !! options
22413 parsoid=html2wt
22414 !! html/parsoid
22415 =a=<div>b</div>
22416 !! wikitext
22417 =a=<div>b</div>
22418 !!end
22420 !! test
22421 Headings: 7. Insert a newline between new content and headings
22422 !! options
22423 parsoid=html2wt
22424 !! html/parsoid
22425 <h2>NEW</h2>
22426 <p>new</p>
22427 <h2 data-parsoid='{}'>A</h2>
22428 <p data-parsoid='{}'>a</p>
22429 !! wikitext
22430 == NEW ==
22433 ==A==
22436 !! end
22438 #### --------------- Lists ---------------
22439 #### 0. Outside nests (*foo, etc.)
22440 #### 1. Nested inside html <ul><li>*foo</li></ul>
22441 #### 2. Inside definition lists
22442 #### 3. Only bullets at start should be escaped
22443 #### 4. No escapes needed
22444 #### 5. No unnecessary escapes
22445 #### 6. Escape bullets in SOL position
22446 #### 7. Escape bullets in a multi-line context
22447 #### ----------------------------------------
22449 !! test
22450 Lists: 0. Outside nests
22451 !! options
22452 parsoid=html2wt
22453 !! html/parsoid
22454 <p>*foo</p>
22456 <p>#foo</p>
22458 <p>;Foo:bar</p>
22459 !! wikitext
22460 <nowiki>*</nowiki>foo
22462 <nowiki>#</nowiki>foo
22464 <nowiki>;</nowiki>Foo<nowiki>:</nowiki>bar
22465 !!end
22467 !! test
22468 Lists: 1. Nested inside html
22469 !! options
22470 parsoid=html2wt
22471 !! html/parsoid
22472 <ul><li>*foo</li></ul>
22473 <ul><li>#foo</li></ul>
22474 <ul><li>:foo</li></ul>
22475 <ul><li>;foo</li></ul>
22476 <ol><li>*foo</li></ol>
22477 <ol><li>#foo</li></ol>
22478 <ol><li>:foo</li></ol>
22479 <ol><li>;foo</li></ol>
22481 !! wikitext
22482 *<nowiki>*foo</nowiki>
22484 *<nowiki>#foo</nowiki>
22486 *<nowiki>:foo</nowiki>
22488 *<nowiki>;foo</nowiki>
22490 #<nowiki>*foo</nowiki>
22492 #<nowiki>#foo</nowiki>
22494 #<nowiki>:foo</nowiki>
22496 #<nowiki>;foo</nowiki>
22497 !!end
22499 !! test
22500 Lists: 2. Inside definition lists
22501 !! options
22502 parsoid=html2wt
22503 !! html/parsoid
22504 <dl><dt>;foo</dt></dl>
22505 <dl><dt>:foo</dt></dl>
22506 <dl><dt>:foo</dt>
22507 <dd>bar</dd></dl>
22508 <dl><dd>:foo</dd></dl>
22510 !! wikitext
22511 ;<nowiki>;foo</nowiki>
22513 ;<nowiki>:foo</nowiki>
22515 ;<nowiki>:foo</nowiki>
22516 :bar
22518 :<nowiki>:foo</nowiki>
22519 !!end
22521 !! test
22522 Lists: 3. Only bullets at start of text should be escaped
22523 !! options
22524 parsoid=html2wt
22525 !! html/parsoid
22526 <ul><li>*foo*bar</li></ul>
22527 <ul><li>*foo<i>it</i>*bar</li></ul>
22529 !! wikitext
22530 *<nowiki>*foo*bar</nowiki>
22532 *<nowiki>*foo</nowiki>''it''*bar
22533 !!end
22535 !! test
22536 Lists: 4. No escapes needed
22537 !! options
22538 parsoid=html2wt
22539 !! html/parsoid
22540 <ul>
22541 <li>foo*bar
22542 </li>
22543 </ul>
22544 <ul>
22545 <li><i>foo</i>*bar
22546 </li>
22547 </ul>
22548 <ul>
22549 <li><a rel="mw:WikiLink" href="Foo" title="Foo">Foo</a>: bar
22550 </li>
22551 </ul>
22552 <ul>
22553 <li><a rel="mw:WikiLink" href="Foo" title="Foo">Foo</a>*bar
22554 </li>
22555 </ul>
22556 !! wikitext
22557 *foo*bar
22559 *''foo''*bar
22561 *[[Foo]]: bar
22563 *[[Foo]]*bar
22564 !!end
22566 !! test
22567 Lists: 5. No unnecessary escapes
22568 !! options
22569 parsoid=html2wt
22570 !! html/parsoid
22571 <ul><li> bar <span>[[foo]]</span></li></ul>
22572 <ul><li> =bar <span>[[foo]]</span></li></ul>
22573 <ul><li> [[bar <span>[[foo]]</span></li></ul>
22574 <ul><li> ]]bar <span>[[foo]]</span></li></ul>
22575 <ul><li> =bar <span>foo]]</span>=</li></ul>
22576 <ul><li> <s></s>: a</li></ul>
22577 <ul><li> <i>* foo</i></li></ul>
22579 !! wikitext
22580 * bar <span><nowiki>[[foo]]</nowiki></span>
22582 * =bar <span><nowiki>[[foo]]</nowiki></span>
22584 * [[bar <span><nowiki>[[foo]]</nowiki></span>
22586 * ]]bar <span><nowiki>[[foo]]</nowiki></span>
22588 * =bar <span>foo]]</span>=
22590 * <s></s>: a
22592 * ''* foo''
22593 !!end
22595 !! test
22596 Lists: 6. Escape bullets in SOL position
22597 !! options
22598 parsoid=html2wt
22599 !! html/parsoid
22600 <p><!--cmt-->*foo</p>
22601 !! wikitext
22602 <!--cmt--><nowiki>*</nowiki>foo
22603 !!end
22605 !! test
22606 Lists: 7. Escape bullets in a multi-line context
22607 !! options
22608 parsoid=html2wt
22609 !! html/parsoid
22610 <p>a
22612 </p>
22613 !! wikitext
22615 <nowiki>*</nowiki>b
22616 !!end
22618 !! test
22619 Lists: 8. Escape colons only if not present in tags
22620 !! options
22621 parsoid=html2wt
22622 !! html/parsoid
22623 <dl><dt>a:b<i>c:d</i></dt></dl>
22624 !! wikitext
22625 ; <nowiki>a:b</nowiki>''c:d''
22626 !! end
22628 #### --------------- HRs ---------------
22629 #### 1. Single line
22630 #### -----------------------------------
22632 !! test
22633 HRs: 1. Single line
22634 !! options
22635 parsoid=html2wt
22636 !! html/parsoid
22637 <hr />----
22638 <hr />=foo=
22639 <hr />*foo
22640 !! wikitext
22641 ----<nowiki>----</nowiki>
22642 ----=foo=
22643 ----*foo
22644 !! end
22646 #### --------------- Tables ---------------
22647 #### 1a. Simple example
22648 #### 1b. No escaping needed (!foo)
22649 #### 1c. No escaping needed (|foo)
22650 #### 1d. No escaping needed (|}foo)
22651 ####
22652 #### 2a. Nested in td (<td>foo|bar</td>)
22653 #### 2b. Nested in td (<td>foo||bar</td>)
22654 #### 2c. Nested in td -- no escaping needed(<td>foo!!bar</td>)
22655 ####
22656 #### 3a. Nested in th (<th>foo!bar</th>)
22657 #### 3b. Nested in th (<th>foo!!bar</th>)
22658 #### 3c. Nested in th -- no escaping needed(<th>foo||bar</th>)
22659 ####
22660 #### 4a. Escape -
22661 #### 4b. Escape +
22662 #### 4c. No escaping needed
22663 #### --------------------------------------
22665 !! test
22666 Tables: 1a. Simple example
22667 !! options
22668 parsoid=html2wt
22669 !! html/parsoid
22670 <p>{|
22672 </p>
22673 !! wikitext
22674 <nowiki>{|</nowiki>
22676 !! end
22678 !! test
22679 Tables: 1b. No escaping needed
22680 !! options
22681 parsoid=html2wt
22682 !! html/parsoid
22683 <p>!foo
22684 </p>
22685 !! wikitext
22686 !foo
22687 !! end
22689 !! test
22690 Tables: 1c. No escaping needed
22691 !! options
22692 parsoid=html2wt
22693 !! html/parsoid
22694 <p>|foo
22695 </p>
22696 !! wikitext
22697 |foo
22698 !! end
22700 !! test
22701 Tables: 1d. No escaping needed
22702 !! options
22703 parsoid=html2wt
22704 !! html/parsoid
22705 <p>|}foo
22706 </p>
22707 !! wikitext
22708 |}foo
22709 !! end
22711 !! test
22712 Tables: 2a. Nested in td
22713 !! options
22714 parsoid=html2wt
22715 !! html/parsoid
22716 <table><tbody><tr>
22717 <td>foo|bar</td></tr>
22718 <tr><td>x<div>a|b</div></td>
22719 </tbody></table>
22720 !! wikitext
22722 |<nowiki>foo|bar</nowiki>
22724 |x<div><nowiki>a|b</nowiki></div>
22726 !! html/php+tidy
22727 <table>
22728 <tr>
22729 <td>foo|bar</td>
22730 </tr>
22731 <tr>
22732 <td>x
22733 <div>a|b</div>
22734 </td>
22735 </tr>
22736 </table>
22737 !! end
22739 !! test
22740 Tables: 2b. Nested in td
22741 !! options
22742 parsoid=html2wt
22743 !! html/parsoid
22744 <table><tbody><tr>
22745 <td>foo||bar</td>
22746 <td>a<i>b||c</i></td>
22747 <td>a<i><div>b||c</div></i></td>
22748 </tr></tbody></table>
22749 !! wikitext
22751 |<nowiki>foo||bar</nowiki>
22752 |a''<nowiki>b||c</nowiki>''
22753 |a''<div><nowiki>b||c</nowiki></div>''
22755 !! html/php
22756 <table>
22757 <tr>
22758 <td>foo||bar
22759 </td>
22760 <td>a<i>b||c</i>
22761 </td>
22762 <td>a<i><div>b||c</div></i>
22763 </td></tr></table>
22765 !! end
22767 !! test
22768 Tables: 2c. Nested in td -- no escaping needed
22769 !! options
22770 parsoid=html2wt
22771 !! html/*
22772 <table>
22774 <tr>
22775 <td>foo!!bar
22776 </td></tr></table>
22778 !! wikitext
22781 |foo!!bar
22783 !! end
22785 !! test
22786 Tables: 3a. Nested in th
22787 !! options
22788 parsoid=html2wt
22789 !! html/*
22790 <table>
22792 <tr>
22793 <th>foo!bar
22794 </th></tr></table>
22796 !! wikitext
22799 !foo!bar
22801 !! end
22803 !! test
22804 Tables: 3b. Nested in th
22805 !! options
22806 parsoid=html2wt
22807 !! html/parsoid
22808 <table><tbody>
22809 <tr><th>foo!!bar</th>
22810 <th><i>foo|bar</i></th>
22811 <th><i>foo!!bar</i></th>
22812 <th><i><span>foo!!bar</span></i></th>
22813 </tr></tbody></table>
22814 !! wikitext
22816 !<nowiki>foo!!bar</nowiki>
22817 !''<nowiki>foo|bar</nowiki>''
22818 !''<nowiki>foo!!bar</nowiki>''
22819 !''<span><nowiki>foo!!bar</nowiki></span>''
22821 !! html/php
22822 <table>
22823 <tr>
22824 <th>foo!!bar
22825 </th>
22826 <th><i>foo|bar</i>
22827 </th>
22828 <th><i>foo!!bar</i>
22829 </th>
22830 <th><i><span>foo!!bar</span></i>
22831 </th></tr></table>
22833 !! end
22835 !! test
22836 Tables: 3c. Nested in th
22837 !! options
22838 parsoid=html2wt
22839 !! html/parsoid
22840 <table><tbody>
22841 <tr><th>foo||bar</th>
22842 <th><span typeof="mw:Nowiki">foo||bar</span></th>
22843 </tr></tbody></table>
22844 !! wikitext
22846 !<nowiki>foo||bar</nowiki>
22847 !<nowiki>foo||bar</nowiki>
22849 !! html/php
22850 <table>
22851 <tr>
22852 <th>foo||bar
22853 </th>
22854 <th>foo||bar
22855 </th></tr></table>
22857 !! end
22859 !! test
22860 Tables: 4a. Escape -
22861 !! options
22862 parsoid=html2wt
22863 !! html/*
22864 <table>
22866 <tr>
22867 <th>-bar
22868 </th></tr>
22869 <tr>
22870 <td>-bar
22871 </td></tr></table>
22873 !! wikitext
22876 !-bar
22879 |<nowiki>-bar</nowiki>
22881 !! end
22883 !! test
22884 Tables: 4b. Escape +
22885 !! options
22886 parsoid=html2wt
22887 !! html/*
22888 <table>
22890 <tr>
22891 <th>+bar
22892 </th></tr>
22893 <tr>
22894 <td>+bar
22895 </td></tr></table>
22897 !! wikitext
22900 !+bar
22903 |<nowiki>+bar</nowiki>
22905 !! end
22907 !! test
22908 Tables: 4c. No escaping needed
22909 !! options
22910 parsoid=html2wt
22911 !! html/parsoid
22912 <table><tbody>
22913 <tr><td>foo-bar</td><td>foo+bar</td></tr>
22914 <tr><td><i>foo</i>-bar</td><td><i>foo</i>+bar</td></tr>
22915 <tr><td>foo
22916 <p>bar|baz
22917 +bar
22918 -bar</p></td></tr>
22919 <tr><td>x
22920 <div>a|b</div></td>
22921 </tbody></table>
22922 !! wikitext
22924 |foo-bar
22925 |foo+bar
22927 |''foo''-bar
22928 |''foo''+bar
22930 |foo
22931 bar|baz
22932 +bar
22933 -bar
22936 <div>a|b</div>
22938 !! html/php
22939 <table>
22940 <tr>
22941 <td>foo-bar
22942 </td>
22943 <td>foo+bar
22944 </td></tr>
22945 <tr>
22946 <td><i>foo</i>-bar
22947 </td>
22948 <td><i>foo</i>+bar
22949 </td></tr>
22950 <tr>
22951 <td>foo
22952 <p>bar|baz
22953 +bar
22954 -bar
22955 </p>
22956 </td></tr>
22957 <tr>
22958 <td>x
22959 <div>a|b</div>
22960 </td></tr></table>
22962 !! end
22964 !! test
22965 Tables: 4d. No escaping needed
22966 !! options
22967 parsoid=html2wt
22968 !! html/parsoid
22969 <table>
22970 <tbody><tr><td><a rel="mw:WikiLink" href="./Foo" title="Foo">Foo</a>-bar</td>
22971 <td data-parsoid='{"startTagSrc":"|","attrSepSrc":"|"}'>+1</td>
22972 <td data-parsoid='{"startTagSrc":"|","attrSepSrc":"|"}'>-2</td></tr>
22973 </tbody></table>
22974 !! wikitext
22976 |[[Foo]]-bar
22977 ||+1
22978 ||-2
22980 !! html/php
22981 <table>
22982 <tr>
22983 <td><a href="/wiki/Foo" title="Foo">Foo</a>-bar
22984 </td>
22985 <td>+1
22986 </td>
22987 <td>-2
22988 </td></tr></table>
22990 !! end
22992 !! test
22993 T97430: Don't emit empty nowiki pairs around marker meta tags
22994 !! options
22995 parsoid=html2wt
22996 !! html/parsoid
22997 <p>*This is a long sentence here that will make the nowiki algo split up the nowikis into multiple pairs
22998 |** Make this another long long long sentence forcing the nowiki algo to split up the nowikis.</p>
22999 !! wikitext
23000 <nowiki>*</nowiki>This is a long sentence here that will make the nowiki algo split up the nowikis into multiple pairs
23001 |** Make this another long long long sentence forcing the nowiki algo to split up the nowikis.
23002 !! end
23004 !! test
23005 Unclosed xmlish element in table line shouldn't eat end delimiters
23006 !! options
23007 parsoid=html2wt
23008 !! html/parsoid
23009 <table>
23010 <tbody><tr><td> &lt;foo</td>
23011 <td> bar></td></tr>
23012 </tbody></table>
23013 !! wikitext
23015 | <foo
23016 | bar>
23018 !! html/php
23019 <table>
23020 <tr>
23021 <td> &lt;foo
23022 </td>
23023 <td> bar&gt;
23024 </td></tr></table>
23026 !! end
23028 #### --------------- Links ----------------
23029 #### 1. Quote marks in link text
23030 #### 2. Wikilinks: Escapes needed
23031 #### 3. Wikilinks: No escapes needed
23032 #### 4. Extlinks: Escapes needed
23033 #### 5. Extlinks: No escapes needed
23034 #### --------------------------------------
23035 !! test
23036 Links 1. WikiLinks: No escapes needed
23037 !! options
23038 parsoid=html2wt
23039 !! html/parsoid
23040 <p><a rel="mw:WikiLink" href="Foo" title="Foo">Foo<i>boo</i></a>
23041 <a rel="mw:WikiLink" href="Foo" title="Foo">[Foobar]</a>
23042 <a rel="mw:WikiLink" href="Foo" title="Foo">x [Foobar] x</a></p>
23043 !! wikitext
23044 [[Foo|Foo''boo'']]
23045 [[Foo|[Foobar]]]
23046 [[Foo|x [Foobar] x]]
23047 !! html/php
23048 <p><a href="/wiki/Foo" title="Foo">Foo<i>boo</i></a>
23049 <a href="/wiki/Foo" title="Foo">[Foobar]</a>
23050 <a href="/wiki/Foo" title="Foo">x [Foobar] x</a>
23051 </p>
23052 !! end
23054 !! test
23055 Links 2. WikiLinks: Escapes needed
23056 !! options
23057 parsoid=html2wt
23058 !! html/parsoid
23059 <a href="Foo" rel="mw:WikiLink">Foobar]</a>
23060 <a href="Foo" rel="mw:WikiLink">x [http://google.com g] x</a>
23061 <a href="Foo" rel="mw:WikiLink">[[Bar]]</a>
23062 <a href="Foo" rel="mw:WikiLink">x [[Bar]] x</a>
23063 <a href="Foo" rel="mw:WikiLink">|Bar</a>
23064 <a href="Foo" rel="mw:WikiLink">]]bar</a>
23065 <a href="Foo" rel="mw:WikiLink">[[bar</a>
23066 <a href="Foo" rel="mw:WikiLink">x [[ y</a>
23067 <a href="Foo" rel="mw:WikiLink">x ]] y</a>
23068 <a href="Foo" rel="mw:WikiLink">x ]] y [[ z</a>
23069 !! wikitext
23070 [[Foo|<nowiki>Foobar]</nowiki>]]
23071 [[Foo|x <nowiki>[http://google.com g]</nowiki> x]]
23072 [[Foo|<nowiki>[[Bar]]</nowiki>]]
23073 [[Foo|<nowiki>x [[Bar]] x</nowiki>]]
23074 [[Foo|<nowiki>|Bar</nowiki>]]
23075 [[Foo|<nowiki>]]bar</nowiki>]]
23076 [[Foo|<nowiki>[[bar</nowiki>]]
23077 [[Foo|<nowiki>x [[ y</nowiki>]]
23078 [[Foo|<nowiki>x ]] y</nowiki>]]
23079 [[Foo|<nowiki>x ]] y [[ z</nowiki>]]
23080 !! html/php
23081 <p><a href="/wiki/Foo" title="Foo">Foobar]</a>
23082 <a href="/wiki/Foo" title="Foo">x [http://google.com g] x</a>
23083 <a href="/wiki/Foo" title="Foo">[[Bar]]</a>
23084 <a href="/wiki/Foo" title="Foo">x [[Bar]] x</a>
23085 <a href="/wiki/Foo" title="Foo">|Bar</a>
23086 <a href="/wiki/Foo" title="Foo">]]bar</a>
23087 <a href="/wiki/Foo" title="Foo">[[bar</a>
23088 <a href="/wiki/Foo" title="Foo">x [[ y</a>
23089 <a href="/wiki/Foo" title="Foo">x ]] y</a>
23090 <a href="/wiki/Foo" title="Foo">x ]] y [[ z</a>
23091 </p>
23092 !! end
23094 !! test
23095 Links 3. WikiLinks: No escapes needed
23096 !! options
23097 parsoid=html2wt
23098 !! html/parsoid
23099 <p><a rel="mw:WikiLink" href="Foo">[Foobar</a>
23100 <a rel="mw:WikiLink" href="Foo" title="Foo">foo|bar</a></p>
23101 !! wikitext
23102 [[Foo|[Foobar]]
23103 [[Foo|foo|bar]]
23104 !! html/php
23105 <p><a href="/wiki/Foo" title="Foo">[Foobar</a>
23106 <a href="/wiki/Foo" title="Foo">foo|bar</a>
23107 </p>
23108 !! end
23110 !! test
23111 Links 4. ExtLinks: Escapes needed
23112 !! options
23113 parsoid=html2wt
23114 !! html/parsoid
23115 <p><a rel="mw:ExtLink" href="http://google.com">[google]</a>
23116 <a rel="mw:ExtLink" href="http://google.com">google]</a></p>
23117 <p>[http://google.com]</p>
23118 <p>[http://google.com google]</p>
23119 !! wikitext
23120 [http://google.com <nowiki>[google]</nowiki>]
23121 [http://google.com <nowiki>google]</nowiki>]
23123 <nowiki>[http://google.com]</nowiki>
23125 <nowiki>[http://google.com google]</nowiki>
23127 !! html/php
23128 <p><a rel="nofollow" class="external text" href="http://google.com">[google]</a>
23129 <a rel="nofollow" class="external text" href="http://google.com">google]</a>
23130 </p><p>[http://google.com]
23131 </p><p>[http://google.com google]
23132 </p>
23133 !! end
23135 !! test
23136 Links 5. ExtLinks: No escapes needed
23137 !! options
23138 parsoid=html2wt
23139 !! html/parsoid
23140 <p><a rel="mw:ExtLink" href="http://google.com">[google</a></p>
23141 !! wikitext
23142 [http://google.com [google]
23143 !! html/php
23144 <p><a rel="nofollow" class="external text" href="http://google.com">[google</a>
23145 </p>
23146 !! end
23148 !! test
23149 Links 6. Add <nowiki/>s between text-nodes and url-links when required (bug 64300)
23150 !! options
23151 parsoid=html2wt
23152 !! html/parsoid
23153 <p>x<a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>y
23154 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>?x
23155 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>&amp;x
23156 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>'x
23157 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>,x
23158 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>.x
23159 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>;x
23160 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>:x
23161 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>;x
23162 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>!x
23163 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>=x
23164 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>(x)
23165 <a rel="mw:ExtLink" href="http://example.com(x" data-parsoid='{"stx":"url"}'>http://example.com(x</a>)
23166 </p>
23167 !! wikitext
23168 x<nowiki/>http://example.com<nowiki/>y
23169 http://example.com<nowiki/>?x
23170 http://example.com<nowiki/>&x
23171 http://example.com<nowiki/>'x
23172 http://example.com<nowiki/>,x
23173 http://example.com<nowiki/>.x
23174 http://example.com<nowiki/>;x
23175 http://example.com<nowiki/>:x
23176 http://example.com<nowiki/>;x
23177 http://example.com<nowiki/>!x
23178 http://example.com<nowiki/>=x
23179 http://example.com<nowiki/>(x)
23180 http://example.com(x<nowiki/>)
23181 !! end
23183 !! test
23184 Links 7a. Don't add spurious <nowiki/>s between text-nodes and url-links (bug 64300)
23185 !! options
23186 parsoid=html2wt
23187 !! html/parsoid
23188 <p>x
23189 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>
23191 "<a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>"
23192 (<a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>)
23193 (<a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>) foo
23194 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>,
23195 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>, foo
23196 </p>
23197 !! wikitext
23199 http://example.com
23201 "http://example.com"
23202 (http://example.com)
23203 (http://example.com) foo
23204 http://example.com,
23205 http://example.com, foo
23206 !! html/php
23207 <p>x
23208 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
23210 "<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>"
23211 (<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>)
23212 (<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>) foo
23213 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>,
23214 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>, foo
23215 </p>
23216 !! end
23218 !! test
23219 Links 7b. Don't add spurious <nowiki/>s between text-nodes and url-links (bug 64300)
23220 !! options
23221 parsoid=html2wt
23222 !! html/parsoid
23223 <p><a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>.,;:!?\
23224 -<a rel="mw:ExtLink" href="http://example.com">http://example.com</a>:</p>
23225 !! wikitext
23226 http://example.com.,;:!?\
23227 -http://example.com:
23228 !! html/php
23229 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>.,;:!?\
23230 -<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>:
23231 </p>
23232 !! end
23234 !! test
23235 Links 8. Add <nowiki/>s between text-nodes and RFC-links when required (bug 64300)
23236 !! options
23237 parsoid=html2wt
23238 !! html/parsoid
23239 <p><a href="//tools.ietf.org/html/rfc123" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>RFC 123</a>4
23240 <a href="//tools.ietf.org/html/rfc123" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>RFC 123</a>y
23241 X<a href="//tools.ietf.org/html/rfc123" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>RFC 123</a>y</p>
23242 !! wikitext
23243 RFC 123<nowiki/>4
23244 RFC 123<nowiki/>y
23245 X<nowiki/>RFC 123<nowiki/>y
23246 !! end
23248 !! test
23249 Links 9. Don't add spurious <nowiki/>s between text-nodes and RFC-links (bug 64300)
23250 !! options
23251 parsoid=html2wt
23252 !! html/parsoid
23253 <p><a href="//tools.ietf.org/html/rfc123" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>RFC 123</a>?foo
23254 <a href="//tools.ietf.org/html/rfc123" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>RFC 123</a>&amp;foo
23255 -<a href="//tools.ietf.org/html/rfc123" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>RFC 123</a>-
23256 </p>
23257 !! wikitext
23258 RFC 123?foo
23259 RFC 123&foo
23260 -RFC 123-
23261 !! html/php
23262 <p><a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc123">RFC 123</a>?foo
23263 <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc123">RFC 123</a>&amp;foo
23264 -<a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc123">RFC 123</a>-
23265 </p>
23266 !! end
23268 !! test
23269 Links 10. Add <nowiki/>s between text-nodes and PMID-links when required (bug 64300)
23270 !! options
23271 parsoid=html2wt
23272 !! html/parsoid
23273 <p><a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>PMID 123</a>4
23274 <a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>PMID 123</a>y
23275 X<a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>PMID 123</a>y
23276 !! wikitext
23277 PMID 123<nowiki/>4
23278 PMID 123<nowiki/>y
23279 X<nowiki/>PMID 123<nowiki/>y
23280 !! end
23282 !! test
23283 Links 11. Don't add spurious <nowiki/>s between text-nodes and PMID-links (bug 64300)
23284 !! options
23285 parsoid=html2wt
23286 !! html/parsoid
23287 <p><a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>PMID 123</a>?foo
23288 <a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>PMID 123</a>&foo
23289 -<a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>PMID 123</a>-
23290 </p>
23291 !! wikitext
23292 PMID 123?foo
23293 PMID 123&foo
23294 -PMID 123-
23295 !! html/php
23296 <p><a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract">PMID 123</a>?foo
23297 <a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract">PMID 123</a>&amp;foo
23298 -<a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract">PMID 123</a>-
23299 </p>
23300 !! end
23302 !! test
23303 Links 12. Add <nowiki/>s between text-nodes and ISBN-links when required (bug 64300)
23304 !! options
23305 parsoid=html2wt
23306 !! html/parsoid
23307 <p><a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a>1
23308 <a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a>x
23309 a<a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a>b
23310 </p>
23311 !! wikitext
23312 ISBN 1234567890<nowiki/>1
23313 ISBN 1234567890<nowiki/>x
23314 a<nowiki/>ISBN 1234567890<nowiki/>b
23315 !! end
23317 !! test
23318 Links 13. Don't add spurious <nowiki/>s between text-nodes and ISBN-links (bug 64300)
23319 !! options
23320 parsoid=html2wt
23321 !! html/parsoid
23322 <p>-<a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a>'s
23323 !! wikitext
23324 -ISBN 1234567890's
23325 !! html/php
23326 <p>-<a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1234567890</a>'s
23327 </p>
23328 !! end
23330 !! test
23331 Links 14. Protect link-like plain text. (Parsoid bug T78425)
23332 !! options
23333 parsoid=html2wt
23334 !! html/*
23335 <p>this is not a link: http://example.com
23336 </p>
23337 !! wikitext
23338 this is not a link: <nowiki>http://example.com</nowiki>
23339 !! end
23341 !! test
23342 Links 15. Link trails can't become link prefixes.
23343 !! options
23344 language=is
23345 parsoid=html2wt
23346 !! html/parsoid
23347 <p><a rel="mw:WikiLink" href="Söfnuður" title="Söfnuður" data-parsoid='{"stx":"simple","tail":"-"}'>Söfnuður-</a><a rel="mw:WikiLink" href="00" title="00">00</a></p>
23348 !! wikitext
23349 [[Söfnuður]]-[[00]]
23350 !! html/php
23351 <p><a href="/wiki/S%C3%B6fnu%C3%B0ur" title="Söfnuður">Söfnuður-</a><a href="/wiki/00" title="00">00</a>
23352 </p>
23353 !! end
23355 #### --------------- Quotes ---------------
23356 #### 1. Quotes inside <b> and <i>
23357 #### 2. Link fragments separated by <i> and <b> tags
23358 #### 3. Link fragments inside <i> and <b>
23359 #### 4. No escaping needed
23360 #### --------------------------------------
23361 !! test
23362 1a. Quotes inside <b> and <i>
23363 !! options
23364 parsoid=html2wt
23365 !! html/*
23366 <p><i>'foo'</i>
23367 <i>''foo''</i>
23368 <i>'''foo'''</i>
23369 <i>foo</i>'s
23370 <b>'foo'</b>
23371 <b>''foo''</b>
23372 <b>'''foo'''</b>
23373 <b>foo'<i>bar'</i>baz</b>
23374 <b>foo</b>'s
23375 '<i>foo</i>
23376 <i>foo</i>'
23377 <i>foo'</i>'
23378 '<i>foo</i>'
23379 '<b>foo</b>
23380 <b>foo</b>'
23381 '<b>foo</b>'
23382 <i>fools'<span> errand</span></i>
23383 <i><span>fool</span>'s errand</i>
23384 '<i>foo</i> bar '<i>baz</i>
23385 a|!*#-:;+-~[]{}b'<i>x</i>
23386 </p>
23387 !! wikitext
23388 ''<nowiki/>'foo'''
23389 ''<nowiki>''foo''</nowiki>''
23390 ''<nowiki>'''foo'''</nowiki>''
23391 ''foo''<nowiki/>'s
23392 '''<nowiki/>'foo''''
23393 '''<nowiki>''foo''</nowiki>'''
23394 '''<nowiki>'''foo'''</nowiki>'''
23395 '''foo'<nowiki/>''bar'<nowiki/>''baz'''
23396 '''foo'''<nowiki/>'s
23397 '''foo''
23398 ''foo''<nowiki/>'
23399 ''foo'''<nowiki/>'
23400 '''foo''<nowiki/>'
23401 ''''foo'''
23402 '''foo'''<nowiki/>'
23403 ''''foo'''<nowiki/>'
23404 ''fools'<span> errand</span>''
23405 ''<span>fool</span>'s errand''
23406 '<nowiki/>''foo'' bar '''baz''
23407 a|!*#-:;+-~[]{}b'''x''
23408 !! end
23410 !! test
23411 1b. Quotes inside <b> and <i> with other tags on same line
23412 !! options
23413 parsoid=html2wt
23414 !! html/parsoid
23415 '<i>a</i> foo <i><a rel="mw:WikiLink" href="Bar" title="Bar">bar</a></i>
23416 <i>a'</i> foo <i><a rel="mw:WikiLink" href="Bar" title="Bar">bar</a></i>
23417 <i>a'</i> foo <b><a rel="mw:WikiLink" href="Bar" title="Bar" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[bar]]"}},"i":0}}]}'>bar</a></b>
23418 <a rel="mw:WikiLink" href="Foo" title="Foo">foo</a> x'<i><a href="Bar" rel="mw:WikiLink" title="Bar">bar</a></i>
23419 '<i>foo</i> <span class="mw-ref" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span>
23420 '<i>foo</i> <div title="name">test</div>
23421 '<i>foo</i> and <br data-parsoid='{"stx":"html","noClose":true}'/> bar
23422 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{}}'>
23423 <li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">test</span></li>
23424 </ol>
23425 !! wikitext
23426 '''a'' foo ''[[bar]]''
23427 ''a''' foo ''[[bar]]''
23428 ''a''' foo '''{{echo|[[bar]]}}'''
23429 [[foo]] x'''[[bar]]''
23430 '''foo'' <ref>test</ref>
23431 '''foo'' <div title="name">test</div>
23432 '''foo'' and <br> bar
23433 <references />
23434 !! end
23436 !! test
23437 2. Link fragments separated by <i> and <b> tags
23438 !! options
23439 parsoid=html2wt
23440 !! html/parsoid
23441 <p>[[<i>foo</i>hello]]</p>
23442 <p>[[<b>foo</b>hello]]</p>
23443 !! wikitext
23444 [[''foo''<nowiki>hello]]</nowiki>
23446 [['''foo'''<nowiki>hello]]</nowiki>
23447 !! end
23449 # FIXME: Escaping one or both of [[ and ]] is also acceptable --
23450 #        this is one of the shortcomings of this format
23451 !! test
23452 3. Link fragments inside <i> and <b>
23453 !! options
23454 parsoid=html2wt
23455 !! html/parsoid
23456 <p><i>[[foo</i>]]</p>
23457 <p><b>[[foo</b>]]</p>
23458 !! wikitext
23459 ''[[foo''<nowiki>]]</nowiki>
23461 '''[[foo'''<nowiki>]]</nowiki>
23462 !! end
23464 !! test
23465 4. No escaping needed
23466 !! options
23467 options=html2wt
23468 !! html/parsoid
23469 <p>'<span><i>bar</i></span>'
23470 '<span><b>bar</b></span>'
23471 'a:b'foo
23472 </p>
23473 !! wikitext
23474 '<span>''bar''</span>'
23475 '<span>'''bar'''</span>'
23476 'a:b'foo
23477 !! end
23479 #### ----------- Paragraphs ---------------
23480 #### 1. No unnecessary escapes
23481 #### --------------------------------------
23483 !! test
23484 1. No unnecessary escapes
23485 !! options
23486 parsoid=html2wt
23487 !! html/parsoid
23488 <p>bar <span>[[foo]]</span>
23489 </p><p>=bar <span>[[foo]]</span>
23490 </p><p>[[bar <span>[[foo]]</span>
23491 </p><p>]]bar <span>[[foo]]</span>
23492 </p><p>=bar <span>foo]]</span>=
23493 </p>
23494 !! wikitext
23495 bar <span><nowiki>[[foo]]</nowiki></span>
23497 =bar <span><nowiki>[[foo]]</nowiki></span>
23499 [[bar <span><nowiki>[[foo]]</nowiki></span>
23501 ]]bar <span><nowiki>[[foo]]</nowiki></span>
23503 =bar <span>foo]]</span><nowiki>=</nowiki>
23504 !!end
23506 #### ----------------------- PRE --------------------------
23507 #### 1. Leading whitespace in SOL context should be escaped
23508 #### ------------------------------------------------------
23509 !! test
23510 1. Leading whitespace in SOL context should be escaped
23511 !! options
23512 parsoid=html2wt
23513 !! html/parsoid
23514 <p> a</p>
23516 <p>  a</p>
23518 <p>     a(tab)</p>
23520 <p>     a
23521 <!--cmt-->
23522   a</p>
23524 <p>a
23525  b</p>
23527 <p>a
23528         b</p>
23530 <p>a
23531          b</p>
23532 !! wikitext
23533 <nowiki> </nowiki>a
23535 <nowiki> </nowiki> a
23537         a(tab)
23539 <nowiki> </nowiki>      a
23540 <!--cmt-->
23541 <nowiki>  </nowiki>a
23544 <nowiki> </nowiki>b
23547         b
23550          b
23551 !! html/php
23552 <p> a
23553 </p><p>  a
23554 </p><p> a(tab)
23555 </p><p>         a
23556   a
23557 </p><p>a
23559 </p><p>a
23560         b
23561 </p><p>a
23562          b
23563 </p>
23564 !! end
23566 !! test
23567 2. Leading whitespace in non-indent-pre contexts should not be escaped
23568 !! options
23569 parsoid=htm2wt
23570 !! html/parsoid
23571 <p>foo <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span></p>
23572 <ol class="mw-references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'>
23573 <li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text"><i data-parsoid='{"dsr":[9,14,2,2]}'>a</i>
23574  b</span></li>
23575 </ol>
23576 !! wikitext
23577 foo <ref>''a''
23578  b</ref>
23579 <references />
23580 !! end
23582 !! test
23583 3. Leading whitespace in indent-pre suppressing contexts should not be escaped
23584 !! options
23585 parsoid=html2wt
23586 !! html/parsoid
23587 <blockquote>
23590  <span>b</span>
23591  c</p>
23592 </blockquote>
23593 !! wikitext
23594 <blockquote>
23596  <span>b</span>
23598 </blockquote>
23599 !! end
23601 !! test
23602 4. Leading whitespace in indent-pre suppressing contexts should not be escaped
23603 !! options
23604 options=html2wt
23605 !! html/parsoid
23606  <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
23607 !! wikitext
23608  [[File:Foobar.jpg|thumb|caption]]
23609 !! end
23611 !! test
23612 5. Nowiki escaping should account for indent-pres
23613 !! options
23614 parsoid=html2wt
23615 !! html/parsoid
23616 <pre>==foo==</pre>
23617 !! wikitext
23618  ==foo==
23619 !! end
23621 !!test
23622 T95794: nowiki escaping should account for leading space at start-of-line in an indent-pre block
23623 !! options
23624 parsoid=html2wt
23625 !! html/parsoid
23626 <pre>
23627 * foo
23628 * bar
23629 </pre>
23630 !! wikitext
23631  * foo
23632  * bar
23633 !! end
23635 #### --------------- Behavior Switches --------------------
23637 !! test
23638 1. Valid behavior switches should be escaped
23639 !! options
23640 parsoid=html2wt
23641 !! html/parsoid
23642 __TOC__
23643 <i>__TOC__</i>
23644 !! wikitext
23645 <nowiki>__TOC__</nowiki>
23646 ''<nowiki>__TOC__</nowiki>''
23647 !! end
23649 !! test
23650 2. Invalid behavior switches should not be escaped
23651 !! options
23652 parsoid=html2wt
23653 !! html/parsoid
23654 __TOO__
23655 __|__
23656 !! wikitext
23657 __TOO__
23658 __|__
23659 !! end
23661 # We use indent-pre as an indirect way to test for sol-transparent behavior.
23662 !! test
23663 Behavior switches should be SOL-transparent
23664 !! options
23665 parsoid=html2wt
23666 !! html/parsoid
23667  <meta property="mw:PageProp/toc" />
23669  <!-- this one's bogus -->
23670 <pre>__TOO__</pre>
23672 <pre data-parsoid='{}'><meta property="mw:PageProp/toc" data-parsoid='{"src":"__TOC__","magicSrc":"__TOC__"}'/> foo</pre>
23674 <meta property="mw:PageProp/toc" data-parsoid='{"src":"__TOC__","magicSrc":"__TOC__"}'/><pre data-parsoid='{}'>bar</pre>
23675 !! wikitext
23676  __TOC__
23678  <!-- this one's bogus -->
23679  __TOO__
23681  __TOC__ foo
23683 __TOC__
23684  bar
23685 !! end
23687 #### --------------- HTML tags ---------------
23688 #### 1. a tags
23689 #### 2. other tags
23690 #### 3. multi-line html tag
23691 #### 4. extension tags
23692 #### -----------------------------------------
23693 !! test
23694 1. a tags
23695 !! options
23696 parsoid=html2wt
23697 !! html/parsoid
23698 &lt;a href=&quot;http://google.com&quot;&gt;google&lt;/a&gt;
23699 !! wikitext
23700 <a href="http://google.com">google</a>
23701 !! end
23703 !! test
23704 2. other tags
23705 !! options
23706 parsoid=html2wt
23707 !! html/parsoid
23708 <ul><li> &lt;div&gt;foo&lt;/div&gt;</li>
23709 <li> &lt;div style=&quot;color:red&quot;&gt;foo&lt;/div&gt;</li>
23710 <li> &lt;td&gt;</li></ul>
23712 !! wikitext
23713 * <nowiki><div>foo</div></nowiki>
23714 * <nowiki><div style="color:red">foo</div></nowiki>
23715 * <nowiki><td></nowiki>
23716 !! end
23718 !! test
23719 3. multi-line html tag
23720 !! options
23721 parsoid=html2wt
23722 !! html/parsoid
23723 <p>&lt;div
23724 &gt;foo&lt;/div
23725 &gt;
23726 </p>
23727 !! wikitext
23728 <nowiki><div
23729 >foo</div
23730 ></nowiki>
23731 !! end
23733 !! test
23734 4. extension tags
23735 !! options
23736 parsoid=html2wt
23737 !! html/parsoid
23738 <p>&lt;ref&gt;foo&lt;/ref&gt;
23739 </p><p>&lt;ref&gt;bar
23740 </p><p>baz&lt;/ref&gt;
23741 </p>
23742 !! wikitext
23743 <nowiki><ref>foo</ref></nowiki>
23745 <nowiki><ref>bar</nowiki>
23747 baz<nowiki></ref></nowiki>
23748 !! end
23750 #### --------------- Others ---------------
23751 !! test
23752 Escaping nowikis
23753 !! options
23754 parsoid=html2wt
23755 !! html/parsoid
23756 <p>&lt;nowiki&gt;foo&lt;/nowiki&gt;
23757 </p>
23758 !! wikitext
23759 &lt;nowiki&gt;foo&lt;/nowiki&gt;
23760 !! end
23762 ## The quote-char in the input is necessary for triggering the bug
23763 !! test
23764 (Bug 52035) Nowiki-escaping should not get tripped by " :" in text
23765 !! options
23766 parsoid=html2wt
23767 !! html/parsoid
23768 <p>foo's bar :</p>
23769 !! wikitext
23770 foo's bar :
23771 !! end
23773 #----------- End of wikitext escaping tests --------------
23775 !! test
23777 Tag-like HTML structures are passed through as text
23778 !! wikitext
23779 <x y>
23781 <x.y>
23783 <x-y>
23791 1<d e>f
23792 !! html
23793 <p>&lt;x y&gt;
23794 </p><p>&lt;x.y&gt;
23795 </p><p>&lt;x-y&gt;
23796 </p><p>1&gt;2
23797 </p><p>x&lt;y
23798 </p><p>a&gt;b
23799 </p><p>1&lt;d e&gt;f
23800 </p>
23801 !! end
23803 !! test
23804 HTML tag with necessary entities in attributes
23805 !! wikitext
23806 <span title="&amp;amp;">foo</span>
23807 !! html
23808 <p><span title="&amp;amp;">foo</span>
23809 </p>
23810 !! end
23812 !! test
23813 HTML tag with 'unnecessary' entity encoding in attributes
23814 !! wikitext
23815 <span title="&amp;">foo</span>
23816 !! html
23817 <p><span title="&amp;">foo</span>
23818 </p>
23819 !! end
23821 !! test
23822 HTML tag with broken attribute value quoting
23823 !! wikitext
23824 <span title="Hello world>Foo</span>
23825 !! html/php
23826 <p><span title="Hello world">Foo</span>
23827 </p>
23828 !! html/parsoid
23829 <p><span title="Hello world">Foo</span>
23830 </p>
23831 !! end
23833 !! test
23834 Self-closed tag with broken attribute value quoting
23835 !! options
23836 parsoid=wt2html,html2html
23837 !! wikitext
23838 <div title="Hello world />Foo
23839 !! html/php+tidy
23840 <div title="Hello world"></div>
23841 <p>Foo</p>
23842 !! html/parsoid
23843 <div title="Hello world " data-parsoid='{"stx":"html","selfClose":true}'></div><p>Foo</p>
23844 !! end
23846 !! test
23847 Table with broken attribute value quoting
23848 !! wikitext
23850 | title="Hello world|Foo
23852 !! html/php
23853 <table>
23854 <tr>
23855 <td title="Hello world">Foo
23856 </td></tr></table>
23858 !! html/parsoid
23859 <table>
23860 <tr>
23861 <td title="Hello world">Foo
23862 </td></tr></table>
23864 !! end
23866 !! test
23867 Table with broken attribute value quoting on consecutive lines
23868 !! wikitext
23870 | title="Hello world|Foo
23871 | style="color:red|Bar
23873 !! html/php
23874 <table>
23875 <tr>
23876 <td title="Hello world">Foo
23877 </td>
23878 <td style="color:red">Bar
23879 </td></tr></table>
23881 !! html/parsoid
23882 <table><tbody>
23883 <tr>
23884 <td title="Hello world">Foo
23885 </td><td style="color: red">Bar
23886 </td></tr></tbody></table>
23888 !! end
23890 !! test
23891 2. Parsoid-only: Don't wrap broken template tags in <nowiki> on wt2wt (Bug 42353)
23892 !! options
23893 parsoid
23894 !! wikitext
23895 {{}}
23896 !! html
23897 {{}}
23898 !! end
23900 !! test
23901 1. Parsoid-only: Don't wrap broken template tags in <nowiki> on wt2wt (Bug 42353)
23902 !! options
23903 parsoid
23904 !! wikitext
23905 }}{{
23906 !! html
23907 }}{{
23908 !! end
23910 !!test
23911 Accept empty td cell attribute
23912 !! wikitext
23914 | align="center" | foo ||  |
23916 !! html
23917 <table>
23918 <tr>
23919 <td align="center"> foo </td>
23920 <td>
23921 </td></tr></table>
23923 !!end
23925 !!test
23926 Non-empty attributes in th-cells
23927 !! wikitext
23929 ! Foo !! style="color: red" | Bar
23931 !! html
23932 <table>
23933 <tr>
23934 <th> Foo </th>
23935 <th style="color: red"> Bar
23936 </th></tr></table>
23938 !!end
23940 !!test
23941 Accept empty attributes in th-cells
23942 !! wikitext
23944 !| foo !!| bar
23946 !! html
23947 <table>
23948 <tr>
23949 <th> foo </th>
23950 <th> bar
23951 </th></tr></table>
23953 !!end
23955 !!test
23956 Empty table rows go away
23957 !! wikitext
23959 | Hello
23960 | there
23961 |- class="foo"
23964 !! html
23965 <table>
23966 <tr>
23967 <td> Hello
23968 </td>
23969 <td> there
23970 </td></tr>
23972 </table>
23974 !! end
23977 ### Parsoid-centric tests for testing RTing of inter-element separators
23978 ### Edge cases not tested by existing parser tests and specific to
23979 ### Parsoid-specific serialization strategies.
23982 !!test
23983 RT-ed inter-element separators should be valid separators
23984 !! wikitext
23986 |- [[foo]]
23988 !! html/php
23989 <table>
23991 </table>
23993 !! html/parsoid
23994 <table>
23995 <tbody><tr data-parsoid='{"startTagSrc":"|-","a":{"[[foo]]":null},"sa":{"[[foo]]":""},"autoInsertedEnd":true}'></tr>
23996 </tbody></table>
23997 !!end
23999 # Parsoid-only since PHP parser relies on Tidy for correct output
24000 !!test
24001 Trailing newlines in a deep dom-subtree that ends a wikitext line should be migrated out
24002 !!options
24003 parsoid
24004 !! wikitext
24006 |<small>foo
24011 |<small>foo<small>
24013 !! html
24014 <table>
24015 <tbody><tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td data-parsoid='{"autoInsertedEnd":true}'><small data-parsoid='{"stx":"html","autoInsertedEnd":true}'>foo
24016 <p>bar</p></small></td></tr>
24017 </tbody></table>
24019 <table>
24020 <tbody><tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td data-parsoid='{"autoInsertedEnd":true}'><small data-parsoid='{"stx":"html","autoInsertedEnd":true}'>foo<small data-parsoid='{"stx":"html","autoInsertedEnd":true}'></small></small></td></tr>
24021 </tbody></table>
24022 !!end
24024 # Note that the "style" attribute is really a template parameter here.
24025 # The = would have to be {{=}} if you wanted the literal.
24026 !!test
24027 Empty TD followed by TD with tpl-generated attribute
24028 !! wikitext
24032 |{{echo|style='color:red'}}|foo
24034 !! html
24035 <table>
24037 <tr>
24038 <td>
24039 </td>
24040 <td>foo
24041 </td></tr></table>
24043 !!end
24045 !!test
24046 Indented table with an empty td
24047 !! wikitext
24048  {|
24049  |-
24051  |foo
24052  |}
24053 !! html
24054 <table>
24056 <tr>
24057 <td>
24058 </td>
24059 <td>foo
24060 </td></tr></table>
24062 !!end
24064 ## We have some newline diffs RT-ing this edge case
24065 ## and it is not important enough -- we seem to be emitting
24066 ## at most 2 newlines after a </tr> and this is unrelated to
24067 ## the issue from T85627 that this is testing.
24068 !!test
24069 Indented table with blank lines in between (T85627)
24070 !! options
24071 parsoid=wt2html
24072 !! wikitext
24073  {|
24074  |foo
24077  |}
24078 !! html
24079 <table>
24081 <tr>
24082 <td>foo
24083 </td></tr></table>
24085 !!end
24087 !!test
24088 Indented block & table
24089 !! wikitext
24090  <div>foo</div>
24091  {|
24092  |foo
24093  |}
24094 !! html/php
24095  <div>foo</div>
24096 <table>
24097 <tr>
24098 <td>foo
24099 </td></tr></table>
24101 !! html/parsoid
24102  <div data-parsoid='{"stx":"html"}'>foo</div>
24103  <table><tbody>
24104  <tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td data-parsoid='{"autoInsertedEnd":true}'>foo</td></tr>
24105  </tbody></table>
24106 !!end
24108 !! test
24109 Indent and comment before table row
24110 !! wikitext
24112  <!--hi-->|-
24113  | there
24115 !! html/php
24116 <table>
24118 <tr>
24119 <td> there
24120 </td></tr></table>
24122 !! html/parsoid
24123 <table>
24124  <!--hi--><tbody><tr data-parsoid='{"startTagSrc":"|-","autoInsertedEnd":true}'>
24125  <td data-parsoid='{"autoInsertedEnd":true}'> there</td></tr>
24126 </tbody></table>
24127 !! end
24129 # Parsoid-specific since PHP parser doesn't handle this mixed tbl-wikitext
24130 !!test
24131 Empty TR followed by a template-generated TR
24132 !!options
24133 parsoid
24134 !! wikitext
24137 {{echo|<tr><td>foo</td></tr>}}
24139 !! html
24140 <table>
24141 <tbody>
24142 <tr></tr>
24143 <tr about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<tr><td>foo</td></tr>"}},"i":0}}]}'>
24144 <td>foo</td></tr>
24145 </tbody></table>
24146 !!end
24148 ## PHP and parsoid output differ for this, and since this is primarily
24149 ## for testing Parsoid's serializer, marking this Parsoid only
24150 !!test
24151 Empty TR followed by mixed-ws-comment line should RT correctly
24152 !!options
24153 parsoid
24154 !! wikitext
24157  <!--c-->
24159 <!--c--> <!--d-->
24161 !! html
24162 <table>
24163 <tbody>
24164 <tr></tr>
24165  <!--c-->
24166 <tr>
24167 <!--c--> </tr><!--d-->
24168 </tbody></table>
24170 !!end
24172 !!test
24173 Multi-line image caption generated by templates with/without trailing newlines
24174 !! wikitext
24175 [[File:Foobar.jpg|thumb|300x300px|foo\n{{echo|A}}\n{{echo|B}}\n{{echo|C}}]]
24176 [[File:Foobar.jpg|thumb|300x300px|foo\n{{echo|A}}\n{{echo|B}}\n{{echo|C}}\n\n]]
24177 !! html/parsoid
24178 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="34" width="300"/></a><figcaption>foo\n<span about="#mwt9" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"A"}},"i":0}}]}'>A</span>\n<span about="#mwt10" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"B"}},"i":0}}]}'>B</span>\n<span about="#mwt11" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"C"}},"i":0}}]}'>C</span></figcaption></figure>
24179 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="34" width="300"/></a><figcaption>foo\n<span about="#mwt12" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"A"}},"i":0}}]}'>A</span>\n<span about="#mwt13" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"B"}},"i":0}}]}'>B</span>\n<span about="#mwt14" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"C"}},"i":0}}]}'>C</span>\n\n</figcaption></figure>
24180 !!end
24182 !! test
24183 New element inserted (without intervening newlines) after an old sol-transparent node should serialize correctly
24184 !! options
24185 parsoid=html2wt
24186 !! html/parsoid
24187 <meta typeof="mw:Includes/IncludeOnly" data-parsoid='{"src":"&lt;includeonly>foo&lt;/includeonly>"}'/><meta typeof="mw:Includes/IncludeOnly/End" data-parsoid='{"src":""}'/><p>new para</p>
24189 <link rel="mw:PageProp/Category" href="./Category:Foo" data-parsoid='{}'/><h1>new heading</h1>
24190 !! wikitext
24191 <includeonly>foo</includeonly>
24192 new para
24194 [[Category:Foo]]
24196 = new heading =
24197 !! end
24199 ## PHP emits broken html for this, and since this is primarily
24200 ## a Parsoid serializer test, marking this Parsoid only
24201 !!test
24202 Improperly nested inline or quotes tags with whitespace in between
24203 !! wikitext
24204 <span> <s>x</span> </s>
24205 ''' ''x''' ''
24206 !! html/parsoid
24207 <p><span> <s>x</s></span><s> </s>
24208 <b> <i>x</i></b><i> </i>
24209 </p>
24210 !!end
24212 !!test
24213 Encapsulate protected attributes from wt
24214 !! wikitext
24215 <div typeof="mw:placeholder stuff" data-mw="whoo" data-parsoid="weird" data-parsoid-other="no" about="time" rel="mw:true">foo</div>
24216 !! html/parsoid
24217 <body><div data-x-typeof="mw:placeholder stuff" data-x-data-mw="whoo" data-x-data-parsoid="weird" data-x-data-parsoid-other="no" data-x-about="time" data-x-rel="mw:true">foo</div>
24218 </body>
24219 !!end
24221 ## Currently the p-wrapper is fragile in how it adds / removes transformations.
24222 ## Having nested or stray pre tags results in the attempt to add duplicates,
24223 ## causing an assertion fail. This test tries to prevent that situation.
24224 !!test
24225 Ensure ParagraphWrapper can deal with stray closing pre tags
24226 !!options
24227 parsoid=wt2html
24228 !! wikitext
24229 plain text</pre>
24230 !! html/parsoid
24231 plain text
24232 !!end
24234 !!test
24235 1. Ensure fostered text content is wrapped in element nodes
24236 !!options
24237 parsoid=wt2html
24238 !! wikitext
24239 <table>hi</table><table>ho</table>
24240 !! html/parsoid
24241 <p>hi</p>
24242 <table></table>
24243 <p>ho</p>
24244 <table></table>
24245 !!end
24247 !!test
24248 2. Ensure fostered text content is wrapped in element nodes (traps regressions around fostered marker on the element getting lost)
24249 !!options
24250 parsoid=wt2html,wt2wt
24251 !! wikitext
24252 <table>
24253 <tr> || ||
24254 <td> a
24255 </table>
24256 !! html/parsoid
24257 <p> || ||
24258 </p><table>
24259 <tbody><tr><td> a</td></tr>
24260 </tbody></table>
24261 !!end
24263 !!test
24264 Encapsulation properly handles null DSR information from foster box
24265 !!options
24266 parsoid=wt2html,wt2wt
24267 !! wikitext
24268 {{echo|<table>foo<tr><td>bar</td></tr></table>}}
24269 !! html/parsoid
24270 <span 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;<table>foo<tr><td>bar</td></tr></table>&quot;}},&quot;i&quot;:0}}]}">foo</span><table><tbody><tr><td>bar</td></tr></tbody></table>
24271 !!end
24273 !!test
24274 1. Encapsulate foster-parented transclusion content
24275 !!options
24276 parsoid=wt2wt,wt2html
24277 !! wikitext
24278 <table>{{echo|foo<tr><td>bar</td></tr>}}</table>
24279 !! html/parsoid
24280 <p typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[&quot;<table>&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;foo<tr><td>bar</td></tr>&quot;}},&quot;i&quot;:0}},&quot;</table>&quot;]}">foo</p><table>
24281 <tbody>
24282 <tr>
24283 <td>bar</td>
24284 </tr>
24285 </tbody>
24286 </table>
24287 !!end
24289 !!test
24290 2. Encapsulate foster-parented transclusion content
24291 !!options
24292 parsoid=wt2wt,wt2html
24293 !! wikitext
24294 <table><div>{{echo|foo}}</div><tr><td>bar</td></tr></table>
24295 !! html/parsoid
24296 <div typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[&quot;<table><div>&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;foo&quot;}},&quot;i&quot;:0}},&quot;</div><tr><td>bar</td></tr></table>&quot;]}">foo</div>
24297 <table>
24298 <tbody>
24299 <tr>
24300 <td>bar</td>
24301 </tr>
24302 </tbody>
24303 </table>
24304 !!end
24306 !!test
24307 3. Encapsulate foster-parented transclusion content
24308 !!options
24309 parsoid=wt2wt,wt2html
24310 !! wikitext
24311 <table><div><p>{{echo|foo</p></div><tr><td>}}bar</td></tr></table>
24312 !! html/parsoid
24313 <div typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[&quot;<table><div><p>&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;foo</p></div><tr><td>&quot;}},&quot;i&quot;:0}},&quot;bar</td></tr></table>&quot;]}">
24314 <p>foo</p>
24315 </div>
24316 <table>
24317 <tbody>
24318 <tr>
24319 <td>bar</td>
24320 </tr>
24321 </tbody>
24322 </table>
24323 !!end
24325 !!test
24326 4. Encapsulate foster-parented transclusion content
24327 !!options
24328 parsoid=wt2wt,wt2html
24329 !! wikitext
24330 <table><div><p>{{echo|foo</p></div><tr><td>}}bar</td></tr></table>
24331 !! html/parsoid
24332 <div typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[&quot;<table><div><p>&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;foo</p></div><tr><td>&quot;}},&quot;i&quot;:0}},&quot;bar</td></tr></table>&quot;]}">
24333 <p>foo</p>
24334 </div>
24335 <table>
24336 <tbody>
24337 <tr>
24338 <td>bar</td>
24339 </tr>
24340 </tbody>
24341 </table>
24342 !!end
24344 !!test
24345 5. Encapsulate foster-parented transclusion content
24346 !!options
24347 parsoid=wt2wt,wt2html
24348 !! wikitext
24349 <table><tr><td><div><p>{{echo|foo</p></div></td>foo}}</tr></table>
24350 !! html/parsoid
24351 <p typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[&quot;<table><tr><td><div><p>&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;foo</p></div></td>foo&quot;}},&quot;i&quot;:0}},&quot;</tr></table>&quot;]}">foo</p>
24352 <table>
24353 <tbody>
24354 <tr>
24355 <td>
24356 <div>
24357 <p>foo</p>
24358 </div>
24359 </td>
24360 </tr>
24361 </tbody>
24362 </table>
24363 !!end
24365 !!test
24366 6. Encapsulate foster-parented transclusion content
24367 !!options
24368 parsoid=wt2wt,wt2html
24369 !! wikitext
24370 <table><tr><td><div><p>{{echo|foo</p></div></td>foo</tr></table>}}<p>ok</p>
24371 !! html/parsoid
24372 <p typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[&quot;<table><tr><td><div><p>&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;foo</p></div></td>foo</tr></table>&quot;}},&quot;i&quot;:0}}]}">foo</p>
24373 <table>
24374 <tbody>
24375 <tr>
24376 <td>
24377 <div>
24378 <p>foo</p>
24379 </div>
24380 </td>
24381 </tr>
24382 </tbody>
24383 </table>
24384 <p>ok</p>
24385 !!end
24387 !!test
24388 7. Encapsulate foster-parented transclusion content
24389 !!options
24390 parsoid=wt2wt,wt2html
24391 !! wikitext
24392 <table>{{echo|<p>foo</p>}}<td>bar</td></table>
24393 !! html/parsoid
24394 <p typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[&quot;<table>&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;<p>foo</p>&quot;}},&quot;i&quot;:0}},&quot;<td>bar</td></table>&quot;]}">foo</p>
24395 <table>
24396 <tbody>
24397 <tr>
24398 <td>bar</td>
24399 </tr>
24400 </tbody>
24401 </table>
24402 !!end
24404 # Note that the wt is broken on purpose: the = should be {{=}} if you
24405 # don't want it to be a template parameter key.
24406 !!test
24407 8. Encapsulate foster-parented transclusion content
24408 !!options
24409 parsoid=wt2wt,wt2html
24410 !! wikitext
24411 {{echo|a
24412 }}{|{{echo|style='color:red'}}
24416 !! html/parsoid
24417 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a\n"}},"i":0}}]}'>a</p>
24418 <span> </span>
24419 <p typeof="mw:Transclusion" data-mw='{"parts":["{|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"style":{"wt":"&#39;color:red&#39;"}},"i":0}},"\n|-\n|b\n|}"]}'>{{{1}}}</p>
24420 <table>
24421 <tbody>
24422 <tr>
24423 <td>b</td>
24424 </tr>
24425 </tbody>
24426 </table>
24427 !!end
24429 !!test
24430 9. Encapsulate foster-parented transclusion content
24431 !!options
24432 parsoid=wt2wt,wt2html
24433 !! wikitext
24434 <table>{{echo|hi</table>hello}}
24435 !! html/parsoid
24436 <p about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":["&lt;table>",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"hi&lt;/table>hello"}},"i":0}}]}' data-parsoid='{"fostered":true,"autoInsertedEnd":true,"autoInsertedStart":true,"pi":[[{"k":"1","spc":["","","",""]}]]}'>hi</p><table about="#mwt2" data-parsoid='{"stx":"html"}'></table><p about="#mwt2">hello</p>
24437 !!end
24439 !!test
24440 Table in fosterable position
24441 !!options
24442 parsoid=wt2html,wt2wt
24443 !! wikitext
24444 {{OpenTable}}
24445 <div>
24448 </div>
24450 !! html/parsoid
24451 <div about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"OpenTable","href":"./Template:OpenTable"},"params":{},"i":0}},"\n&lt;div>"]}' data-parsoid='{"stx":"html","autoInsertedEnd":true,"pi":[[]]}'></div><span about="#mwt1">
24452 </span>
24453 <table about="#mwt1" data-parsoid='{"autoInsertedEnd":true}'></table>
24455 <table>
24456 </table>
24457 !!end
24459 # Parsoid only for bug 64747
24460 !! test
24461 Properly encapsulate empty-content transclusions in fosterable positions
24462 !! wikitext
24463 <table>
24464 {{#if:|
24465 <td>foo</td>
24467 </table>
24468 !! html/parsoid
24469 <table about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":["&lt;table>\n",{"template":{"target":{"wt":"#if:","function":"#if"},"params":{"1":{"wt":"\n&lt;td>foo&lt;/td>\n"}},"i":0}},"\n&lt;/table>"]}' data-parsoid='{"stx":"html","pi":[[{"k":"1","spc":["","","",""]}]]}'>
24471 </table>
24472 !! end
24474 !! test
24475 Always encapsulate foster box when template range is expanded to table
24476 !! options
24477 parsoid=wt2wt
24478 !! wikitext
24480 hello
24481 {{OpenTable}}
24483 !! html/parsoid
24485 !! end
24487 !!test
24488 Support <object> element with .data attribute
24489 !!options
24490 parsoid=html2wt
24491 !! html/parsoid
24492 <object data="test.swf"></object>
24493 !! wikitext
24494 <object data="test.swf"></object>
24495 !!end
24497 !! test
24498 Don't block XML namespace declaration
24499 !! wikitext
24500 <span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">MediaWiki</span>
24501 !! html/php
24502 <p><span>MediaWiki</span>
24503 </p>
24504 !! html/parsoid
24505 <p><span xmlns:dct="http://purl.org/dc/terms/" data-x-property="dct:title" data-parsoid='{"stx":"html"}'>MediaWiki</span></p>
24506 !! end
24508 # -----------------------------------------------------------------
24509 # The following section of tests are primarily to spec requirements
24510 # around serialization of new/edited content.
24512 # All these tests are marked Parsoid html2wt and html2html only
24513 # ----------------------------------------------------------------
24515 # 'mi' is a localinterwiki prefix as well as a language
24516 !! test
24517 Serialize interwiki links pointing to the current wiki as plain wiki links (bug 65869)
24518 !! options
24519 parsoid=html2wt
24520 !! html/parsoid
24521 <p><a rel="mw:ExtLink" href="http://mi.wikipedia.org/wiki/Foo">Foo</a></p>
24522 !! wikitext
24523 [[Foo]]
24524 !! end
24526 # See T93839
24527 !! test
24528 New wikilinks should be serialized properly
24529 !! options
24530 parsoid=html2wt
24531 !! html/parsoid
24532 <a rel="mw:WikiLink" href="./Foo" title="Foo" data-parsoid='{}'>Foo</a>
24533 <a rel="mw:WikiLink" href="./Foo" title="Foo">Foo</a>
24534 !! wikitext
24535 [[Foo]]
24536 [[Foo]]
24537 !! end
24539 !! test
24540 New wiki links (href variations)
24541 !! options
24542 parsoid=html2wt
24543 !! html/parsoid
24544 <a rel="mw:WikiLink" href="./Foo_bar">Foo_bar</a>
24545 <a rel="mw:WikiLink" href="Foo_bar">Foo_bar</a>
24546 <a rel="mw:WikiLink" href="Foo bar">Foo_bar</a>
24547 <a rel="mw:WikiLink" href="./Toxine_bact%C3%A9rienne">Toxine bactérienne</a>
24548 !! wikitext
24549 [[Foo_bar]]
24550 [[Foo_bar]]
24551 [[Foo_bar]]
24552 [[Toxine bactérienne]]
24553 !! end
24555 !! test
24556 New wiki links (content string variations)
24557 !! options
24558 parsoid=html2wt
24559 !! html/parsoid
24560 <a rel="mw:WikiLink" href="./Foo_bar">Foo_bar</a>
24561 <a rel="mw:WikiLink" href="./Foo_bar">Foo bar</a>
24562 <a rel="mw:WikiLink" href="./Foo_bar">./Foo_bar</a>
24563 !! wikitext
24564 [[Foo_bar]]
24565 [[Foo bar]]
24566 [[Foo_bar|./Foo_bar]]
24567 !! end
24569 !! test
24570 New category links (href variations)
24571 !! options
24572 parsoid=html2wt
24573 !! html/parsoid
24574 <link rel="mw:PageProp/Category" href="./Category:Toxine_bactérienne" />
24575 <link rel="mw:PageProp/Category" href="./Category:Toxine_bact%C3%A9rienne" />
24576 <link rel="mw:PageProp/Category" href="Category:Toxine_bact%C3%A9rienne" />
24577 !! wikitext
24578 [[Category:Toxine bactérienne]]
24579 [[Category:Toxine bactérienne]]
24580 [[Category:Toxine bactérienne]]
24581 !! end
24583 !! test
24584 New sol transparent links don't need indent-pre nowiki protection
24585 !! options
24586 parsoid=html2wt
24587 language=de
24588 !! html/parsoid
24589          <link rel="mw:PageProp/redirect" href="./Main_Page">
24590 <!-- this is good  -->    <link rel="mw:PageProp/Category" href="./Category:Good" />
24591 <!-- this is great -->    <link rel="mw:PageProp/Category" href="./Kategorie:Great" />
24592 !! wikitext
24593          #WEITERLEITUNG [[Main Page]]
24594 <!-- this is good  -->    [[Category:Good]]
24595 <!-- this is great -->    [[Kategorie:Great]]
24596 !! end
24598 !! test
24599 New interlanguage links (href variations)
24600 !! options
24601 parsoid=html2wt
24602 !! html/parsoid
24603 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Toxine bactérienne" />
24604 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Toxine_bactérienne" />
24605 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Toxine_bact%C3%A9rienne" />
24606 !! wikitext
24607 [[es:Toxine bactérienne]]
24608 [[es:Toxine_bactérienne]]
24609 [[es:Toxine_bactérienne]]
24610 !! end
24612 !! test
24613 Image: Modifying size of an image (1)
24614 !! options
24615 parsoid={
24616   "modes": ["wt2wt"],
24617   "changes": [
24618     ["img[height]", "attr", "height", "22"],
24619     ["img[width]", "attr", "width", "200"]
24620   ]
24622 !! wikitext
24623 [[Image:Foobar.jpg|230x230px]]
24624 !! wikitext/edited
24625 [[Image:Foobar.jpg|200x200px]]
24626 !!end
24628 !! test
24629 Image: Modifying size of an image (2)
24630 !! options
24631 parsoid={
24632   "modes": ["wt2wt"],
24633   "changes": [
24634     ["img[height]", "attr", "height", "100"],
24635     ["img[width]", "attr", "width", "500"]
24636   ]
24638 !! wikitext
24639 [[Image:Foobar.jpg|230x230px]]
24640 !! wikitext/edited
24641 [[Image:Foobar.jpg|500x500px]]
24642 !!end
24644 # Change in size is ignored so long as class='mw-default-size'
24645 !! test
24646 Image: Modifying size of an image (3)
24647 !! options
24648 parsoid={
24649   "modes": ["wt2wt"],
24650   "changes": [
24651     ["figure[class]", "removeClass", "mw-default-size"],
24652     ["figure img", "attr", "height", "19"],
24653     ["figure img", "attr", "width", "170"]
24654   ]
24656 !! wikitext
24657 [[Image:Foobar.jpg|thumb]]
24658 !! wikitext/edited
24659 [[Image:Foobar.jpg|thumb|170x170px]]
24660 !!end
24662 !! test
24663 Image: Modifying alignment of an image (bug 48665)
24664 !! options
24665 parsoid={
24666   "modes": ["wt2wt"],
24667   "changes": [
24668     ["figure[class]", "removeClass", "mw-halign-right"],
24669     ["figure[class]", "addClass", "mw-halign-left"]
24670   ]
24672 !! wikitext
24673 [[Image:Foobar.jpg|thumb|caption|right]]
24674 !! wikitext/edited
24675 [[Image:Foobar.jpg|thumb|caption|left]]
24676 !! end
24678 !! test
24679 Image: Modifying mw-default-size of an frameless image (bug 62805)
24680 !! options
24681 parsoid={
24682   "modes": ["wt2wt"],
24683   "changes": [
24684     ["figure.mw-default-size", "removeClass", "mw-default-size"]
24685   ]
24687 !! wikitext
24688 [[Image:Foobar.jpg|frameless|right]]
24689 !! wikitext/edited
24690 [[Image:Foobar.jpg|frameless|right|220x220px]]
24691 !! end
24693 !! test
24694 Image: Modifying valign of an image (bug 49221)
24695 !! options
24696 parsoid={
24697   "modes": ["wt2wt"],
24698   "changes": [
24699     ["*[typeof=\"mw:Image\"]", "removeClass", "mw-valign-middle"],
24700     ["*[typeof=\"mw:Image\"]", "addClass", "mw-valign-text-top"]
24701   ]
24703 !! wikitext
24704 [[File:Foobar.jpg|20px|middle]]
24705 !! wikitext/edited
24706 [[File:Foobar.jpg|20px|text-top]]
24707 !! end
24709 !! test
24710 Image: Modifying alt attribute of an image (bug 56400)
24711 !! options
24712 parsoid={
24713   "modes": ["wt2wt"],
24714   "changes": [
24715     ["img[alt]", "attr", "alt", "some alternate edited text"]
24716   ]
24718 !! wikitext
24719 [[File:Foobar.jpg|thumb|some caption|alt=some alternate text]]
24720 !! wikitext/edited
24721 [[File:Foobar.jpg|thumb|some caption|alt=some alternate edited text]]
24722 !!end
24724 !! test
24725 Image: Modifying caption of an image
24726 !! options
24727 parsoid={
24728   "modes": ["wt2wt"],
24729   "changes": [
24730     ["figcaption", "text", "new caption"]
24731   ]
24733 !! wikitext
24734 [[Image:Foobar.jpg|thumb|original caption]]
24735 !! wikitext/edited
24736 [[Image:Foobar.jpg|thumb|new caption]]
24737 !!end
24739 !! test
24740 Image: empty alt attribute (bug 48924)
24741 !! options
24742 parsoid
24743 !! wikitext
24744 [[File:Foobar.jpg|thumb|alt=|bar]]
24745 !! html
24746 <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" data-file-width="1941" data-file-height="220" data-file-type="bitmap" 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>
24747 !! end
24749 !! test
24750 Image: new attributes should be serialized in wiki's language for RTL languages (bug 51852)
24751 !! options
24752 parsoid=html2wt
24753 language=ar
24754 disabled
24755 !! html/parsoid
24756 <figure class="mw-default-size mw-halign-right" typeof="mw:Image/Thumb"><a href="./Imagen:Foobar.jpg"><img resource="./Imagen:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="20" width="180"/></a></figure>
24757 !! wikitext
24758 [[Imagen:Foobar.jpg|derecha|miniaturadeimagen]]
24759 !! end
24761 !! test
24762 Image: Block level image should have \n before and after
24763 !! wikitext
24765 [[File:Foobar.jpg|right|thumb|150x150px]]
24767 !! html/parsoid
24768 <p>123</p>
24769 <figure class="mw-halign-right" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/150px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="17" width="150"/></a></figure>
24770 <p>456</p>
24771 !!end
24773 !! test
24774 Image: New block level image should have \n before and after (existing content)
24775 !! wikitext
24777 [[File:Foobar.jpg|right|thumb|150x150px]]
24779 !! html/parsoid
24780 <p>123</p>
24781 <figure class="mw-halign-right" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"right","ak":"right"},{"ck":"thumbnail","ak":"thumb"},{"ck":"width","ak":"150x150px"}]}'><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/150px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="17" width="150" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"17","width":"150"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure>
24782 <p>456</p>
24783 !!end
24785 !! test
24786 Image: upright option (parsoid)
24787 !! wikitext
24788 [[File:Foobar.jpg|thumb|upright|caption]]
24789 [[File:Foobar.jpg|thumb|upright=0.5|caption]]
24790 [[File:Foobar.jpg|thumb|500x500px|upright=0.5|caption]]
24791 !! html/parsoid
24792 <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/170px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="19" width="170"/></a><figcaption>caption</figcaption></figure>
24793 <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/110px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="12" width="110"/></a><figcaption>caption</figcaption></figure>
24794 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/500px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="57" width="500"/></a><figcaption>caption</figcaption></figure>
24795 !!end
24797 !! test
24798 Image: upright option is ignored on inline and frame images (parsoid)
24799 !! wikitext
24800 [[File:Foobar.jpg|500x500px|upright=0.5|caption]]
24801 !! html/parsoid
24802 <p><span typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/500px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="57" width="500"/></a></span></p>
24803 !!end
24805 !! test
24806 Image: from basic HTML (1)
24807 !! options
24808 parsoid=html2wt
24809 !! html/parsoid
24810 <span typeof="mw:Image">
24811   <img src="./File:Foobar.jpg" width=100 height=100 alt="Alt">
24812 </span>
24813 !! wikitext
24814 [[File:Foobar.jpg|link=|alt=Alt|100x100px]]
24815 !! end
24817 !! test
24818 Image: from basic HTML (2)
24819 !! options
24820 parsoid=html2wt
24821 !! html/parsoid
24822 <img src="./File:Foobar.jpg" width=100 height=100 alt="Alt">
24823 !! wikitext
24824 [[File:Foobar.jpg|link=|alt=Alt|100x100px]]
24825 !! end
24827 !! test
24828 Image: from basic HTML (3)
24829 !! options
24830 parsoid=html2wt
24831 !! html/parsoid
24832 <a href="Main"><img src="./File:Foobar.jpg" width=100 height=100 alt="Alt"></a>
24833 !! wikitext
24834 [[File:Foobar.jpg|link=Main|alt=Alt|100x100px]]
24835 !! end
24837 !! test
24838 Image: from basic HTML (4)
24839 !! options
24840 parsoid=html2wt
24841 !! html/parsoid
24842 <img src="./File:Foobar.jpg">
24843 !! wikitext
24844 [[File:Foobar.jpg|link=]]
24845 !! end
24847 !! test
24848 Lists: Serialize correctly even when list content is wrapped in p-tags (like VE does)
24849 !! options
24850 parsoid=html2wt
24851 !! html/parsoid
24852 <ul>
24853 <li><p>foo</p></li>
24854 </ul>
24855 !! wikitext
24856 * foo
24857 !! end
24859 !! test
24860 Lists: Serialize correctly even when list tags has unneeded whitespace between tags
24861 !! options
24862 parsoid=html2wt
24863 !! html/parsoid
24864 <ul> <li>foo</li></ul>
24865 !! wikitext
24866 * foo
24867 !! end
24869 !! test
24870 Don't strip leading whitespace when handling indent-pre suppressing tags
24871 !! options
24872 parsoid=html2wt
24873 !! html/parsoid
24874 <table>
24875   <tr><td> indented row</td></tr>
24876 </table>
24877 <blockquote><p>
24878  <b>This is very bold of you!</b>
24879 </p>
24880 <table><tr><td>
24881  indented cell (no pre-wrapping!)
24882 </td></tr></table>
24883 </blockquote>
24884 <p>foo</p>
24885  <div>bar</div>
24886 !! wikitext
24888   | indented row
24890 <blockquote>
24891  '''This is very bold of you!'''
24895  indented cell (no pre-wrapping!)
24897 </blockquote>
24899  <div>bar</div>
24900 !! end
24902 !! test
24903 Nowiki-wrap leading whitespace when handling indent-pre inducing tags
24904 !! options
24905 parsoid=html2wt
24906 !! html/parsoid
24907 <p>foo</p>
24908  <span>bar</span>
24910 <span>foo2
24911  </span>bar2
24913 <div>foo</div>
24914  <span>bar</span>
24916 <div>
24917  <span>foo</span>
24918 </div>
24919 !! wikitext
24922 <span>bar</span>
24924 <span>foo2
24925 <nowiki> </nowiki></span>bar2
24927 <div>foo</div>
24928 <nowiki> </nowiki><span>bar</span>
24930 <div>
24931 <nowiki> </nowiki><span>foo</span>
24932 </div>
24933 !! end
24935 !! test
24936 Lists: Dont insert newlines in a serialized list item.
24937 !! options
24938 parsoid=html2wt
24939 !! html/parsoid
24940 <ul><li>a<br>b</li><li>c</li></ul>
24941 !! wikitext
24942 * a<br>b
24943 * c
24944 !! end
24946 !! test
24947 1. Headings: Force sol-transparent links and behavior switches to serialize before/after
24948 !! options
24949 parsoid={
24950   "modes": ["html2wt"],
24951   "scrubWikitext": false
24953 !! html/parsoid
24954 <h2>hello there<link href="./Category:A1" rel="mw:PageProp/Category" /></h2>
24955 <h2><link href="./Category:A2" rel="mw:PageProp/Category" />hi pal</h2>
24957 <h2><!--foo-->  <link href="./Category:A3" rel="mw:PageProp/Category" />   how goes it</h2>
24958 <h2>it goes well   <link href="./Category:A4" rel="mw:PageProp/Category" />  <!--bar--></h2>
24960 <h2 data-parsoid='{}'>howdy<link href="./Category:A5" rel="mw:PageProp/Category" /></h2>
24962 <h2><meta property="mw:PageProp/toc" /> ok</h2>
24963 !! wikitext
24964 == hello there [[Category:A1]] ==
24966 == [[Category:A2]] hi pal ==
24968 == <!--foo-->  [[Category:A3]]    how goes it ==
24970 == it goes well    [[Category:A4]]  <!--bar--> ==
24972 ==howdy [[Category:A5]]==
24974 ==  __TOC__  ok ==
24975 !! end
24977 !! test
24978 2. Headings: Force sol-transparent links and behavior switches to serialize before/after
24979 !! options
24980 parsoid={
24981   "modes": ["html2wt"],
24982   "scrubWikitext": true
24984 !! html/parsoid
24985 <h2>hello there<link href="./Category:A1" rel="mw:PageProp/Category" /></h2>
24986 <h2><link href="./Category:A2" rel="mw:PageProp/Category" />hi pal</h2>
24988 <h2><!--foo-->  <link href="./Category:A3" rel="mw:PageProp/Category" />   how goes it</h2>
24989 <h2>it goes well   <link href="./Category:A4" rel="mw:PageProp/Category" />  <!--bar--></h2>
24991 <h2><meta property="mw:PageProp/toc" /> ok</h2>
24992 !! wikitext
24993 == hello there ==
24994 [[Category:A1]]
24995 [[Category:A2]]
24997 == hi pal ==
24999 <!--foo-->  [[Category:A3]]
25001 == how goes it ==
25003 == it goes well ==
25004 [[Category:A4]]  <!--bar-->
25006 __TOC__
25008 == ok ==
25009 !! end
25011 !! test
25012 Headings: Don't hoist metas that come from templates
25013 !! options
25014 parsoid={
25015   "modes": ["html2wt"],
25016   "scrubWikitext": true
25018 !! html/parsoid
25019 <h2><span about="#mwt1" typeof="mw:Transclusion" data-parsoid="{}" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo [[Category:Foo]]"}},"i":0}}]}'>foo </span><link rel="mw:PageProp/Category" href="./Category:Foo" about="#mwt1" data-parsoid="{}" /></h2>
25020 !! wikitext
25021 == {{echo|foo [[Category:Foo]]}} ==
25022 !! end
25024 !! test
25025 Headings: Category in ref isn't hoisted
25026 !! options
25027 parsoid={
25028   "modes": ["html2wt"],
25029   "scrubWikitext": true
25031 !! html/parsoid
25032 <h2> foo <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span> </h2>
25034 <ol class="references" typeof="mw:Extension/references" about="#mwt3" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">bar <link rel="mw:PageProp/Category" href="./Category:Baz" /> </span></li></ol>
25035 !! wikitext
25036 == foo <ref>bar 
25037 [[Category:Baz]] </ref> ==
25039 <references />
25040 !! end
25042 !! test
25043 Parsoid: Serialize positional parameters with = in them as named parameter
25044 !! options
25045 parsoid=html2wt
25046 !! html/parsoid
25047 <p about="#mwt1" typeof="mw:Transclusion"
25048 data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"f=oo"}},"i":0}}]}'>foo</p>
25050 <p about="#mwt1" typeof="mw:Transclusion"
25051 data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"f=oo"}, "2":{"wt":"bar"}},"i":0}}]}'>foo</p>
25053 <!--Orig params with data-parsoid has heuristics for handling = chars-->
25054 <!--FIXME: But maybe the heuristic needs fixing to apply to new params as well-->
25055 <p data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]},{"k":"2","spc":["","","",""]}]]}' about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"f=oo"},"2":{"wt":"bar"}},"i":0}}]}'>foo</p>
25056 !! wikitext
25057 {{echo|1 = f=oo}}
25059 {{echo|1 = f=oo|2 = bar}}
25061 <!--Orig params with data-parsoid has heuristics for handling = chars-->
25062 <!--FIXME: But maybe the heuristic needs fixing to apply to new params as well-->
25063 {{echo|<nowiki>f=oo</nowiki>|bar}}
25064 !! end
25066 !! test
25067 Parsoid: Serialize positional parameters with = in extlink as named parameter
25068 !! options
25069 parsoid=html2wt
25070 !! html/parsoid
25071 <p><a rel="mw:ExtLink" href="http://stuff?is=ok" about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"http://stuff?is=ok"}},"i":0}}]}'>http://stuff?is=ok</a></p>
25072 !! wikitext
25073 {{echo|1 = http://stuff?is=ok}}
25074 !! end
25076 !! test
25077 Parsoid: Correctly serialize block-node children when they are a combination of text and p-nodes
25078 !! options
25079 parsoid=html2wt
25080 !! html/parsoid
25081 <div>a<p>b</p></div>
25082 <div>a
25083 <p>b</p></div>
25084 <div>
25086 <p>b</p></div>
25087 !! wikitext
25088 <div>a
25090 </div>
25091 <div>a
25093 </div>
25094 <div>
25098 </div>
25099 !! end
25101 !! test
25102 Substrings resembling wikitext in hrefs should not get nowiki escapes
25103 !! options
25104 parsoid=html2wt
25105 !! html/parsoid
25106 <a rel="mw:WikiLink" href="./Foo''bar''baz">Foo''bar''baz</a>
25107 !! wikitext
25108 [[Foo''bar''baz]]
25109 !! end
25111 !! test
25112 Enforce single-line context in the serializer
25113 !! options
25114 parsoid=html2wt
25115 !! html/parsoid
25116 <h2>testing
25117 123</h2>
25119 <h2> hi <span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"bogus","href":"./Template:Bogus"},"params":{"1":{"wt":"there\nyou"}},"i":0}}]}'>there</span><span about="#mwt1">
25120 </span><span about="#mwt1">you</span> </h2>
25122 <h2> foo <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span> </h2>
25124 <ol class="references" typeof="mw:Extension/references" about="#mwt3" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">hello
25125 there</span></li></ol>
25127 <ul><li>asd
25128 sdf</li></ul>
25130 <ul><li>foo
25132 baz</li>
25133 <li>foo <b>bar</b>
25134 baz</li></ul>
25136 <dl><dt>hi
25137 ho </dt><dd data-parsoid='{"stx":"row"}'> hi
25138 ho</dd></dl>
25140 <dl><dd> <table>
25141 <tbody><tr><td> ha
25143 ha</td></tr>
25144 </tbody></table></dd></dl>
25145 !! wikitext
25146 == testing 123 ==
25148 == hi {{bogus|there
25149 you}} ==
25151 == foo <ref>hello
25152 there</ref> ==
25154 <references />
25156 * asd sdf
25158 * foo bar baz
25159 * foo '''bar''' baz
25161 ; hi ho : hi ho
25163 : {|
25164 | ha
25168 !! end
25170 !! test
25171 Serialize new placeholder space without spans
25172 !! options
25173 parsoid=html2wt
25174 !! html/parsoid
25175 <p>foo<span typeof="mw:Placeholder"> </span>: bar</p>
25177 <p>foo<span typeof="mw:DisplaySpace mw:Placeholder" data-parsoid='{"src":" ","isDisplayHack":true}'> </span>: bar</p>
25179 <span typeof="mw:Extension/ref" data-mw="{&quot;name&quot;:&quot;ref&quot;,&quot;body&quot;:{&quot;html&quot;:&quot;foo<span typeof=\&quot;mw:Placeholder\&quot;>&amp;nbsp;</span>: bar&quot;}}"><sup>[1]</sup></span>ok</p>
25180 !! wikitext
25181 foo : bar
25183 foo : bar
25185 <ref>foo : bar</ref>ok
25186 !! end
25189 #-----------------------
25190 # Tag minimization tests
25191 #-----------------------
25193 !! test
25194 1. I/B quote minimization: wikitext-only tags should be combined
25195 !! options
25196 parsoid=html2wt
25197 !! html/parsoid
25198 <p><i>A</i><i>B</i></p>
25199 <p><b>A</b><b>B</b></p>
25200 <p><i>A</i><b><i>B</i></b></p>
25201 <p><b>A</b><i><b>B</b></i></p>
25202 <p><b>A</b><i><b>B</b><b>C</b></i><b>D</b></p>
25203 <p><i><b>A</b></i><i><b>B</b></i></p>
25204 <p><i><b>A</b></i><b><i>B</i></b></p>
25205 <p><b><i>A</i></b><i><b>B</b></i></p>
25206 !! wikitext
25207 ''AB''
25209 '''AB'''
25211 ''A'''B'''''
25213 '''A''B'''''
25215 '''A''BC''D'''
25217 '''''AB'''''
25219 '''''AB'''''
25221 '''''AB'''''
25222 !! end
25224 !! test
25225 2. I/B quote minimization: wikitext and html tags should not be combined
25226 !! options
25227 parsoid=html2wt
25228 !! html/parsoid
25229 <p><i>A</i><i data-parsoid='{"stx":"html"}'>B</i></p>
25230 <p><i>A</i><b><i data-parsoid='{"stx":"html"}'>B</i></b></p>
25231 !! wikitext
25232 ''A''<i>B</i>
25234 ''A''<nowiki/>'''<i>B</i>'''
25235 !! end
25237 !! test
25238 3. I/B quote minimization: templated content stops minimization
25239 !! options
25240 parsoid=html2wt
25241 !! html/parsoid
25242 <p><i>A</i><i about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&#39;&#39;B&#39;&#39;"}},"i":0}}]}'>B</i>
25243 <p><i>A</i><b about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&#39;&#39;&#39;&#39;&#39;B&#39;&#39;&#39;&#39;&#39;"}},"i":0}}]}'><i>B</i></b>
25244 !! wikitext
25245 ''A''{{echo|''B''}}
25247 ''A''{{echo|'''''B'''''}}
25248 !! end
25250 !! test
25251 4. I/B quote minimization: new content should be mimimized with adjacent old content
25252 !! options
25253 parsoid=html2wt
25254 !! html/parsoid
25255 <p><i>A</i><i>B</i></p>
25256 <p><b>A</b><b>B</b></p>
25257 <p><i>A</i><b><i>B</i></b></p>
25258 !! wikitext
25259 ''AB''
25261 '''AB'''
25263 ''A'''B'''''
25264 !! end
25266 !! test
25267 5a. Merge adjacent quote nodes if they've been edited
25268 !! options
25269 parsoid={
25270   "modes": ["wt2wt", "selser"],
25271   "changes": [
25272     ["p", "contents", "remove", ":contains('b')"]
25273   ]
25275 !! wikitext
25276 ''a''b''c''
25277 !! wikitext/edited
25278 ''ac''
25279 !! end
25281 !! test
25282 5b. Merge adjacent quote nodes if they've been edited
25283 !! options
25284 parsoid={
25285   "modes": ["wt2wt", "selser"],
25286   "changes": [
25287     ["#x", "remove"]
25288   ]
25290 !! wikitext
25291 ''a''<span id="x">b</span>''c''
25292 !! wikitext/edited
25293 ''ac''
25294 !! end
25296 !! test
25297 1. Merge adjacent link nodes as long as at least one element is new
25298 !! options
25299 parsoid={
25300   "modes": ["html2wt"],
25301   "scrubWikitext": true
25303 !! html/parsoid
25304 <a rel="mw:WikiLink" href="./Football">Foot</a><a rel="mw:WikiLink" href="./Football">ball</a>
25305 <a data-parsoid="{}" rel="mw:WikiLink" href="./Football">Foot</a><a rel="mw:WikiLink" href="./Football">ball</a>
25306 <a data-parsoid="{}" rel="mw:WikiLink" href="./Football">Foot</a><a data-parsoid="{}" rel="mw:WikiLink" href="./Football">ball</a>
25307 !! wikitext
25308 [[Football]]
25309 [[Football]]
25310 [[Football|Foot]][[Football|ball]]
25311 !! end
25313 !! test
25314 2. Merge adjacent link nodes and enable additional normalizations
25315 !! options
25316 parsoid={
25317   "modes": ["html2wt"],
25318   "scrubWikitext": true
25320 !! html/parsoid
25321 <a rel="mw:WikiLink" href="./Football"><i>Foot</i></a><a rel="mw:WikiLink" href="./Football"><i>ball</i></a>
25322 !! wikitext
25323 [[Football|''Football'']]
25324 !! end
25326 !! test
25327 3. Don't merge adjacent link nodes if scrubWikitext is false
25328 !! options
25329 parsoid={
25330   "modes": ["html2wt"],
25331   "scrubWikitext": false
25333 !! html/parsoid
25334 <a rel="mw:WikiLink" href="./Football">Foot</a><a rel="mw:WikiLink" href="./Football">ball</a>
25335 !! wikitext
25336 [[Football|Foot]][[Football|ball]]
25337 !! end
25339 #------------------------------
25340 # End of tag minimization tests
25341 #------------------------------
25343 !!test
25344 Bug 54262: New entities
25345 !! options
25346 parsoid=html2wt
25347 !! html/parsoid
25348 <span typeof="mw:Entity">&nbsp;</span>
25349 !! wikitext
25350 &nbsp;
25351 !! end
25353 ## Note that there is no wikitext output for 'unknownproperty' ##
25354 ## Unknown magic words are silently dropped ##
25356 !! test
25357 Magic words
25358 !! options
25359 parsoid=html2wt
25360 !! html/parsoid
25361 <meta property='mw:PageProp/toc' />
25362 <meta property='mw:PageProp/notoc' />
25363 <meta property='mw:PageProp/forcetoc' />
25364 <meta property='mw:PageProp/index' />
25365 <meta property='mw:PageProp/noindex' />
25366 <meta property='mw:PageProp/nogallery' />
25367 <meta property='mw:PageProp/noeditsection' />
25368 <meta property='mw:PageProp/notitleconvert' />
25369 <meta property='mw:PageProp/nocontentconvert' />
25370 <meta property='mw:PageProp/unknownproperty' />
25371 !! wikitext
25372 __TOC__
25373 __NOTOC__
25374 __FORCETOC__
25375 __INDEX__
25376 __NOINDEX__
25377 __NOGALLERY__
25378 __NOEDITSECTION__
25379 __NOTITLECONVERT__
25380 __NOCONTENTCONVERT__
25381 !! end
25383 !! test
25384 Consecutive <pre>s should not get merged
25385 !! options
25386 parsoid=html2wt,html2html
25387 !! html/parsoid
25388 <pre>a</pre><pre>b</pre>
25390 <pre>c
25391 </pre><pre>
25392 d</pre>
25394 <pre>e
25396 </pre><pre>
25398 f</pre>
25399 !! wikitext
25413 !! end
25415 !! test
25416 Edited ISBN links not serializable as ISBN links should serialize as wikilinks
25417 !! options
25418 parsoid=html2wt
25419 !! html/parsoid
25420 <a href="./Special:BookSources/1234567890" rel="mw:ExtLink">ISBN 1234567895</a>
25421 !! wikitext
25422 [[Special:BookSources/1234567890|ISBN 1234567895]]
25423 !! end
25425 !! test
25426 Edited RFC links not serializable as RFC links should serialize as extlinks
25427 !! options
25428 parsoid=html2wt
25429 !! html/parsoid
25430 <a href="//tools.ietf.org/html/rfc123" rel="mw:ExtLink">New RFC</a>
25431 !! wikitext
25432 [//tools.ietf.org/html/rfc123 New RFC]
25433 !! end
25435 !! test
25436 Edited PMID links not serializable as PMID links should serialize as extlinks
25437 !! options
25438 parsoid=html2wt
25439 !! html/parsoid
25440 <a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink">New PMID</a>
25441 !! wikitext
25442 [//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract New PMID]
25443 !! end
25445 !! test
25446 WTS of autolinks with trailing/surrounding context
25447 !! options
25448 parsoid=html2wt
25449 !! html/parsoid
25450 <p><a href="http://cscott.net">http://cscott.net</a><b>foo</b></p>
25451 <p><a href="http://cscott.net">http://cscott.net</a><b data-parsoid='{"stx":"html"}'>foo</b></p>
25452 <p><b><a href="http://cscott.net">http://cscott.net</a></b></p>
25453 <p><b><a href="http://cscott.net">http://cscott.net</a> </b></p>
25454 <p><b><a href="http://cscott.net">http://cscott.net</a>x</b></p>
25455 <p><a href="http://cscott.net">http://cscott.net</a>x</p>
25456 !! wikitext
25457 http://cscott.net'''foo'''
25459 http://cscott.net<b>foo</b>
25461 '''http://cscott.net'''
25463 '''http://cscott.net '''
25465 '''http://cscott.net<nowiki/>x'''
25467 http://cscott.net<nowiki/>x
25468 !! end
25470 !! test
25471 WTS of autolinks with nowikis (round-trip)
25472 !! wikitext
25473 x<nowiki/>http://cscott.net<nowiki/>x
25474 !! html/parsoid
25475 <p>x<a rel="mw:ExtLink" href="http://cscott.net">http://cscott.net</a>x</p>
25476 !! end
25478 # this is the "easy" test because it leaves in place all the
25479 # data-parsoid information indicating this is an autolink
25480 !! test
25481 WTS of autolinks with escapes (editing)
25482 !! options
25483 parsoid={
25484   "modes": ["wt2wt"],
25485   "changes": [
25486     [ "meta", "remove" ]
25487   ]
25489 !! wikitext
25490 x<nowiki/>http://cscott.net<nowiki/>x
25491 !! wikitext/edited
25492 x<nowiki/>http://cscott.net<nowiki/>x
25493 !! end
25495 !! test
25496 WTS of edited autolink-like text (T103364)
25497 !! options
25498 parsoid={
25499   "modes": ["wt2wt"],
25500   "changes": [
25501     [ "span[typeof]", "removeAttr", "typeof" ]
25502   ]
25504 !! wikitext
25505 Not a link: <nowiki>http://example.com</nowiki>.
25506 !! wikitext/edited
25507 Not a link: <span><nowiki>http://example.com</nowiki></span>.
25508 !! end
25510 !! test
25511 WTS of newly-authored autolink-like text (T103364)
25512 !! options
25513 parsoid=html2wt
25514 !! html/parsoid
25515 <p>http://example.com is not a link.</p>
25516 !! wikitext
25517 <nowiki>http://example.com</nowiki> is not a link.
25518 !! end
25520 !! test
25521 WTS of autolink-like text after an autolink (T108563)
25522 !! options
25523 parsoid=html2wt
25524 !! html/parsoid
25525 <p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a> http://example.com is not a link.</p>
25526 !! wikitext
25527 http://example.com <nowiki>http://example.com</nowiki> is not a link.
25528 !! end
25530 !! test
25531 Magic links inside links (not autolinked)
25532 !! wikitext
25533 [[Foo|http://example.com]]
25534 [[Foo|RFC 1234]]
25535 [[Foo|PMID 1234]]
25536 [[Foo|ISBN 123456789x]]
25538 [http://foo.com http://example.com]
25539 [http://foo.com RFC 1234]
25540 [http://foo.com PMID 1234]
25541 [http://foo.com ISBN 123456789x]
25542 !! html+tidy
25543 <p><a href="/wiki/Foo" title="Foo">http://example.com</a> <a href="/wiki/Foo" title="Foo">RFC 1234</a> <a href="/wiki/Foo" title="Foo">PMID 1234</a> <a href="/wiki/Foo" title="Foo">ISBN 123456789x</a></p>
25544 <p><a rel="nofollow" class="external text" href="http://foo.com">http://example.com</a> <a rel="nofollow" class="external text" href="http://foo.com">RFC 1234</a> <a rel="nofollow" class="external text" href="http://foo.com">PMID 1234</a> <a rel="nofollow" class="external text" href="http://foo.com">ISBN 123456789x</a></p>
25545 !! html/parsoid
25546 <p><a rel="mw:WikiLink" href="./Foo" title="Foo">http://example.com</a>
25547 <a rel="mw:WikiLink" href="./Foo" title="Foo">RFC 1234</a>
25548 <a rel="mw:WikiLink" href="./Foo" title="Foo">PMID 1234</a>
25549 <a rel="mw:WikiLink" href="./Foo" title="Foo">ISBN 123456789x</a></p>
25551 <p><a rel="mw:ExtLink" href="http://foo.com">http://example.com</a>
25552 <a rel="mw:ExtLink" href="http://foo.com">RFC 1234</a>
25553 <a rel="mw:ExtLink" href="http://foo.com">PMID 1234</a>
25554 <a rel="mw:ExtLink" href="http://foo.com">ISBN 123456789x</a></p>
25555 !! end
25557 !! test
25558 Magic links inside image captions (autolinked)
25559 !! wikitext
25560 [[File:Foobar.jpg|thumb|http://example.com]]
25561 [[File:Foobar.jpg|thumb|RFC 1234]]
25562 [[File:Foobar.jpg|thumb|PMID 1234]]
25563 [[File:Foobar.jpg|thumb|ISBN 123456789x]]
25564 !! html+tidy
25565 <div class="thumb tright">
25566 <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>
25567 <div class="thumbcaption">
25568 <div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>
25569 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div>
25570 </div>
25571 </div>
25572 <div class="thumb tright">
25573 <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>
25574 <div class="thumbcaption">
25575 <div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>
25576 <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc1234">RFC 1234</a></div>
25577 </div>
25578 </div>
25579 <div class="thumb tright">
25580 <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>
25581 <div class="thumbcaption">
25582 <div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>
25583 <a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a></div>
25584 </div>
25585 </div>
25586 <div class="thumb tright">
25587 <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>
25588 <div class="thumbcaption">
25589 <div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>
25590 <a href="/wiki/Special:BookSources/123456789X" class="internal mw-magiclink-isbn">ISBN 123456789x</a></div>
25591 </div>
25592 </div>
25593 !! html/parsoid
25594 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" href="http://example.com">http://example.com</a></figcaption></figure>
25595 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="//tools.ietf.org/html/rfc1234" rel="mw:ExtLink">RFC 1234</a></figcaption></figure>
25596 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink">PMID 1234</a></figcaption></figure>
25597 <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/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="./Special:BookSources/123456789X" rel="mw:WikiLink">ISBN 123456789x</a></figcaption></figure>
25598 !! end
25600 !! test
25601 WTS of magic word text (T109371)
25602 !! options
25603 parsoid=html2wt
25604 !! html/parsoid
25605 <p>RFC 1234</p>
25606 <p><a href="http://foo.com" rel="mw:ExtLink">RFC 1234</a></p>
25607 <p><a href="./Foo" rel="mw:WikiLink">RFC 1234</a></p>
25608 !! wikitext
25609 <nowiki>RFC 1234</nowiki>
25611 [http://foo.com RFC 1234]
25613 [[Foo|RFC 1234]]
25614 !! end
25616 !! test
25617 Edited Redirect link should emit a non-piped wikitext link
25618 !! options
25619 parsoid=html2wt
25620 !! html/parsoid
25621 <link rel="mw:PageProp/redirect" href="Bar" data-parsoid='{"a":{"href":"./Foo"},"sa":{"href":"Foo"}}'>
25622 !! wikitext
25623 #REDIRECT [[Bar]]
25624 !! end
25626 !! test
25627 T75121: Infer extension name from typeOf if data-mw is not present
25628 !! options
25629 parsoid={ "modes": ["html2wt"], "suppressErrors": true }
25630 !! html/parsoid
25631 <div typeOf="mw:Extension/foo"></div>
25632 !! wikitext
25633 <foo />
25634 !! end
25636 # Note that the <p> wrapping isn't present in PHP parser output
25637 # The important thing for this test is that P-wrapping doesn't
25638 # interfere with the <nowiki> protection for leading - in <td>
25639 # (which isn't necessary for <th>).
25640 !! test
25641 T88318: p-wrapped dash in table.
25642 !! options
25643 parsoid=html2wt,wt2wt
25644 !! html/parsoid
25645 <table><tbody>
25646 <tr><th><p>-</p></th><th><p>- </p></th></tr>
25647 <tr><td><p>-</p></td><td><p>- </p></td></tr>
25648 <tr><td><small>-</small></td><td><br/><p>-</p></td><td><br/>-</td></tr>
25649 </tbody></table>
25650 !! wikitext
25653 !- 
25655 |<nowiki>-</nowiki>
25656 |<nowiki>- </nowiki>
25658 |<small>-</small>
25659 |<br>
25661 |<br>
25664 !! html/php+tidy
25665 <table>
25666 <tr>
25667 <th>-</th>
25668 <th>-</th>
25669 </tr>
25670 <tr>
25671 <td>-</td>
25672 <td>-</td>
25673 </tr>
25674 <tr>
25675 <td><small>-</small></td>
25676 <td><br />
25677 <p>-</p>
25678 </td>
25679 <td><br />
25680 <p>-</p>
25681 </td>
25682 </tr>
25683 </table>
25684 !! end
25686 !! test
25687 HTML id attribute with Parsoid-like element ids should not be serialized to wikitext
25688 !! options
25689 parsoid=html2wt
25690 !! html/parsoid
25691 <table id='mwAb'>
25692 <td id='mwAc'>foo</td>
25693 <td id='serialize-this'>bar</td>
25694 </table>
25695 !! wikitext
25697 |foo
25698 | id="serialize-this" |bar
25700 !! end
25702 !! test
25703 Parsoid-like element ids should not be serialized to wikitext unless shadowed
25704 !! options
25705 parsoid=html2wt
25706 !! html/parsoid
25707 <div id="mwAQ" data-parsoid='{"stx":"html","a":{"id":"mwAQ"},"sa":{"id":"hello"}}'>ok</div>
25708 !! wikitext
25709 <div id="hello">ok</div>
25710 !! end
25712 !! test
25713 WTS change modes
25714 !! options
25715 parsoid={
25716   "modes": ["wt2wt"],
25717   "changes": [
25718     [ "#xyz", "before", "<b>before</b> stuff " ],
25719     [ "#xyz", "after", " stuff <i>after</i>" ],
25720     [ "#xyz", "html", "x <b>y</b> z" ]
25721   ]
25723 !! wikitext
25724 <span id="xyz">hello</span>
25725 !! wikitext/edited
25726 '''before''' stuff <span id="xyz">x '''y''' z</span> stuff ''after''
25727 !! end
25729 !! test
25730 Never serialize a-tag as html, regardless of what data-parsoid has to say
25731 !! options
25732 parsoid={ "modes": ["html2wt"], "suppressErrors": true }
25733 !! html/parsoid
25734 <a rel="mw:WikiLink" href="./Foo" title="Foo" data-parsoid='{"stx":"html"}'>Foo</a>
25735 !! wikitext
25736 [[Foo]]
25737 !! end
25739 ## SSS FIXME: This is broken output nevertheless.
25740 ## What might be a reasonable non-broken output for this?
25741 ## This is an edge case unlikely to be seen in production
25742 ## that I am not wasting more time on this right now.
25743 !! test
25744 Never serialize a-tag as html, no matter what attributes it has
25745 !! options
25746 parsoid={ "modes": ["html2wt"], "suppressErrors": true }
25747 !! html/parsoid
25748 <a bad='true' href='http://boo.org'><img src='http://boohoo.org' /></a>
25749 !! wikitext
25750 [http://boo.org http://boohoo.org]
25751 !! end
25753 # Misnested is an indication that selser can reuse the source but these have
25754 # shown to sneak through on occasion. See T101768.
25755 # The original wikitext here is: [http://test.com [[one]] two three]
25756 !! test
25757 Strip span tags added to mark misnested links
25758 !! options
25759 parsoid=html2wt
25760 !! html/parsoid
25761 <p data-parsoid='{}'><a rel="mw:ExtLink" href="http://test.com" data-parsoid='{"targetOff":17,"contentOffsets":[17,34]}'></a><a rel="mw:WikiLink" href="./One" title="One" data-parsoid='{"stx":"simple","a":{"href":"./One"},"sa":{"href":"one"},"misnested":true}'>one</a><span data-parsoid='{"misnested":true}'> two three</span></p>
25762 !! wikitext
25763 [http://test.com][[one]] two three
25764 !! end
25766 !! test
25767 Use data-parsoid.firstWikitextNode to compute newline constraints for template content
25768 !! options
25769 parsoid=html2wt
25770 !! html/parsoid
25771 <span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a"}},"i":0}}]}'>a</span><table about="#mwt2" typeof="mw:Transclusion mw:ExpandedAttrs" data-parsoid='{"a":{"{{echo|c\n{{!}}d\n}}":null},"sa":{"{{echo|c\n{{!}}d\n}}":""},"firstWikitextNode":"table","pi":[[{"k":"1","spc":["","","",""]}]]}' data-mw='{"parts":["{|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"c\n{{!}}d\n"}},"i":0}},"\n|}"]}'>
25772 <tbody><tr><td>d
25773 </td></tr>
25774 </tbody></table>
25775 !! wikitext
25776 {{echo|a}}
25777 {|{{echo|c
25778 {{!}}d
25781 !! end
25783 ## This test verifies the presence and computation of this attribute indirectly
25784 ## by making an edit and ensuring that the serialization is correct (which it would be
25785 ## only if firstWikitextNode is properly set).
25786 !! test
25787 data-parsoid.firstWikitextNode should be computed properly in the presence of fostered content
25788 !! options
25789 parsoid= {
25790   "modes": ["wt2wt"],
25791   "changes": [
25792     [ "div#x", "remove" ],
25793     [ "div", "before", "<div>new</div>" ]
25794   ]
25796 !! wikitext
25797 <div id="x">foo</div>
25799 {{echo|<div>boo</div>
25800 {{!}}b}}
25803 !! wikitext/edited
25805 <div>new</div>
25807 {{echo|<div>boo</div>
25808 {{!}}b}}
25811 !! end
25813 # --------------------------------------------
25814 # Tests spec'ing wikitext serialization norms |
25815 # --------------------------------------------
25817 !! test
25818 1. Categories should always be serialized on their own line
25819 !! options
25820 parsoid=html2wt
25821 !! html/parsoid
25822 foo<link rel="mw:PageProp/Category" href="./Category:Foo">bar
25823 !! wikitext
25825 [[Category:Foo]]
25827 !! end
25829 !! test
25830 2. Categories that are part of templates should not introduce a line break
25831 !! wikitext
25832 foo {{echo|<span>bar</span> [[Category:baz]]}} bar
25833 !! html/parsoid
25834 <p>foo <span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;span>bar&lt;/span> [[Category:baz]]"}},"i":0}}]}'>bar</span><span about="#mwt1"> </span><link rel="mw:PageProp/Category" href="./Category:Baz" about="#mwt1" data-parsoid='{"stx":"simple","a":{"href":"./Category:Baz"},"sa":{"href":"Category:baz"}}'/> bar</p>
25835 !! end
25837 # Careful while editing these next 2 tests. There are \u200f characters
25838 # before and after the <link> tags in the HTML and following some
25839 # of the categories in wikitext
25840 # Do not remove these characters in edits.
25842 # As part of the serialization, these bidi characters will get stripped.
25843 !! test
25844 RTL (\u200f) and LTR (\u200e) markers around category tags should be stripped
25845 !! options
25846 parsoid={
25847   "modes": ["html2wt"],
25848   "scrubWikitext": true
25850 !! html/parsoid
25851 <p>‏<link rel="mw:PageProp/Category" href="./קטגוריה:טקסים" />‏
25852 ‏<link rel="mw:PageProp/Category" href="./קטגוריה:_שיטות_משפט" />‏</p>
25853 !! wikitext
25854 [[קטגוריה:טקסים]]
25855 [[קטגוריה: שיטות משפט]]
25856 !! end
25858 !! test
25859 RTL (\u200f) and LTR (\u200e) markers should not be stripped if followed by a text node
25860 !! options
25861 parsoid={
25862   "modes": ["html2wt"],
25863   "scrubWikitext": true
25865 !! html/parsoid
25866 <p>‏<link rel="mw:PageProp/Category" href="./קטגוריה:טקסים" />‏y</p>
25867 !! wikitext
25868 [[קטגוריה:טקסים]]
25869 ‏y
25870 !! end
25872 !! test
25873 Lists: Add space after bullets
25874 !! options
25875 parsoid=html2wt
25876 !! html/parsoid
25877 <ul>
25878 <li>foo</li>
25879 <li> bar</li>
25880 <li><span> baz</span></li>
25881 </ul>
25882 !! wikitext
25883 * foo
25884 * bar
25885 * <span> baz</span>
25886 !! end
25888 !! test
25889 1. Headings: Add space before/after == (T53744)
25890 !! options
25891 parsoid=html2wt
25892 !! html/parsoid
25893 <h2>foo</h2>
25894 <h2> bar</h2>
25895 <h2>baz </h2>
25896 <h2><span> baz</span></h2>
25897 !! wikitext
25898 == foo ==
25900 == bar ==
25902 == baz ==
25904 == <span> baz</span> ==
25905 !! end
25907 !! test
25908 2. Headings: Add space before/after == even after hoisted content
25909 !! options
25910 parsoid={
25911   "modes": ["html2wt"],
25912   "scrubWikitext": true
25914 !! html/parsoid
25915 <h2> <link href="./Category:A2" rel="mw:PageProp/Category" />ok</h2>
25916 !! wikitext
25917  [[Category:A2]]
25919 == ok ==
25920 !! end
25922 !! test
25923 1. Headings: suppress newly created empty headings
25924 !! options
25925 parsoid={
25926   "modes": ["html2wt"],
25927   "scrubWikitext": true
25929 !! html/parsoid
25930 <h2></h2>
25931 !! wikitext
25932 !! end
25934 !! test
25935 2. Headings: don't suppress empty headings if scrubWikitext is false
25936 !! options
25937 parsoid=html2wt
25938 !! html/parsoid
25939 <h2></h2>
25940 !! wikitext
25941 ==<nowiki/>==
25942 !! end
25944 !! test
25945 3. Headings: suppress empty headings on edits
25946 !! options
25947 parsoid={
25948   "modes": ["selser"],
25949   "scrubWikitext": true,
25950   "changes": [
25951     [ "#x", "remove"]
25952   ]
25954 !! wikitext
25955 ==<span id="x">foo</span>==
25956 !! wikitext/edited
25957 !! end
25959 !! test
25960 Headings: Replace <br/> with a single whitespace char (when scrubWikitext = true)
25961 !! options
25962 parsoid={
25963   "modes": ["html2wt"],
25964   "scrubWikitext": true
25966 !! html/parsoid
25967 <h2>foo<br/>bar</h2>
25968 <h2>foo <span><br/>bar</span> baz</h2>
25969 !! wikitext
25970 == foo bar ==
25972 == foo <span> bar</span> baz ==
25973 !! end
25975 !! test
25976 Headings: Replace <br/> with a single whitespace char (when scrubWikitext = false)
25977 !! options
25978 parsoid={
25979   "modes": ["html2wt"],
25980   "scrubWikitext": false
25982 !! html/parsoid
25983 <h2>foo<br/>bar</h2>
25984 !! wikitext
25985 == foo<br> bar ==
25986 !! end
25988 !! test
25989 1. WT Quote Tags: suppress newly created empty style tags
25990 !! options
25991 parsoid={
25992   "modes": ["html2wt"],
25993   "scrubWikitext": true
25995 !! html/parsoid
25996 <i></i><b></b>
25997 !! wikitext
25998 !! end
26000 !! test
26001 2. WT Quote Tags: don't suppress empty style tags if scrubWikitext is false
26002 !! options
26003 parsoid=html2wt
26004 !! html/parsoid
26005 <i></i><b></b>
26006 !! wikitext
26007 ''<nowiki/>'''''<nowiki/>'''
26008 !! end
26010 !! test
26011 3. WT Quote Tags: suppress empty style tags on edits
26012 !! options
26013 parsoid={
26014   "modes": ["selser"],
26015   "scrubWikitext": true,
26016   "changes": [
26017     [ "#x", "remove"]
26018   ]
26020 !! wikitext
26021 '''<span id="x">foo</span>'''
26022 !! wikitext/edited
26023 !! end
26025 !! test
26026 1. Anchors: suppress newly created empty anchors
26027 !! options
26028 parsoid={
26029   "modes": ["html2wt"],
26030   "scrubWikitext": true
26032 !! html/parsoid
26033 <a rel="mw:WikiLink" href="./Test" title="Test"></a>
26034 !! wikitext
26035 !! end
26037 !! test
26038 2. Anchors: don't suppress empty anchors if scrubWikitext is false
26039 !! options
26040 parsoid={
26041   "modes": ["html2wt"],
26042   "scrubWikitext": false
26044 !! html/parsoid
26045 <a rel="mw:WikiLink" href="./Test" title="Test"></a>
26046 !! wikitext
26047 [[Test|<nowiki/>]]
26048 !! end
26050 !! test
26051 3. Anchors: suppress empty anchors on edits
26052 !! options
26053 parsoid={
26054   "modes": ["selser"],
26055   "scrubWikitext": true,
26056   "changes": [
26057     [ "#x", "remove"]
26058   ]
26060 !! wikitext
26061 [[Test|<span id="x">foo</span>]]
26062 !! wikitext/edited
26063 !! end
26065 !! test
26066 3a. Anchors: do not suppress numbered extlinks
26067 !! options
26068 parsoid={
26069   "modes": ["wt2wt"],
26070   "scrubWikitext": true
26072 !! wikitext
26073 [http://foo.com]
26074 !! html/parsoid
26075 <a rel="mw:ExtLink" href="http://foo.com"></a>
26076 !! end
26078 !! test
26079 3b. Anchors: do not suppress numbered extlinks
26080 !! options
26081 parsoid={
26082   "modes": ["wt2wt"],
26083   "scrubWikitext": true,
26084   "changes": [
26085     [ "#x", "remove"]
26086   ]
26088 !! wikitext
26089 [http://foo.com <span id="x">foo</span>]
26090 !! wikitext/edited
26091 [http://foo.com]
26092 !! end
26094 !!test
26095 Normalizations should be restricted to edited content
26096 !!options
26097 parsoid={
26098   "modes": ["selser"],
26099   "scrubWikitext": true,
26100   "changes": [
26101     [ "h1", "before", "<i></i>"]
26102   ]
26104 !!wikitext
26106 = =
26108 !!wikitext/edited
26110 = =
26112 !!end
26114 !! test
26115 1. Multiple normalizations (html2wt)
26116 !! options
26117 parsoid={
26118   "modes": ["html2wt"],
26119   "scrubWikitext": true
26121 !! html
26122 <h2><i></i></h2>
26123 <p><a href='Foo' rel='mw:WikiLink'>foo<i></i>
26124  </a><b><i></i></b>x</p>
26125 !! wikitext
26127 [[foo]]
26130 !! end
26132 !! test
26133 2. Multiple normalizations (selser)
26134 !! options
26135 parsoid={
26136   "modes": ["selser"],
26137   "scrubWikitext": true,
26138   "changes": [
26139     [ "#x", "after", "<h1><i></i></h1>\n<p> x<b></b></p>"]
26140   ]
26142 !! wikitext
26143 <span id="x">foo</span>
26144 !! wikitext/edited
26145 <span id="x">foo</span>
26148 !! end
26150 !! test
26151 1. Indent Pre Nowiki: suppress whitespace at the start of new paragraph
26152 !! options
26153 parsoid={
26154   "modes": ["html2wt"],
26155   "scrubWikitext": true
26157 !! html/parsoid
26158 <p> hi</p>
26159 <p>    hello</p>
26160 !! wikitext
26163 hello
26164 !! end
26166 !! test
26167 2. Indent Pre Nowiki: don't suppress whitespace at the start of new paragraph if scrubWikitext is false
26168 !! options
26169 parsoid=html2wt
26170 !! html/parsoid
26171 <p> hi</p>
26172 <p>    hello</p>
26173 !! wikitext
26174 <nowiki> </nowiki>hi
26176 <nowiki> </nowiki>   hello
26177 !! end
26179 !! test
26180 3. Indent Pre Nowiki: suppress whitespace after newlines in new paragraph or table cell
26181 !! options
26182 parsoid={
26183   "modes": ["html2wt"],
26184   "scrubWikitext": true
26186 !! html/parsoid
26187 <p>Foo
26188  bar
26189 baz</p>
26191 <table><tr><td>Foo
26192  bar
26193  baz bang</td></tr></table>
26195 <p><!--boo--> foo
26196  bar</p>
26198 <p> foo
26199  bar<span>boo</span></p>
26200 !! wikitext
26206 |Foo
26208 baz bang
26211 <!--boo-->foo
26215 bar<span>boo</span>
26216 !! end
26218 !! test
26219 4. Indent Pre Nowiki: suppress leading whitespace in edited paragraphs
26220 !! options
26221 parsoid={
26222   "modes": ["selser"],
26223   "scrubWikitext": true,
26224   "changes": [
26225     [ "p", "html", " a\n b" ]
26226   ]
26228 !! wikitext
26230 !! wikitext/edited
26233 !! end
26235 !! test
26236 1. New links that end in spaces
26237 !! options
26238 parsoid={
26239   "modes": ["html2wt"],
26240   "scrubWikitext": false
26242 !! html/parsoid
26243 <p><a rel="mw:WikiLink" href="./Berlin" title="Berlin">Berlin </a>is the capital of Germany.</p>
26244 <p><a rel="mw:WikiLink" href="./Foo" title="Foo">Foo </a><b>bar</b></p>
26245 <p><a rel="mw:WikiLink" href="./Boston" title="Boston">Boston </a> is a city.</p>
26246 !! wikitext
26247 [[Berlin ]]<nowiki/>is the capital of Germany.
26249 [[Foo ]]'''bar'''
26251 [[Boston ]] is a city.
26252 !! end
26254 !! test
26255 2. New links that end in spaces
26256 !! options
26257 parsoid={
26258   "modes": ["html2wt"],
26259   "scrubWikitext": true
26261 !! html/parsoid
26262 <p><a rel="mw:WikiLink" href="./Berlin" title="Berlin">Berlin </a>is the capital of Germany.</p>
26263 <p><a rel="mw:WikiLink" href="./Foo" title="Foo">Foo </a><b>bar</b></p>
26264 <p><a rel="mw:WikiLink" href="./Boston" title="Boston">Boston </a> is a city.</p>
26265 !! wikitext
26266 [[Berlin]] is the capital of Germany.
26268 [[Foo]] '''bar'''
26270 [[Boston]] is a city.
26271 !! end
26273 !! test
26274 1. Table cells with escapable prefixes
26275 !! options
26276 parsoid={
26277   "modes": ["html2wt"],
26278   "scrubWikitext": false
26280 !! html
26281 <table>
26282 <tr><td>a</td></tr>
26283 <tr><td>-</td></tr>
26284 <tr><td>+</td></tr>
26285 </table>
26286 !! wikitext
26290 |<nowiki>-</nowiki>
26292 |<nowiki>+</nowiki>
26294 !! end
26296 !! test
26297 2. Table cells with escapable prefixes
26298 !! options
26299 parsoid={
26300   "modes": ["html2wt"],
26301   "scrubWikitext": true
26303 !! html
26304 <table>
26305 <tr><td>a</td></tr>
26306 <tr><td>-</td></tr>
26307 <tr><td>+</td></tr>
26308 </table>
26309 !! wikitext
26313 | -
26315 | +
26317 !! end
26319 !! test
26320 3a. Table cells with escapable prefixes after edits
26321 !! options
26322 parsoid={
26323   "modes": ["selser"],
26324   "scrubWikitext": true,
26325   "changes": [
26326     [ "table tbody tr:first-child td:first-child", "remove"]
26327   ]
26329 !! wikitext
26331 |a||-
26333 !! wikitext/edited
26335 | -
26337 !! end
26339 !! test
26340 3b. Table cells with escapable prefixes after edits
26341 !! options
26342 parsoid={
26343   "modes": ["selser"],
26344   "scrubWikitext": true,
26345   "changes": [
26346     [ "table tbody tr:first-child td:first-child", "html", "-" ],
26347     [ "#x", "remove" ]
26348   ]
26350 !! wikitext
26352 |pqr
26353 |<span id="x">foo</span>+
26355 !! wikitext/edited
26357 | -
26358 | +
26360 !! end
26362 # FIXME: This test will fail because
26363 # normalization doesn't realize that the id attribute
26364 # will eliminate the escapable scenario
26365 !! test
26366 4a. Table cells without escapable prefixes after edits
26367 !! options
26368 parsoid={
26369   "modes": ["selser"],
26370   "scrubWikitext": true,
26371   "changes": [
26372     [ "#x", "html", "-" ]
26373   ]
26375 !! wikitext
26377 | id="x" |abcd
26379 !! wikitext/edited
26381 | id="x" |-
26383 !! end
26385 ## This tests normalizer's ability to discriminate between
26386 ## cells having identical content.
26387 !! test
26388 4b. Table cells without escapable prefixes after edits
26389 !! options
26390 parsoid={
26391   "modes": ["selser"],
26392   "scrubWikitext": true,
26393   "changes": [
26394     [ "td", "html", "-" ]
26395   ]
26397 !! wikitext
26399 |a||b
26401 !! wikitext/edited
26403 | -||-
26405 !! end
26407 ## This tests normalizer's ability to not be tripped by
26408 ## comments (and whitespace)
26409 !! test
26410 4c. Table cells without escapable prefixes after edits
26411 !! options
26412 parsoid={
26413   "modes": ["selser"],
26414   "scrubWikitext": true,
26415   "changes": [
26416     [ "table tbody tr td:first-child", "remove" ]
26417   ]
26419 !! wikitext
26422 <!--foo--> |a||-
26424 !! wikitext/edited
26427 <!--foo--> | -
26429 !! end
26431 ## This tests normalizer's ability to handle HTML cells
26432 !! test
26433 4d. Table cells without escapable prefixes after edits
26434 !! options
26435 parsoid={
26436   "modes": ["selser"],
26437   "scrubWikitext": true,
26438   "changes": [
26439     [ "td", "html", "-" ]
26440   ]
26442 !! wikitext
26443 <table>
26444 <tr><td>a</td></tr>
26445 </table>
26446 !! wikitext/edited
26447 <table>
26448 <tr><td>-</td></tr>
26449 </table>
26450 !! end
26452 ## T111151 Remove font elements without attributes
26453 !! test
26454 5a. font tags without attributes should be dropped in scrubWikitext mode
26455 !! options
26456 parsoid={
26457   "modes": ["html2wt"],
26458   "scrubWikitext": true
26460 !! html
26461 <font>foo</font>
26462 <font><font>bar</font></font>
26463 <font class="x">boo</font>
26464 !! wikitext
26467 <font class="x">boo</font>
26468 !! end
26470 !! test
26471 5b. font tags should not be dropped without scrubWikitext being enabled
26472 !! options
26473 parsoid={
26474   "modes": ["html2wt"],
26475   "scrubWikitext": false
26477 !! html
26478 <font>foo</font>
26479 !! wikitext
26480 <font>foo</font>
26481 !! end
26483 !! test
26484 Escape nowiki DOM elements
26485 !! options
26486 parsoid=html2wt
26487 !! html/parsoid
26488 <nowiki><i>foo</i></nowiki>
26489 !! wikitext
26490 &lt;nowiki&gt;''foo''&lt;/nowiki&gt;
26491 !! end
26493 # This is meant to be an interim fix while we go about figuring out
26494 # how to not introduce these trailing <nowiki/>s in the first place.
26495 !! test
26496 T115717: Strip trailing <nowiki/>s (without affecting valid uses)
26497 !! options
26498 parsoid=html2wt
26499 !! html/parsoid
26500 <p>x<meta typeof="mw:Placeholder" data-parsoid='{"src":"&lt;nowiki/>"}'/><meta typeof="mw:Placeholder" data-parsoid='{"src":"&lt;nowiki/>"}'/>
26501 y</p>
26502 <p><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"dsr":[0,23,null,null],"pi":[[{"k":"1","named":true,"spc":["\n"," "," ",""]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;nowiki/>"}},"i":0}}]}'></span></p>
26503 <p><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"dsr":[0,24,null,null],"pi":[[{"k":"1","named":true,"spc":["\n"," "," ","\n"]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;nowiki/>"}},"i":0}}]}'></span></p>
26504 !! wikitext
26508 {{echo|
26509 1 = <nowiki/>}}
26511 {{echo|
26512 1 = <nowiki/>
26514 !! end
26516 # ---------------------------------------------------
26517 # End of tests spec'ing wikitext serialization norms |
26518 # ---------------------------------------------------
26520 # T104032
26521 !! test
26522 Bare inline nodes not wrapped inside p-tags should be treated as p-wrapped
26523 !! options
26524 parsoid=html2wt
26525 !! html/parsoid
26526 a<p>b</p>
26527 <b>c</b><p>d</p>
26528 <table><tr>
26529 <td>a<p>b</p></td>
26530 <td><b>c</b><p>d</p></td>
26531 </tr></table>
26532 !! wikitext
26537 '''c'''
26543 |'''c'''
26546 !! end
26548 # -----------------------------------------------------------------
26549 # End of section for Parsoid-only html2wt tests for serialization
26550 # of new content
26551 # -----------------------------------------------------------------
26553 # -----------------------------------------------------------------
26554 # The following section of tests are primarily to spec behavior of
26555 # the selective serializer. All these tests have manual selser
26556 # changes. The automated selser changes for all tests handle the
26557 # wide variation of changes, but these tests here capture specs
26558 # deterministically.
26559 # ----------------------------------------------------------------
26561 ## T90517
26562 !! test
26563 Selser: New comments should not be lost
26564 !! options
26565 parsoid={
26566   "modes": ["selser"],
26567   "changes": [
26568     [ "#a", "after", "<!--c1-->" ],
26569     [ "#b", "before", "<!--c2-->" ]
26570   ]
26572 !! wikitext
26573 <span id="a">a</span>
26575 <span id="b">b</span>
26576 !! wikitext/edited
26577 <span id="a">a</span><!--c1-->
26579 <!--c2--><span id="b">b</span>
26580 !! end
26582 ## T89383
26583 !! test
26584 Selser: Check for validity of DSR before using it
26585 !! options
26586 parsoid={
26587   "modes": ["selser"],
26588   "changes": [
26589     [ "#a", "before", "<meta property='mw:PageProp/displaytitle' content='foo'>" ]
26590   ]
26592 !! wikitext
26593 <span id="a">a</span>
26594 !! wikitext/edited
26595 {{DISPLAYTITLE:foo}}
26596 <span id="a">a</span>
26597 !! end
26599 !! test
26600 1. DOMDiff: Changes to <ref> content should be looked up using id
26601 !! options
26602 parsoid={
26603   "modes": ["selser"],
26604   "changes": [
26605     ["#X", "after", "bar"],
26606     ["#Y", "after", "baz"]
26607   ]
26609 !! wikitext
26610 X <ref><span id="X">foo</span></ref>
26611 Y <ref name="a" />
26612 <references>
26613 <ref name="a"><span id="Y">foo</span></ref>
26614 </references>
26615 !! wikitext/edited
26616 X <ref><span id="X">foo</span>bar</ref>
26617 Y <ref name="a" />
26618 <references>
26619 <ref name="a"><span id="Y">foo</span>baz</ref>
26620 </references>
26621 !! end
26623 !! test
26624 2. DOMDiff: Changes to <ref> content should be looked up using id
26625 !! options
26626 parsoid={
26627   "modes": ["selser"],
26628   "changes": [
26629     ["#Z", "after", "bar"]
26630   ]
26632 !! wikitext
26633 A <ref>foo bar for a</ref>
26634 B <ref group="X" name="b" />
26636 <references />
26638 <references group="X">
26639 <ref name="b"><span id="Z">foo</span></ref>
26640 </references>
26641 !! wikitext/edited
26642 A <ref>foo bar for a</ref>
26643 B <ref group="X" name="b" />
26645 <references />
26647 <references group="X">
26648 <ref name="b"><span id="Z">foo</span>bar</ref>
26649 </references>
26650 !! end
26652 !! test
26653 Empty LI (T49673)
26654 !! wikitext
26655 * a
26658 * b
26659 !! html/php+tidy
26660 <ul>
26661 <li>a</li>
26662 <li class="mw-empty-li"></li>
26663 <li class="mw-empty-li"></li>
26664 <li>b</li>
26665 </ul>
26666 !! end