jenkins-bot has submitted this change and it was merged.
Change subject: Bug 51090: Render invalid wikilinks as plain text
......................................................................
Bug 51090: Render invalid wikilinks as plain text
Some tests are failing the html2html, wt2wt and html2wt modes because of
<nowiki> wrapping. These will be fixed after updating nowiki escaping
code in the serailizer (in a later patch).
Change-Id: I04507a03b5082a0e801df3eb107e5f3127a58693
---
M lib/ext.core.LinkHandler.js
M tests/parserTests-blacklist.js
M tests/parserTests.txt
3 files changed, 180 insertions(+), 8 deletions(-)
Approvals:
Arlolra: Looks good to me, approved
jenkins-bot: Verified
diff --git a/lib/ext.core.LinkHandler.js b/lib/ext.core.LinkHandler.js
index c6c46bf..a412a4c 100644
--- a/lib/ext.core.LinkHandler.js
+++ b/lib/ext.core.LinkHandler.js
@@ -187,6 +187,38 @@
return;
}
+ var stoken = '',
+ subpageEnable = false,
+ tattr = token.attribs[0].v[0];
+
+ for( var i=0; i<tattr.length; i++){
+ stoken += tattr[i];
+ }
+
+ // For links starting with ../ and pointing to subpages
+ if (env.conf.wiki.namespacesWithSubpages[ env.page.ns ]){
+ subpageEnable = true;
+ }
+
+ // handle invalid cases defined here :
+ //
https://en.wikipedia.org/wiki/Wikipedia:Page_name#Technical_restrictions_and_limitations
+ var re = /[{}<>\[\]]|\uFFFD|[\x7F\x00-\x1F]|^\.$|^\.\.$|~{3,}/;
+ var re2 = /(^\.(\.)?\/)+|(\/\.(\.)?)+$|\/\.\/|\/\.\.\//;
+
+ if (re.test(stoken) || (re2.test(stoken) && !subpageEnable) ||
tattr.length>225 ) {
+
+ var apipe = attribs[1],
+ content = '';
+ content = "[[" + stoken;
+ if ( typeof apipe !== 'undefined' && typeof apipe.vsrc !==
'undefined') {
+ content += "|" + apipe.vsrc;
+ }
+ content += "]]";
+
+ cb ({tokens: [content]});
+ return;
+ }
+
// Ok, it looks like we have a sane href. Figure out which handler to
use.
var handler = this.getWikiLinkHandler(token, target);
// and call it.
diff --git a/tests/parserTests-blacklist.js b/tests/parserTests-blacklist.js
index 5b989df..ea2f011 100644
--- a/tests/parserTests-blacklist.js
+++ b/tests/parserTests-blacklist.js
@@ -561,6 +561,8 @@
add("wt2wt", "Allow empty links in image captions (Bug 60753)",
"[[File:Foobar.jpg|thumb|Caption
[[Link1]]\n<nowiki>[[]]</nowiki>\n[[Link2]]\n]]");
add("wt2wt", "Image with multiple widths -- use last",
"[[File:Foobar.jpg|300px|caption]]\n");
add("wt2wt", "Image with multiple alignments -- use first (bug 48664)",
"[[File:Foobar.jpg|thumb|left|caption]]\n\n[[File:Foobar.jpg|middle|caption]]\n");
+add("wt2wt", "Parsoid: dot-slash prefixed wikilinks",
"<nowiki>[[./foo]]</nowiki>\n\n<nowiki>[[././bar]]</nowiki>\n\n<nowiki>[[././baz/]]</nowiki>\n");
+add("wt2wt", "Render invalid page names as plain text (bug 51090)",
"<nowiki>[[../../foo|bar]]</nowiki>\n\n<nowiki>[[../../foo|bar]]</nowiki>\n\n<nowiki>[[foo�|bar]]</nowiki>\n\n<nowiki>[[foo/.|bar]]</nowiki>\n\n<nowiki>[[foo/.|bar]]</nowiki>\n\n<nowiki>[[foo/..|bar]]</nowiki>\n\n<nowiki>[[foo/..|bar]]</nowiki>\n\n<nowiki>[[foo~~~bar]]</nowiki>\n\n<nowiki>[[foo~~~~bar]]</nowiki>\n\n<nowiki>[[foo>bar]]</nowiki>\n\n<nowiki>[[foo>bar]]</nowiki>\n\n[[foo[bar]]\n\n<nowiki>[[.]]</nowiki>\n\n<nowiki>[[..]]</nowiki>\n\n<nowiki>[[foo././bar]]</nowiki>\n\n<nowiki>[[foo././bar]]</nowiki>\n\n[[foo{bar]]\n\n[[foo}bar]]\n\n[[foo[bar]]\n\n[[foo]bar]]\n\n[[foo<bar]]\n");
add("wt2wt", "Handling of sections up to level 6 and beyond", "= Level 1
Heading=\n== Level 2 Heading==\n=== Level 3 Heading===\n==== Level 4
Heading====\n===== Level 5 Heading=====\n====== Level 6
Heading======\n======<nowiki>= Level 7
Heading=</nowiki>======\n======<nowiki>== Level 8
Heading==</nowiki>======\n======<nowiki>=== Level 9
Heading===</nowiki>======\n======<nowiki>==== Level 10
Heading====</nowiki>======\n");
add("wt2wt", "div with single-quoted attribute", "<div id=\"rock\">HTML
rocks</div>");
add("wt2wt", "div with unquoted attribute", "<div id=\"rock\">HTML
rocks</div>");
@@ -687,6 +689,7 @@
add("html2html", "Bug 4781: %26 in bracketed URL", "<p
data-parsoid='{\"dsr\":[0,45,0,0]}'><a rel=\"mw:ExtLink\"
href=\"http://www.example.com/?title=AT%2526T\"
data-parsoid='{\"targetOff\":40,\"contentOffsets\":[40,44],\"dsr\":[0,45,40,1]}'>link</a></p>\n");
add("html2html", "Bug 4781, 5267: %26 in bracketed URL", "<p
data-parsoid='{\"dsr\":[0,50,0,0]}'><a rel=\"mw:ExtLink\"
href=\"http://www.example.com/?title=100%2525_Bran\"
data-parsoid='{\"targetOff\":45,\"contentOffsets\":[45,49],\"dsr\":[0,50,45,1]}'>link</a></p>\n");
add("html2html", "Bug 4781, 5267: %28, %29 in bracketed URL", "<p
data-parsoid='{\"dsr\":[0,64,0,0]}'><a rel=\"mw:ExtLink\"
href=\"http://www.example.com/?title=Ben-Hur_%25281959_film%2529\"
data-parsoid='{\"targetOff\":59,\"contentOffsets\":[59,63],\"dsr\":[0,64,59,1]}'>link</a></p>\n");
+add("html2html", "External link containing double-single-quotes with no space
separating the url from text in italics", "<p
data-parsoid='{\"dsr\":[0,162,0,0]}'><a rel=\"mw:ExtLink\"
href=\"http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm\"
data-parsoid='{\"targetOff\":57,\"contentOffsets\":[57,106],\"dsr\":[0,107,57,1]}'><i
data-parsoid='{\"dsr\":[57,83,2,2]}'>La muerte de Casagemas</i> (1901) en el
sitio de </a>[[./Museo_Picasso_(París)|Museo Picasso]]<span
data-parsoid='{\"stx\":\"html\",\"dsr\":[148,162,6,7]}'>.</span></p>\n");
add("html2html", "Brackets in urls", "<p
data-parsoid='{\"dsr\":[0,99,0,0]}'><a rel=\"mw:ExtLink\"
href=\"http://example.com/index.php?foozoid%255B%255D=bar\"
data-parsoid='{\"targetOff\":52,\"contentOffsets\":[52,98],\"dsr\":[0,99,52,1]}'>http://example.com/index.php?foozoid%5B%5D=bar</a></p>\n\n<p
data-parsoid='{\"dsr\":[101,200,0,0]}'><a rel=\"mw:ExtLink\"
href=\"http://example.com/index.php?foozoid%255B%255D=bar\"
data-parsoid='{\"targetOff\":153,\"contentOffsets\":[153,199],\"dsr\":[101,200,52,1]}'>http://example.com/index.php?foozoid%5B%5D=bar</a></p>\n");
add("html2html", "IPv6 urls (bug 21261)", "<p
data-parsoid='{\"dsr\":[0,89,0,0]}'><a rel=\"mw:ExtLink\"
href=\"http://%5B2404:130:0:1000::187:2%5D/index.php\"
data-parsoid='{\"targetOff\":47,\"contentOffsets\":[47,77],\"dsr\":[0,78,47,1]}'>http://[2404:130:0:1000::187:2</a>/index.php]</p>\n");
add("html2html", "Unclosed and unmatched quotes", "<p
data-parsoid='{\"dsr\":[0,66,0,0]}'><i data-parsoid='{\"dsr\":[0,66,2,2]}'><b
data-parsoid='{\"dsr\":[2,25,3,3]}'>Bold italic text </b>with bold
deactivated<b data-parsoid='{\"dsr\":[46,64,3,3]}'> in
between.</b></i></p>\n\n<p data-parsoid='{\"dsr\":[68,134,0,0]}'><b
data-parsoid='{\"dsr\":[68,134,3,3]}'><i
data-parsoid='{\"dsr\":[71,92,2,2]}'>Bold italic text </i>with italic
deactivated<i data-parsoid='{\"dsr\":[115,131,2,2]}'> in
between.</i></b></p>\n\n<p data-parsoid='{\"dsr\":[136,153,0,0]}'><b
data-parsoid='{\"dsr\":[136,153,3,3]}'>Bold text..</b></p>\n\n<p
data-parsoid='{\"dsr\":[155,214,0,0]}'>..spanning two paragraphs (should not
work).<b data-parsoid='{\"dsr\":[199,214,3,3]}'><meta typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"<nowiki/>\",\"dsr\":[202,211,null,null]}'/></b></p>\n\n<p
data-parsoid='{\"dsr\":[216,240,0,0]}'><b
data-parsoid='{\"dsr\":[216,240,3,3]}'>Bold tag left open</b></p>\n\n<p
data-parsoid='{\"dsr\":[242,266,0,0]}'><i
data-parsoid='{\"dsr\":[242,266,2,2]}'>Italic tag left open</i></p>\n\n<p
data-parsoid='{\"dsr\":[268,280,0,0]}'>Normal text.</p>\n\n<p
data-parsoid='{\"dsr\":[282,377,0,0]}'><b
data-parsoid='{\"dsr\":[282,315,3,3]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[285,312,8,9]}'>This year'</span></b>s election <i
data-parsoid='{\"dsr\":[326,336,2,2]}'>should</i> beat <b
data-parsoid='{\"dsr\":[342,375,3,3]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[345,372,8,9]}'>last year'</span></b>s.</p>\n\n<p
data-parsoid='{\"dsr\":[379,435,0,0]}'><i
data-parsoid='{\"dsr\":[379,413,2,2]}'>Tom<b
data-parsoid='{\"dsr\":[384,411,3,3]}'>s car is bigger than </b></i><meta
typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"<nowiki/>\",\"dsr\":[413,422,null,null]}'/><b
data-parsoid='{\"dsr\":[422,433,3,3]}'>Susan</b>s.</p>\n\n<p
data-parsoid='{\"dsr\":[437,478,0,0]}'>Plain <i
data-parsoid='{\"dsr\":[443,471,2,2]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[445,469,8,9]}'>italic'</span></i>s plain</p>\n");
@@ -733,6 +736,7 @@
add("html2html", "Internal link with en linktrail: no apostrophes (bug
27473)", "<p data-parsoid='{\"dsr\":[0,129,0,0]}'><a
href=\"/index.php?title=Something&action=edit&redlink=1\" class=\"new\"
title=\"Something (page does not exist)\">Something</a>'nice</p>\n");
add("html2html", "Internal link with ca linktrail with apostrophes (bug
27473)", "<p data-parsoid='{\"dsr\":[0,128,0,0]}'><a
href=\"/index.php?title=Something&action=edit&redlink=1\" class=\"new\"
title=\"Something (encara no existeix)\">Something'nice</a></p>\n");
add("html2html", "Internal link with kaa linktrail with apostrophes (bug
27473)", "<p data-parsoid='{\"dsr\":[0,131,0,0]}'><a
href=\"/index.php?title=Something&action=edit&redlink=1\" class=\"new\"
title=\"Something (bet ele jaratılmag'an)\">Something'nice</a></p>\n");
+add("html2html", "Link with multiple \":\" in a subpage-supporting namespace
(bug 63636)", "<p
data-parsoid='{\"dsr\":[0,34,0,0]}'>[[./User:Foo/Test/63636:Bar|Test]]</p>\n");
add("html2html", "Internal link with is link prefix", "<p
data-parsoid='{\"dsr\":[0,83,0,0]}'>Aðrir <a
href=\"/wiki/S%C3%B6fnu%C3%B0ur\" title=\"Söfnuður\">mótmælendasöfnuðir</a>
og</p>\n");
add("html2html", "Internal link with is link trail and link prefix", "<p
data-parsoid='{\"dsr\":[0,391,0,0]}'><a
href=\"/wiki/M%C3%B3tm%C3%A6lendatr%C3%BA\"
title=\"Mótmælendatrú\">xxxar</a>\n<a
href=\"/wiki/M%C3%B3tm%C3%A6lendatr%C3%BA\"
title=\"Mótmælendatrú\">mótmælendatrúar</a>\n<a
href=\"/wiki/S%C3%B6fnu%C3%B0ur\"
title=\"Söfnuður\">mótmælendasöfnuður</a>\n<a
href=\"/wiki/S%C3%B6fnu%C3%B0ur\"
title=\"Söfnuður\">mótmælendasöfnuðir</a>\n<a
href=\"/wiki/S%C3%B6fnu%C3%B0ur\"
title=\"Söfnuður\">mótmælendasöfnuðirxxx</a></p>\n");
add("html2html", "Parsoid-centric test: Whitespace in ext- and wiki-links
should be preserved", "<p data-parsoid='{\"dsr\":[0,108,0,0]}'><a
href=\"/index.php?title=Foo&action=edit&redlink=1\" class=\"new\"
title=\"Foo (page does not exist)\"> bar</a></p>\n\n<p
data-parsoid='{\"dsr\":[110,222,0,0]}'><a
href=\"/index.php?title=Foo&action=edit&redlink=1\" class=\"new\"
title=\"Foo (page does not exist)\"> <i
data-parsoid='{\"dsr\":[211,218,2,2]}'>bar</i></a></p>\n\n<p
data-parsoid='{\"dsr\":[224,243,0,0]}'><a rel=\"mw:ExtLink\"
href=\"http://wp.org\"
data-parsoid='{\"targetOff\":239,\"contentOffsets\":[239,242],\"dsr\":[224,243,15,1]}'>foo</a></p>\n\n<p
data-parsoid='{\"dsr\":[245,268,0,0]}'><a rel=\"mw:ExtLink\"
href=\"http://wp.org\"
data-parsoid='{\"targetOff\":260,\"contentOffsets\":[260,267],\"dsr\":[245,268,15,1]}'><i
data-parsoid='{\"dsr\":[260,267,2,2]}'>foo</i></a></p>\n");
@@ -849,6 +853,8 @@
add("html2html", "Missing image with uploads disabled", "<p
data-parsoid='{\"dsr\":[0,75,0,0]}'><a href=\"/wiki/File:Foobaz.jpg\"
title=\"File:Foobaz.jpg\">File:Foobaz.jpg</a></p>\n");
add("html2html", "Subpage link", "<p data-parsoid='{\"dsr\":[0,78,0,0]}'><a
href=\"/wiki/Subpage_test/subpage\" title=\"Subpage
test/subpage\">/subpage</a></p>\n");
add("html2html", "Subpage noslash link", "<p
data-parsoid='{\"dsr\":[0,77,0,0]}'><a href=\"/wiki/Subpage_test/subpage\"
title=\"Subpage test/subpage\">subpage</a></p>\n");
+add("html2html", "Parsoid: dot-slash prefixed wikilinks", "<p
data-parsoid='{\"dsr\":[0,26,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[0,26,8,9]}'>[[./foo]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[28,56,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[28,56,8,9]}'>[[././bar]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[58,87,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[58,87,8,9]}'>[[././baz/]]</span></p>\n");
+add("html2html", "Render invalid page names as plain text (bug 51090)", "<p
data-parsoid='{\"dsr\":[0,34,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[0,34,8,9]}'>[[../../foo|bar]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[36,70,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[36,70,8,9]}'>[[../../foo|bar]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[72,101,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[72,101,8,9]}'>[[foo�|bar]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[103,133,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[103,133,8,9]}'>[[foo/.|bar]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[135,165,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[135,165,8,9]}'>[[foo/.|bar]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[167,198,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[167,198,8,9]}'>[[foo/..|bar]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[200,231,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[200,231,8,9]}'>[[foo/..|bar]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[233,263,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[233,263,8,9]}'>[[foo~~~bar]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[265,296,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[265,296,8,9]}'>[[foo~~~~bar]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[298,326,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[298,326,8,9]}'>[[foo>bar]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[328,356,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[328,356,8,9]}'>[[foo>bar]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[358,369,0,0]}'>[[foo[bar]]</p>\n\n<p
data-parsoid='{\"dsr\":[371,393,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[371,393,8,9]}'>[[.]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[395,418,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[395,418,8,9]}'>[[..]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[420,451,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[420,451,8,9]}'>[[foo././bar]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[453,484,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[453,484,8,9]}'>[[foo././bar]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[486,497,0,0]}'>[[foo{bar]]</p>\n\n<p
data-parsoid='{\"dsr\":[499,510,0,0]}'>[[foo}bar]]</p>\n\n<p
data-parsoid='{\"dsr\":[512,523,0,0]}'>[[foo[bar]]</p>\n\n<p
data-parsoid='{\"dsr\":[525,536,0,0]}'>[[foo]bar]]</p>\n\n<p
data-parsoid='{\"dsr\":[538,549,0,0]}'>[[foo<bar]]</p>\n");
add("html2html", "Disabled subpages", "<p
data-parsoid='{\"dsr\":[0,121,0,0]}'><a
href=\"/index.php?title=/subpage&action=edit&redlink=1\" class=\"new\"
title=\"/subpage (page does not exist)\">/subpage</a></p>\n");
add("html2html", "BUG 561: {{/Subpage}}", "<p
data-parsoid='{\"dsr\":[0,133,0,0]}'><a
href=\"/index.php?title=Page/Subpage&action=edit&redlink=1\"
class=\"new\" title=\"Page/Subpage (page does not
exist)\">Page/Subpage</a></p>\n");
add("html2html", "Link to category", "<p
data-parsoid='{\"dsr\":[0,125,0,0]}'><a
href=\"/wiki/Category:MediaWiki_User%27s_Guide\" title=\"Category:MediaWiki
User's Guide\">Category:MediaWiki User's Guide</a></p>\n");
@@ -1642,6 +1648,8 @@
add("html2wt", "Parsoid-specific image handling - caption with a template in
it", "[[File:Foobar.jpg|thumb|200x200px|This caption has a
{{echo|transclusion}} in it.]]\n");
add("html2wt", "Subpage link", "<a href=\"/wiki/Subpage_test/subpage\"
title=\"Subpage test/subpage\">/subpage</a>\n");
add("html2wt", "Subpage noslash link", "<a href=\"/wiki/Subpage_test/subpage\"
title=\"Subpage test/subpage\">subpage</a>\n");
+add("html2wt", "Parsoid: dot-slash prefixed wikilinks",
"<nowiki>[[./foo]]</nowiki>\n\n<nowiki>[[././bar]]</nowiki>\n\n<nowiki>[[././baz/]]</nowiki>\n");
+add("html2wt", "Render invalid page names as plain text (bug 51090)",
"<nowiki>[[../../foo|bar]]</nowiki>\n\n<nowiki>[[../../foo|bar]]</nowiki>\n\n<nowiki>[[foo�|bar]]</nowiki>\n\n<nowiki>[[foo/.|bar]]</nowiki>\n\n<nowiki>[[foo/.|bar]]</nowiki>\n\n<nowiki>[[foo/..|bar]]</nowiki>\n\n<nowiki>[[foo/..|bar]]</nowiki>\n\n<nowiki>[[foo~~~bar]]</nowiki>\n\n<nowiki>[[foo~~~~bar]]</nowiki>\n\n<nowiki>[[foo>bar]]</nowiki>\n\n<nowiki>[[foo>bar]]</nowiki>\n\n[[foo[bar]]\n\n<nowiki>[[.]]</nowiki>\n\n<nowiki>[[..]]</nowiki>\n\n<nowiki>[[foo././bar]]</nowiki>\n\n<nowiki>[[foo././bar]]</nowiki>\n\n[[foo{bar]]\n\n[[foo}bar]]\n\n[[foo[bar]]\n\n[[foo]bar]]\n\n[[foo<bar]]\n");
add("html2wt", "Disabled subpages", "<a
href=\"/index.php?title=/subpage&action=edit&redlink=1\" class=\"new\"
title=\"/subpage (page does not exist)\">/subpage</a>\n");
add("html2wt", "BUG 561: {{/Subpage}}", "<a
href=\"/index.php?title=Page/Subpage&action=edit&redlink=1\" class=\"new\"
title=\"Page/Subpage (page does not exist)\">Page/Subpage</a>\n");
add("html2wt", "Link to category", "<a
href=\"/wiki/Category:MediaWiki_User%27s_Guide\" title=\"Category:MediaWiki
User's Guide\">Category:MediaWiki User's Guide</a>\n");
@@ -2801,7 +2809,44 @@
add("selser", "Image: bitmap frameless can't be enlarged past original size,
but vector can [0,2,2]",
"[[File:Foobar.jpg|frameless|2000px]]bppalaroia8257b9\n8nwk58vl6r24vx6r\n[[File:Foobar.svg|frameless|2000px]]");
add("selser", "Relative subpage noslash link [4,0,4]",
"u4hge9fbsekd42t9\nunv6ssdm3pzxgvi");
add("selser", "Relative subpage noslash link [2,4,[1]]",
"nrb4v3liuj0mgqfr\n\n[[../../subpage/]]98uzbw2dte8nnrk9\n[[../../subpage]]");
-add("selser", "Parsoid: dot-slash prefixed wikilinks [3,2,2,4,[2]]",
"prj4exfja1ii19k9\nl48gp8hn5yu8fr\n\n[[././bar]]swsx7eap1y1ll3di\n6mw6ybuu6pzoxbt9[[././baz/]]");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [[2],3,1,0,0]",
"5kpe8l5m3o7uv7vi<nowiki>[[./foo]]</nowiki>\n\n<nowiki>[[././bar]]</nowiki>\n\n[[././baz/]]");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [3,2,2,4,[2]]",
"prj4exfja1ii19k9\nl48gp8hn5yu8fr\n\n[[././bar]]swsx7eap1y1ll3di\n6mw6ybuu6pzoxbt9<nowiki>[[././baz/]]</nowiki>");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [[3],3,0,3,[2]]",
"\n[[././bar]]\n\neotloxmdz9bmlsor<nowiki>[[././baz/]]</nowiki>");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [3,3,2,0,1]",
"xrpl1rhhsrsmunmi\n\n[[././bar]]\n\n<nowiki>[[././baz/]]</nowiki>");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [1,4,[3],4,2]",
"<nowiki>[[./foo]]</nowiki>07l5xo1ivk7qfr\n\nnm3unsr4n2s7zaorty8uv1fu6z2gldi\n\n[[././baz/]]");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [2,3,[2],0,[3]]",
"pf36ha91rg6cg14i\n\n[[./foo]]\n\ncrf2jn5s6d3ivn29<nowiki>[[././bar]]</nowiki>\n");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [3,2,0,4,2]",
"uxq8iq5fbpig4x6r\n\n[[././bar]]o1nl09zzx0ofxbt9zu1az8wx3wb138fr\n[[././baz/]]");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [4,0,4,0,2]",
"l3ndqrh3xt4vx6r\nx7069m2mv52ep14i\n86kncwjdffg8pvi\n\n[[././baz/]]");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [1,0,2,0,0]",
"<nowiki>[[./foo]]</nowiki>\n\n2krtfi9xqxbw3ik9\n\n[[././bar]]\n\n[[././baz/]]");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [0,3,[4],0,0]",
"[[./foo]]\n\ndvnhh2uin1wwb3xr\n\n[[././baz/]]");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [2,0,[4],4,2]",
"owx1gb014w265hfr\n\n[[./foo]]\n\ndx6ijp1tc7iafw296ynmbe8kk1fc4n29n59e4o0cvuu15rk9\n\n[[././baz/]]");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [4,2,0,0,3]",
"rt9a8cldl44jwcdixpqe7n6du1k0529\n\n[[././bar]]\n");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [3,0,2,0,1]",
"\nzw9yne4g5m3rf6r\n\n[[././bar]]\n\n<nowiki>[[././baz/]]</nowiki>");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [[3],4,0,0,0]",
"b2u4ngqgo8js8aor\n\n[[././bar]]\n\n[[././baz/]]");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [2,4,3,0,0]",
"pq2rffu6315rk9\n\n[[./foo]]ft16krq1kgvcayvi\n\n[[././baz/]]");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [[4],4,2,2,0]",
"9kb4jp9l5kit3xr8xm8f3q6hc1ve7b9j97yjohg41butyb9\n\n[[././bar]]xncoq7z41a2rcnmi\n\n[[././baz/]]");
+add("selser", "Parsoid: dot-slash prefixed wikilinks [1,2,0,4,1]",
"<nowiki>[[./foo]]</nowiki>5bb54cvwmi6enrk9\n\n[[././bar]]loze1mo55s2rcnmi\n\n<nowiki>[[././baz/]]</nowiki>");
+add("selser", "Render invalid page names as plain text (bug 51090) 5",
"\n[[foo/..|bar]]\n\n\n\n{{echo|foo/..}}|b\n\n]]\n\n[[foo~~~\n\nr]]\n\n[[{{echo\n\noo~~~~bar}}]]\n\n[[foo>bar]]\n\n[\n\n{echo|foo>bar}\n\n]\n\n[[foo[bar]\n\n\n[[.]]\n\n[[..]]\n\n[[foo././ba\n\n]\n\n[[{{echo\n\noo././bar}}\n\n\n\n[[{\n\ncho|fo\n\nbar}}]]\n\n[[{{e\n\no|foo}bar}}]]\n\n\n[{{echo|foo\n\nar}}]]\n\n[[{\n\ncho|foo]bar\n\n]]\n\n[[{{ech\n\nfoo<bar}}]]\n");
+add("selser", "Render invalid page names as plain text (bug 51090)
[0,0,1,3,0,2,0,3,[2],2,0,0,3,3,[4],4,1,2,0,4,0,3,[2],0,3,4,2,0,4,3,3,2,3,0,[2],3,1,2,[3],0,[4]]",
"\n[[foo/..|bar]]\n\n\n\n<nowiki>[[../../foo|bar]]</nowiki>\n\n]]\n\n[[foo~~~e0zbado6wnfgk3xr\n\nr]]\n\n[[{{echo\n\n3vg94m05ybwhr529<nowiki>[[foo/.|bar]]</nowiki>0wvbpxzv8ynl8fr\n\n[[foo>bar]]\n\n[\n\nb8gshewr2l2z9f6reikrolagydeljtt9\n\n<nowiki>[[foo~~~~bar]]</nowiki>1bryc2ryiwv78pvi\n\n[[foo././basy4w02hhj7eng66r\n]\n\n[[{{echo\n\niuabs85j1gjk0529[[foo[bar]]\n\ne1erjxhj65stt9r6uxydjs5szia4i\n\ncho|fo\n\n1zvgalrhc1c680k917sv0fq86vcmcxr\n\nzb7amnet0cprdx6r[[foo}bar]]\n\n[[foo[bar]]emfyyeub1t7w4s4i\n\n2v8ddjvx9aawnrk9\n");
+add("selser", "Render invalid page names as plain text (bug 51090)
[1,4,1,4,0,2,0,0,[2],0,0,3,0,0,3,0,0,2,2,0,4,3,3,0,[3],0,[4],2,[2],0,3,3,0,0,3,0,4,0,[3],3,[3]]",
"<nowiki>[[../../foo|bar]]</nowiki>7urilssfule1xlxr\n\n<nowiki>[[../../foo|bar]]</nowiki>y4wwh9ulz56u5wmi\n\n]]\n\n[[foo~~~rfm7rj0y0eijm7vi\n\nr]]\n\n[[{{echo\n\n2btplj97ihdrt3xr<nowiki>[[foo/.|bar]]</nowiki>\n\n[[foo>bar]]\n\n[\n\n{echo|foo>bar}\n\n\n[[.]]\n\n[[..]]jv2b8jsn437hkt9\nzkzwoxmds1tw3ik9\n[[foo././ba\n\n96aydoii4doswcdi\n\nq7m73560x4a0dx6r3hhk2xd9tj8rrudi\n\ne0185ymsj9ssjor<nowiki>[[foo././bar]]</nowiki>\n\n[{{echo|foo\n\npjcsg4r87hlivn29\n");
+add("selser", "Render invalid page names as plain text (bug 51090)
[2,2,[3],3,0,0,0,0,[3],0,[2],0,[2],4,1,4,1,0,[2],0,0,0,0,0,4,4,[4],0,0,0,0,0,0,2,[2],0,1,0,0,2,2]",
"pwgl4v8r9af6flxr\n\n\n[[foo/..|bar]]\n\nhtc0s57znl9v0a4i\n\n]]\n\n[[foo~~~\n\nr]]\n\n[[{{echo\n\nqp9xa5oi84rvygb9<nowiki>[[foo/..|bar]]</nowiki>\n\n3w87j0tymzvkj4i<nowiki>[[foo/..|bar]]</nowiki>0i86o3c77p7m0a4i\n\n<nowiki>[[foo~~~bar]]</nowiki>oje7j1ciai7ctyb9\n\n<nowiki>[[foo~~~~bar]]</nowiki>\n\nt0yzmu1s42ikke29<nowiki>[[foo>bar]]</nowiki>\n\n]\n\n[[{{echo\n\noo././bar}}\n\ngz3znhd93jsdzpvid36y4kg5ogno2yb9\n\n1s0jnvsj6lgnwmi\n\nbar}}]]\n\n[[{{e\n\no|foo}bar}}]]\n\n\n[{{echo|fooe0o07g68lh3kgldi\n\nbptys96emyqa1yvi[[foo}bar]]\n\n[[foo[bar]]\n\n]]\n\n[[{{echdbzmdqvi9tzz1tt9\nb6lvc7k27oh9qkt9\nfoo<bar}}]]");
+add("selser", "Render invalid page names as plain text (bug 51090)
[0,3,2,0,[4],3,1,3,4,4,[3],0,3,0,2,2,2,0,1,0,0,2,4,0,0,4,1,0,0,4,0,0,3,0,0,0,4,4,[3],3,4]",
"\n[[foo/..|bar]]\n\ngkfu6gduolqmpldi\n{{echo|foo/..}}|b\n\nltu7j69j6gu2qpvi\n\n<nowiki>[[foo/.|bar]]</nowiki>rfl3aml854620529potcwj772qp5vcxr\n\nh9zar0qhrxczyqfr\n\n]\n\n[[foo[bar]la2wcjog8d26gvi\nb5fh2jb6o672e29\n\n[[.]]\n\n[[..]]\n\n<nowiki>[[foo>bar]]</nowiki>\n\n]\n\n[[{{echovwcu6lcjxteuq5mi\n8hyel5spuae89f6r\n\n\n\n[[{pw361peuo2c8r529\n<nowiki>[[..]]</nowiki>\n\nbar}}]]\n\n[[{{epnxikv32kz8pk3xr\no|foo}bar}}]]\n\n\nar}}]]\n\n[[{\n\nije1zkj2dwws714ico8dlg2igff7p66r\n\ns6yznqm87vavpldi");
+add("selser", "Render invalid page names as plain text (bug 51090)
[[2],0,[4],2,[2],0,0,4,0,4,3,0,3,2,4,2,3,2,2,3,3,4,[3],0,0,0,0,0,3,0,1,2,[4],2,[2],0,3,0,[3],0,4]",
"8sctlarbskfswcdi<nowiki>[[../../foo|bar]]</nowiki>\n\nfxzu21euibpgb9k3i4gi7d5yst6gvi\n\n7zyih9glwodmquxr<nowiki>[[foo�|bar]]</nowiki>\n\nr]]\n\n[[{{echo3e27dqprn1k2zkt9\noo~~~~bar}}]]xof8d4gk7hw7b9\n0mmywkj9j05dn29\nyxt9x38zs7om9529os0p9dnd5fxn7b9\nyvu3x62net2csor\nm36606eccp611yvi\n[[foo././ba6t2b20twgiafw29\n\n\n\n[[{\n\ncho|fo\n\n<nowiki>[[foo././bar]]</nowiki>1zld5gpry17cik9\n\nkxcxk6dvktg4aemi1bns25ewyihk6gvi\n\n2tr7gzuhycwstt9[[foo}bar]]\n\nrbxnhu2s54s4i");
+add("selser", "Render invalid page names as plain text (bug 51090)
[0,0,4,0,0,0,3,3,3,2,[2],3,[4],4,0,0,0,0,0,2,[2],0,1,0,2,4,[4],3,[3],0,0,0,2,0,2,4,2,0,0,3,0]",
"\n[[foo/..|bar]]\n\n\n\n5cifaj4uowyaatt9\n\n]]\n\n[[foo~~~\n\no43104n1a5s9vn29\n\n9p52bzvdog30udi<nowiki>[[foo/..|bar]]</nowiki>\n\ng4zbkm2h3pfzuxrf31gw2tgxisk0529\n\n]\n\n[[foo[bar]\n\n\n[[.]]\n\n[[..]]\n\n[[foo././basahnrp886dqb0529\n\nibas7cukqk6gvi<nowiki>[[foo>bar]]</nowiki>\n\n[[foo[bar]]\n\n92o9sn8me43x47vi\n\n\n\n[[{1jvo6r919lunxw29\n9xub40wybrorbe29\n\no|foo}bar}}]]\n\n\nqe15xyde6c0daemi\n\n[{{echo|foo\n\nffpxjse9bv5cdi\n\nar}}]]\n\n[[{uh3lxz8qg58kt99j2yay2hbkyphkt9\ncho|foo]bar\n\n]]\n\n[[{{ech\n\nfoo<bar}}]]");
+add("selser", "Render invalid page names as plain text (bug 51090)
[[3],0,2,0,0,4,1,2,[3],0,[3],4,3,4,4,0,3,4,[3],3,0,0,3,0,1,4,4,2,0,0,3,4,2,3,3,0,3,0,[3],0,4]",
"\nf5t0h4865mrysyvi\n\n{{echo|foo/..}}|b\n\n]]\n\n[[foo~~~kjqm3oyl5hoajor\n<nowiki>[[foo/.|bar]]</nowiki>je0c4bj98zqqto6r\n\n9d86dzdmehmvaemi7vogflzy6tcpu8frjja80vvspd8wipb9\naudqhwo5j7tlnmi\n\n]\n\n[[{{echo\n\n<nowiki>[[.]]</nowiki>cj101i9r4nnlv7vi7d4sjdh0m5vlhaor8ugig4a7m7r885mi\n\nbar}}]]\n\n[[{{e\n\ncdyztfcjh9jgiudie5up39mwnhf1dcxr\n\n[{{echo|foo\n\ni8mw56pf0hi1kyb9");
+add("selser", "Render invalid page names as plain text (bug 51090)
[[4],4,0,2,1,0,0,2,0,0,[4],0,1,4,3,3,0,3,0,0,[3],2,0,0,1,0,[3],0,1,0,1,2,0,0,1,0,[3],0,0,4,3]",
"gdbwc8lixn56d2t97uek4wunepom9529\n\n{{echo|foo/..}}|byy6v90hkb9vbo6r\n\n<nowiki>[[foo�|bar]]</nowiki>\n\nr]]\n\n[[{{echov42fs20sksz1714i\n\noo~~~~bar}}]]\n\nzc7oevvf00ey7gb9\n\n<nowiki>[[foo/..|bar]]</nowiki>kl6fpkj19gv9ggb9\n\n\n[[.]]\n\n[[..]]\n\n[[foo././ba\n\n5xie10c40i4tpgb9\n\noo././bar}}\n\n<nowiki>[[.]]</nowiki>\n\n<nowiki>[[foo././bar]]</nowiki>\n\n<nowiki>[[foo././bar]]</nowiki>z4sz7bx1kqu59udi\n\n[{{echo|foo\n\n[[foo}bar]]\n\n]]\n\n[[{{echdw26805picedbo6r");
+add("selser", "Render invalid page names as plain text (bug 51090)
[0,0,2,0,4,0,3,0,0,2,[4],2,1,0,2,0,[4],0,2,0,0,0,1,0,2,0,4,3,4,0,3,0,2,0,2,3,[2],3,[3],0,0]",
"\n[[foo/..|bar]]\n\n\n\nff48sg2pipqwu3di\n\n{{echo|foo/..}}|b\n\n2wti57hxrrxxn7b9\n\noo~~~~bar}}]]8m817psg956irudi\n\nb047ouf8wjy5vcxr9rpze92yl4lmzpvi\n\n<nowiki>[[foo/..|bar]]</nowiki>\n\ntfqzx5yk1mgf1or\n\n]\n\n[[foo[bar]\n\nf2dw6gnwowhwu3di\n\n3z2n69yfoqhhncdi\n\n[[foo././ba\n\n]\n\n[[{{echo\n\n[[foo[bar]]\n\nyrqtw149jnn4s4i\n\n\n\n[[{\n\nxoyavzyzvbzkt9g4kcs10m0bdcmcxr\nh55amjc51yusdcxr\n\n[{{echo|foo\n\nmf6xpmcrbxtg9zfr\n\nar}}]]\n\n[[{\n\njltl7oyb8adcxr[[foo[bar]]\n\nfoo<bar}}]]");
+add("selser", "Render invalid page names as plain text (bug 51090)
[[3],4,[4],0,2,2,2,3,[3],4,3,0,0,3,3,2,0,3,3,3,1,2,4,4,4,0,4,2,0,0,2,0,3,0,4,4,0,0,2,0,0]",
"8o3wd9we259g4x6r\n\n8kgrm3jts1r1kyb9\n\ninkha4opklwvobt9\n\n]]\n\n[[foo~~~iwcrogwgu7q4cxr\nqc04g9cutzqia4i\nr]]\n\n[[{{echo\n\ns1l3zkyawl3gcik9\n\n{echo|foo>bar}cm4t4m3ihmhrggb9\n\n\n[[.]]\n\n[[..]]\n\n<nowiki>[[foo>bar]]</nowiki>o75dgpzi8nn1xlxr\ntdbg9o140yiafw2977av9txvv6b9be29cthk3cq1nxt7qfr\nrjg7h4p9r10b2o6r9slou0ytoi529\n\nbar}}]]\n\n[[{{e\n\nsu9dm83rxp3nmi\n\no|foo}bar}}]]\n\n\nbfz3a2bktd9rudiuzfbgyg8ba3v7vi\n\ncho|foo]bar\n\nc98u0f8nrzqfflxr\n\n]]\n\n[[{{ech\n\nfoo<bar}}]]");
+add("selser", "Render invalid page names as plain text (bug 51090)
[[4],3,0,2,0,0,1,0,[4],0,[2],0,2,3,1,3,3,0,1,0,1,3,0,2,[2],0,1,4,0,0,2,0,0,2,1,0,3,0,3,0,[4]]",
"a8exokpi7bricnmi\n\n{{echo|foo/..}}|byjmnkmy2satt9\n\n]]\n\n[[foo~~~\n\n<nowiki>[[foo/.|bar]]</nowiki>\n\nrksixalimh392j4i\n\nxmch4v09b9m2huxr<nowiki>[[foo/..|bar]]</nowiki>\n\njkogea1tsw6ogvi\n\n{echo|foo>bar}\n\n<nowiki>[[foo~~~bar]]</nowiki>\n\n<nowiki>[[foo>bar]]</nowiki>\n\n<nowiki>[[foo>bar]]</nowiki>\n\noo././bar}}44aqmtnbbq2dquxr\n\noearou2tsssxxbt9<nowiki>[[.]]</nowiki>\n\n<nowiki>[[..]]</nowiki>hk4z7z331hiftj4i\n\nbar}}]]\n\n[[{{e\n\nnq4cxu5j0chxgvi\n\no|foo}bar}}]]\n\n\n[{{echo|foo95ir2secnllyp66r\n\n[[foo}bar]]\n\n8yn84ci09dzbmx6r\n");
+add("selser", "Render invalid page names as plain text (bug 51090)
[4,4,1,0,4,3,1,3,[2],0,3,3,0,3,3,0,2,0,[3],0,1,3,4,0,0,0,1,2,2,2,1,2,0,3,[4],4,0,2,4,3,0]",
"y863o7lvr52ymn29u9plu6pagp919k9\n\n<nowiki>[[../../foo|bar]]</nowiki>\n\nqttp1hxp1fj8xgvi\n\n<nowiki>[[foo/.|bar]]</nowiki>\n\n0cmwh72p4arftj4i<nowiki>[[foo/.|bar]]</nowiki>\n\n{echo|foo>bar}\n\n3px1two6sv9xjemi\n\n\n[[.]]\n\n[[..]]\n\n<nowiki>[[foo>bar]]</nowiki>r8nddvghrsqestt9\n\n\n\n[[{\n\n<nowiki>[[..]]</nowiki>t3ant5zlec9885mi\ndw4c1trt8p55qaor\n\nbar}}]]\n\n[[{{etqqkigtgomfjq0k9\n\n<nowiki>[[foo././bar]]</nowiki>tls0l5mq3j1c3di\n\n[{{echo|foo\n\ngooyqclo758kt991x0tw39nhkqehfr\n\ncho|foo]barptvua8dy6kgctyb9\nl52dg2e5cq4wvcxr\nfoo<bar}}]]");
+add("selser", "Render invalid page names as plain text (bug 51090)
[4,3,4,0,4,0,0,0,0,0,3,4,0,0,1,0,[2],3,[2],0,[4],2,2,0,2,0,3,4,1,2,0,0,1,0,3,0,[2],0,[4],0,0]",
"icl2xhoqzjzcl3divou5nca1ykacerk9\nk0cvj3kgfro7ds4i\n\nr]]\n\n[[{{echo\n\noo~~~~bar}}]]\n\nmonhvrvqy09vygb9\n\n{echo|foo>bar}\n\n<nowiki>[[foo~~~bar]]</nowiki>\n\nwla0gxwzmr71fw29<nowiki>[[foo~~~~bar]]</nowiki>\n\n9udid6w3v2cvj9k9<nowiki>[[foo>bar]]</nowiki>\n\nr8wabjr4m9y919k9v1qyytj885g3c8fr\nzukzijw8vrall3di\n\noo././bar}}\n\n1rrq8c41drpjsjor\n\n\n\n[[{\n\nnlxblzm0f5i5dn29\n\n<nowiki>[[foo././bar]]</nowiki>02i5agbbdanvobt9\n\no|foo}bar}}]]\n\n\n[[foo{bar]]\n\n6mm8b1qjvu1k0529[[foo[bar]]\n\ndvxmggho5sal9pb9\n\nfoo<bar}}]]");
+add("selser", "Render invalid page names as plain text (bug 51090)
[0,0,[2],3,2,0,0,4,1,3,0,0,3,4,0,0,3,0,2,0,0,0,0,0,3,0,[3],0,2,3,0,0,2,4,[4],0,2,4,3,0,3]",
"\n[[foo/..|bar]]\n\n\n\nfyvix8boaud6lxr<nowiki>[[../../foo|bar]]</nowiki>1uu7nk0ev1q3erk9\n\n]]\n\n[[foo~~~\n\nr]]\n\n[[{{echo4xb2zu4vmlipy14i\n<nowiki>[[foo/.|bar]]</nowiki>\n\n[[foo>bar]]\n\n[\n\n488xmwwga5b6s9k9\n\n]\n\n[[foo[bar]\n\nj5eidr9vuukdquxr\n\n[[foo././ba\n\n]\n\n[[{{echo\n\noo././bar}}\n\ndenvgx9vlddq85mi\n\nbar}}]]\n\n[[{{e\n\no|foo}bar}}]]\n\n\n7zrpekgbpi9q9f6r\n\n[{{echo|foopdjv4zf3k8xv42t9\n95h3lkdjg8ir7ldi\n\ntnkd21do279cnmi\n\ncho|foo]barlin70wz2hz146lxr\n");
+add("selser", "Render invalid page names as plain text (bug 51090)
[4,2,4,4,3,0,0,4,0,0,2,3,3,0,[4],4,[4],3,3,4,1,2,1,2,2,4,[2],0,1,0,[4],2,0,4,0,3,2,3,[3],2,3]",
"iuffrulx1i5xko6rxkdde9qmg46uhaor\niqnxxwrg81bawcdi6fouan5srzkqehfr\n\nr]]\n\n[[{{echom74h6tlp7d3x47vi\noo~~~~bar}}]]\n\nrz21gmdhreunb3xr\n\n[[foo>bar]]\n\n[\n\nyi1urxnh38w4gqfrzvx47ynz87eklnmi\n\nwamvu854d9hvkj4ij5hmkqupp2mlsor\n\n<nowiki>[[foo>bar]]</nowiki>sh0tua70d9ozuxr\n\n[[foo[bar]]bgr7livpv5wb3xr\n48c0xfqz5kd42t9\n\n\n\n[[{j0uvttblelbzw7b9\nirwx1e9ul3wpzaor<nowiki>[[..]]</nowiki>\n\n<nowiki>[[foo././bar]]</nowiki>\n\n5gog0djj3fqg2e291txkrk4h7sgd5cdi\n\n[{{echo|foo0zgx057db30afw29\nar}}]]\n\n[[{062z5td6fphw7b9\ncho|foo]bar\n\n0oq4izk3djs2lnmi\n");
+add("selser", "Render invalid page names as plain text (bug 51090)
[1,0,1,4,[4],0,0,3,[4],0,[3],3,1,2,0,0,2,0,[4],0,2,4,1,3,1,0,3,4,3,3,[3],0,2,3,0,2,0,2,3,3,0]",
"<nowiki>[[../../foo|bar]]</nowiki>\n\n<nowiki>[[../../foo|bar]]</nowiki>amjen9oiv1pds4i\n\njvwxqau1wy9l766r\n\nr]]\n\n[[{{echo\n\nvclf3xep77y3z0k9\n\n<nowiki>[[foo/..|bar]]</nowiki>o6a342rtqpvi\n\n]\n\n[[foo[bar]\n\nvnzafxre6kqbmx6r\n\n\n[[.]]\n\n[[..]]\n\na1aw08ht0lsj1yvi\n\np9f2r5uy5y7gb9\n\n]\n\n[[{{echot91eybtftvl07ldi\n[[foo[bar]]\n\n<nowiki>[[.]]</nowiki>\n\n52d5qgxnj5bwewmi\n\ndm9kt4aa7iqtcsor\n\n[{{echo|foo\n\nar}}]]\n\n[[{46zpm57p7kem6lxr\n\ncho|foo]bar78j7q2fb4f6wp14i\n\nfoo<bar}}]]");
+add("selser", "Render invalid page names as plain text (bug 51090)
[4,0,[4],0,2,2,[4],4,1,2,4,0,[2],0,0,4,4,0,3,0,0,3,0,3,2,0,3,0,[4],0,3,2,4,4,0,4,[3],0,0,3,3]",
"vv8tb99g6m20rudi\n\nthyzb5llxhx8byb9\n\n170xfo9mazsyk3xr\n\n]]\n\n[[foo~~~82a3urjl4mpfogvi\n\n9no7cugeonf561or5jj2topgnr3vj9k9\n\n<nowiki>[[foo/.|bar]]</nowiki>zsh2d3o595tawcdi\n6ogkffdf3qyta9k9\n\ni6yrtu2sb50wl8fr<nowiki>[[foo/..|bar]]</nowiki>\n\n]\n\n[[foo[bar]py0nvz8azimxtj4iajy7v7h1poa5g66r\n\n]\n\n[[{{echo\n\noo././bar}}xcbio25o34pwrk9\n\n\n[[{\n\n2s3bgij9cjvy4x6r\n\ncishs6hg01603sor\n619xslfgg268byb9ntblvz37dnuq5mi\n\nar}}]]\n\n[[{ygcm2ojfm51p2e29\n\n]]\n\n[[{{ech\n");
+add("selser", "Render invalid page names as plain text (bug 51090)
[2,4,3,3,1,4,[4],0,2,0,4,4,0,0,4,0,[4],3,1,4,2,0,4,0,1,4,[4],2,4,4,[3],3,0,4,0,0,4,0,3,0,[4]]",
"x280lbt0x9smunmi\n\n\n[[foo/..|bar]]\n\n9zekc2ruir0h33di\n<nowiki>[[foo�|bar]]</nowiki>z38bftf1fmmo0f6r\n\nvgjwhq8q4xkzkt9\n\nlvx1mn868np6tj4i\n\noo~~~~bar}}]]\n\nkgdb4uyqy9cnmijhewslblsfhto6r\n\n{echo|foo>bar}\n\noyfg768zovjqncdi\n\n1hgm0kr7ft9vbo6r\n\n<nowiki>[[foo>bar]]</nowiki>vuw8vztmcobf0f6rf4u34ieredk7qfr\n\n]\n\n[[{{echo\n\nlzdv4ftawkdtpgb9\n\n<nowiki>[[.]]</nowiki>r12dhqben91wcdi\n\nh5uro5zednlgzaorseeiwjzsc4sra4i\nmtj2yqbwue1xlxrej6lqlhw781o47vi\n\n[{{echo|foodji3gmejejh2rzfr\nar}}]]\n\n[[{\n\nysys23ywnah5mi\n\nooks78cajqvvx6r\n");
+add("selser", "Render invalid page names as plain text (bug 51090)
[2,0,3,4,[3],4,1,0,[3],4,4,0,0,0,[4],0,0,0,0,0,0,0,[2],0,0,3,3,3,[3],0,[4],0,3,0,3,3,[4],2,2,4,3]",
"uy7lbslcu8mvaemi\n\n\n[[foo/..|bar]]\n\n\n\nfrlqjpic3yi1wcdi\n\n3zwm59p9lbz6ko6r\n\n<nowiki>[[foo/.|bar]]</nowiki>\n\nkpqrtwyj0s5rk9l6ebnhsd0fn4gqfr\n\n{echo|foo>bar}\n\nj7ddm4nxph6ko6r\n\n\n[[.]]\n\n[[..]]\n\n[[foo././ba\n\n]\n\n[[{{echo\n\nwo79zy8miypeqaor[[foo[bar]]\n\n\n\n[[{\n\nerwkoskc35b9ms4i\n\nrwhssc2xvrkke29zox17z98hoetgldi\nc64xri9n3oywrk9\n\n]]\n\n[[{{echmuq0xf4mjp1oflxr");
+add("selser", "Render invalid page names as plain text (bug 51090)
[2,0,[2],0,4,4,[4],0,0,0,2,2,4,0,1,4,0,0,[2],3,2,2,[4],0,[4],4,0,0,4,4,0,0,0,0,2,3,3,0,4,3,4]",
"ixtw0uq17iqtcsor\n\n\n[[foo/..|bar]]\n\n\n\ncjgyt6cnj124kj4i<nowiki>[[../../foo|bar]]</nowiki>\n\n4i3f1qev8b5u3dit26yvjmagszl4n29\n\n3vx6jfw5gbvs4i\n\noo~~~~bar}}]]\n\n3vz7g6pd5lzhncdi\n\n[[foo>bar]]\n\n[o80po20hrys98uxr\nb4ct22zgpheel8fr\n\n<nowiki>[[foo~~~bar]]</nowiki>behvblz3ysdims4i\n\n\n[[.]]\n\n[[..]]\n\nr2gd9u4bfdlblnmi<nowiki>[[foo>bar]]</nowiki>wftxo8hvupxskyb9\n\n]\n\n[[{{echox0h7uu8zheg0hpvi\n\nwxguyhppjrau4n29\n\nhiqt68ga6s1qbyb9nv0qzbragqhvvx6r\n\ncho|fo\n\nucsq5lyttkqvkj4iw9wn1kf3o4aq0k9\n\no|foo}bar}}]]\n\n\n[{{echo|foo\n\n06xil8y8g7wopqfr\n\nar}}]]\n\n[[{\n\ndc5na1v3qvyrpb988lf7u125eyrdx6r");
add("selser", "Category / paragraph interactions
[[0,3,2],0,2,4,[3,2,0],0,[2],3,0,[3],0,[3,3,4,1,4,2,3],0,3,4,0,4,3,0,0,2,0,0,0]",
"Foo 83zrad4tpxxkcsor Bar\n\nysekf8brayr885mi\n\nFoo
[[Category:Baz]]\nBarduknjpcnvnyzxgvi\nhroyapi5paqhncdi[[Category:Baz]]\nBar\n\nmsiv1cjc1q8e61orFoo[[Category:Baz]]
\n\nljrvpzob03tedn29[[Category:Baz]]6bqrn9ug03npcik95jcarnywu55klnmi[[Category:Baz]]\n\nik3u2lqitfomkj4i[[Category:Baz]]n8wwykwa78f72e29\n\n[[Category:Baz]]9dl89xg0l57phkt9\n
{{echo|[[Category:Baz]]}}\n[[Category:Baz]]");
add("selser", "Category / paragraph interactions
[4,0,0,0,[4,1,0],3,3,0,0,0,2,[2,0,0,1,3,0,0],0,1,3,0,2,0,2,0,0,0,4,2]",
"y2ksxygpidn7y14i\n\nFoo
[[Category:Baz]]\nBar\n\ntqcbbea7bmiy66r[[Category:Baz]]\nBar\n[[Category:Baz]]
Bar\nc42dqedyb3u6usor\n\ndjmvd61k80kymn29Foo\n[[Category:Baz]]\n[[Category:Baz]][[Category:Baz]]\nBar\n\n[[Category:Baz]][[Category:Baz]]vyv3u18bgs4z33di\n[[Category:Baz]]e98vfkx1eqld6lxr\n\n[[Category:Baz]]\n
{{echo|[[Category:Baz]]}}viznyhgcd9muz0k9d830mwe1qg1oflxr[[Category:Baz]]");
add("selser", "Category / paragraph interactions
[[0,2,3],2,[0,1,0],0,0,4,0,0,0,[3],3,[0,0,2,4,0,0,0],0,0,4,2,0,0,2,0,0,0,4,4]",
"Foo 2e5blsvad5n1xlxr[[Category:Baz]]qxn1v3cao8o20529\n\nFoo
[[Category:Baz]]\nBar\n\nFoo\n[[Category:Baz]]\nBarn20mledkhcfecdi\nFoo\n[[Category:Baz]]
\nFoo\n[[Category:Baz]]xfsvz5vjd7lj714i\n
ginj795atqxpf1or\n[[Category:Baz]]\nBar\n\n[[Category:Baz]]w3utjntvuslwhfrmjmq99fkdyc1h5mi[[Category:Baz]]\n[[Category:Baz]]wh679q32j2d42t9\n\n[[Category:Baz]]\n
{{echo|[[Category:Baz]]}}5ewmt0c1j7b3ayvi9yike5nql0daemi");
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index ebd391d..4785913 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -11288,24 +11288,119 @@
<p><a rel="mw:WikiLink"
href="Subpage_test/1/2/subpage">Subpage_test/1/2/subpage</a></p>
!! end
-# TODO: make this PHP-parser compatible!
!! test
Parsoid: dot-slash prefixed wikilinks
-!! options
-parsoid=wt2wt,wt2html,html2html
!! wikitext
[[./foo]]
[[././bar]]
[[././baz/]]
-!! html
-<p><a rel="mw:WikiLink" href="./Foo">foo</a></p>
-<p><a rel="mw:WikiLink" href="./Bar">bar</a></p>
-<p><a rel="mw:WikiLink" href="./Baz/">baz/</a></p>
+!! html/php
+<p>[[./foo]]
+</p><p>[[././bar]]
+</p><p>[[././baz/]]
+</p>
+!! html/parsoid
+<p>[[./foo]]
+</p><p>[[././bar]]
+</p><p>[[././baz/]]
+</p>
!! end
!! test
+Render invalid page names as plain text (bug 51090)
+!! wikitext
+[[../../foo|bar]]
+
+[[{{echo|../../foo}}|bar]]
+
+[[foo�|bar]]
+
+[[foo/.|bar]]
+
+[[{{echo|foo/.}}|bar]]
+
+[[foo/..|bar]]
+
+[[{{echo|foo/..}}|bar]]
+
+[[foo~~~bar]]
+
+[[{{echo|foo~~~~bar}}]]
+
+[[foo>bar]]
+
+[[{{echo|foo>bar}}]]
+
+[[foo[bar]]
+
+[[.]]
+
+[[..]]
+
+[[foo././bar]]
+
+[[{{echo|foo././bar}}]]
+
+[[{{echo|foo{bar}}]]
+
+[[{{echo|foo}bar}}]]
+
+[[{{echo|foo[bar}}]]
+
+[[{{echo|foo]bar}}]]
+
+[[{{echo|foo<bar}}]]
+!!html/php
+<p>[[../../foo|bar]]
+</p><p>[[../../foo|bar]]
+</p><p>[[foo�|bar]]
+</p><p>[[foo/.|bar]]
+</p><p>[[foo/.|bar]]
+</p><p>[[foo/..|bar]]
+</p><p>[[foo/..|bar]]
+</p><p>[[foo~~~bar]]
+</p><p>[[foo~~~~bar]]
+</p><p>[[foo>bar]]
+</p><p>[[foo>bar]]
+</p><p>[[foo[bar]]
+</p><p>[[.]]
+</p><p>[[..]]
+</p><p>[[foo././bar]]
+</p><p>[[foo././bar]]
+</p><p>[[foo{bar]]
+</p><p>[[foo}bar]]
+</p><p>[[foo[bar]]
+</p><p>[[foo]bar]]
+</p><p>[[foo<bar]]
+</p>
+!!html/parsoid
+<p>[[../../foo|bar]]
+</p><p>[[../../foo|bar]]
+</p><p>[[foo�|bar]]
+</p><p>[[foo/.|bar]]
+</p><p>[[foo/.|bar]]
+</p><p>[[foo/..|bar]]
+</p><p>[[foo/..|bar]]
+</p><p>[[foo~~~bar]]
+</p><p>[[foo~~~~bar]]
+</p><p>[[foo>bar]]
+</p><p>[[foo>bar]]
+</p><p>[[foo[bar]]
+</p><p>[[.]]
+</p><p>[[..]]
+</p><p>[[foo././bar]]
+</p><p>[[foo././bar]]
+</p><p>[[foo{bar]]
+</p><p>[[foo}bar]]
+</p><p>[[foo[bar]]
+</p><p>[[foo]bar]]
+</p><p>[[foo<bar]]
+</p>
+!!end
+
+!! test
Disabled subpages
!! wikitext
[[/subpage]]
--
To view, visit https://gerrit.wikimedia.org/r/121658
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I04507a03b5082a0e801df3eb107e5f3127a58693
Gerrit-PatchSet: 32
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Hardikj <[email protected]>
Gerrit-Reviewer: Arlolra <[email protected]>
Gerrit-Reviewer: Cscott <[email protected]>
Gerrit-Reviewer: GWicke <[email protected]>
Gerrit-Reviewer: Hardikj <[email protected]>
Gerrit-Reviewer: Subramanya Sastry <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits