jenkins-bot has submitted this change and it was merged.

Change subject: Open p-tags after skipping over sol-transparent tags
......................................................................


Open p-tags after skipping over sol-transparent tags

* Added a new parser test.
* Looks like 2 selser tests are "passing".
* Other wt2html changes for failing tests seem reasonable.
* Fixes problem reported in Bug 67554.

Bug: 67554

Change-Id: Ifdf22f6380b2d1883e0fcbd7222aef692f5c4a67
---
M lib/ext.core.ParagraphWrapper.js
M tests/parserTests-blacklist.js
M tests/parserTests.txt
3 files changed, 55 insertions(+), 19 deletions(-)

Approvals:
  Arlolra: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/ext.core.ParagraphWrapper.js b/lib/ext.core.ParagraphWrapper.js
index ae8ed9d..f908756 100644
--- a/lib/ext.core.ParagraphWrapper.js
+++ b/lib/ext.core.ParagraphWrapper.js
@@ -169,6 +169,35 @@
        return "";
 };
 
+ParagraphWrapper.prototype.openPTag = function(out) {
+       if ( !this.hasOpenPTag ) {
+               // Be careful not to expand template ranges unnecessarily.
+               // Look for open markers before starting a p-tag.
+               for ( var i = 0; i < out.length; i++ ) {
+                       var t = out[i];
+                       if ( t.name === "meta" ) {
+                               var typeOf = t.getAttribute("typeof");
+                               if ( /^mw:Transclusion$/.test(typeOf) ) {
+                                       // We hit a start tag and everything 
before it is sol-transparent.
+                                       break;
+                               } else if ( /^mw:Transclusion/.test(typeOf) ) {
+                                       // End tag. All tokens before this are 
sol-transparent.
+                                       // Let leave them all out of the 
p-wrapping.
+                                       i += 1;
+                                       break;
+                               }
+                       }
+                       // Not a transclusion meta; Check for 
nl/sol-transparent tokens
+                       // and leave them out of the p-wrapping.
+                       if ( !Util.isSolTransparent(t) && t.constructor !== 
NlTk ) {
+                               break;
+                       }
+               }
+               out.splice( i, 0, new TagTk('p') );
+               this.hasOpenPTag = true;
+       }
+};
+
 ParagraphWrapper.prototype.closeOpenPTag = function(out) {
        if ( this.hasOpenPTag ) {
                // Be careful not to expand template ranges unnecessarily.
@@ -256,8 +285,7 @@
                } else if (!this.hasOpenPTag && l.hasWrappableTokens) {
                        // If we dont have an open p-tag,
                        // and this line didn't have a block token, start a 
p-tag.
-                       l.tokens.unshift(new TagTk('p'));
-                       this.hasOpenPTag = true;
+                       this.openPTag(l.tokens);
                }
        }
 
diff --git a/tests/parserTests-blacklist.js b/tests/parserTests-blacklist.js
index 46d89c1..6eb2522 100644
--- a/tests/parserTests-blacklist.js
+++ b/tests/parserTests-blacklist.js
@@ -113,7 +113,7 @@
 add("wt2html", "<onlyinclude> and <includeonly> being included", "<p 
about=\"#mwt1\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"dsr\":[0,13,0,0],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"Includes3\",\"href\":\"./Template:Includes3\"},\"params\":{},\"i\":0}}]}'>Foo<meta
 typeof=\"mw:Includes/OnlyInclude/End\" data-parsoid='{\"src\":\"\"}'/></p>");
 add("wt2html", "<includeonly> and <noinclude> on a page", "<p 
data-parsoid='{\"dsr\":[0,17,0,0]}'>Foo<meta typeof=\"mw:Includes/NoInclude\" 
data-parsoid='{\"src\":\"&lt;noinclude>\",\"dsr\":[3,14,null,null]}'/>zar</p><meta
 typeof=\"mw:Includes/NoInclude/End\" 
data-parsoid='{\"src\":\"&lt;/noinclude>\",\"dsr\":[17,29,null,null]}'/><meta 
typeof=\"mw:Includes/IncludeOnly\" 
data-parsoid='{\"src\":\"&lt;includeonly>bar&lt;/includeonly>\",\"dsr\":[29,59,null,null]}'/><meta
 typeof=\"mw:Includes/IncludeOnly/End\" 
data-parsoid='{\"src\":\"\",\"dsr\":[59,59,null,null]}'/>");
 add("wt2html", "Un-closed <noinclude>", "<meta 
typeof=\"mw:Includes/NoInclude\" 
data-parsoid='{\"src\":\"&lt;noinclude>\",\"dsr\":[0,11,null,null]}'/>");
-add("wt2html", "<onlyinclude> on a page", "<p 
data-parsoid='{\"dsr\":[0,33,0,0]}'><meta typeof=\"mw:Includes/OnlyInclude\" 
data-parsoid='{\"src\":\"&lt;onlyinclude>\",\"dsr\":[0,13,null,null]}'/>Foo<meta
 typeof=\"mw:Includes/OnlyInclude/End\" 
data-parsoid='{\"src\":\"&lt;/onlyinclude>\",\"dsr\":[16,30,null,null]}'/>bar</p>");
+add("wt2html", "<onlyinclude> on a page", "<meta 
typeof=\"mw:Includes/OnlyInclude\" 
data-parsoid='{\"src\":\"&lt;onlyinclude>\",\"dsr\":[0,13,null,null]}'/><p 
data-parsoid='{\"dsr\":[13,33,0,0]}'>Foo<meta 
typeof=\"mw:Includes/OnlyInclude/End\" 
data-parsoid='{\"src\":\"&lt;/onlyinclude>\",\"dsr\":[16,30,null,null]}'/>bar</p>");
 add("wt2html", "Un-closed <onlyinclude>", "<meta 
typeof=\"mw:Includes/OnlyInclude\" 
data-parsoid='{\"src\":\"&lt;onlyinclude>\",\"dsr\":[0,13,null,null]}'/>");
 add("wt2html", "Self-closed noinclude, includeonly, onlyinclude tags", "<meta 
typeof=\"mw:Includes/NoInclude\" data-parsoid='{\"src\":\"&lt;noinclude 
/>\",\"dsr\":[0,13,null,null]}'/>\n<meta typeof=\"mw:Includes/IncludeOnly\" 
data-parsoid='{\"src\":\"&lt;includeonly 
/>\",\"dsr\":[14,29,null,null]}'/>\n<meta typeof=\"mw:Includes/OnlyInclude\" 
data-parsoid='{\"src\":\"&lt;onlyinclude />\",\"dsr\":[30,45,null,null]}'/>");
 add("wt2html", "Unbalanced includeonly and noinclude tags", "<table 
data-parsoid='{\"dsr\":[0,107,2,2]}'>\n<tbody 
data-parsoid='{\"dsr\":[3,105,0,0]}'><tr 
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[3,104,0,0]}'><td
 
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[3,17,1,0]}'>a&lt;/noinclude></td>\n<td
 
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[18,44,1,0]}'>b&lt;/noinclude>&lt;/noinclude></td>\n<td
 
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[45,73,1,0]}'>c&lt;/noinclude>&lt;/includeonly></td>\n<td
 
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[74,104,1,0]}'>d&lt;/includeonly>&lt;/includeonly></td></tr>\n</tbody></table>");
@@ -243,7 +243,7 @@
 add("wt2html", "Fuzz testing: Parser14", "<h2 
data-parsoid='{\"dsr\":[0,18,2,2]}'> onmouseover= </h2>\n<p 
data-parsoid='{\"dsr\":[19,33,0,0]}'><a rel=\"mw:ExtLink\" 
href=\"http://__TOC__\"; 
data-parsoid='{\"stx\":\"url\",\"dsr\":[19,33,0,0]}'>http://__TOC__</a></p>");
 add("wt2html", "Fuzz testing: Parser14-table", "<h2 
data-parsoid='{\"dsr\":[0,5,2,2]}'>a</h2>\n<table style=\"__TOC__\" 
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[6,22,16,0]}'></table>");
 add("wt2html", "Fuzz testing: Parser24", "<p 
data-parsoid='{\"fostered\":true,\"autoInsertedEnd\":true,\"dsr\":[0,0]}'><span 
typeof=\"mw:Nowiki\" 
data-parsoid='{\"src\":\"{{{\",\"dsr\":[3,6,0,0]}'>{{{</span>|\n<u class=\"|\" 
about=\"#mwt2\" typeof=\"mw:ExpandedAttrs\" 
data-parsoid='{\"stx\":\"html\",\"a\":{\"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->&lt;noinclude>}}}}\":null},\"sa\":{\"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->&lt;noinclude>}}}}\":\"\"},\"autoInsertedEnd\":true,\"dsr\":[8,0,74,0]}'
 
data-mw='{\"attribs\":[[{\"txt\":\"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->}}}}\",\"html\":\"&lt;span
 about=\\\"#mwt1\\\" typeof=\\\"mw:Param\\\" 
data-parsoid=\\\"{&amp;quot;dsr&amp;quot;:[20,79,null,null],&amp;quot;src&amp;quot;:&amp;quot;{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->&lt;noinclude>}}}&amp;quot;}\\\">{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--&amp;gt;}}}&lt;/span>}\"},{\"html\":\"\"}]]}'>\n<br
 style=\"onmouseover='alert(document.cookie);' \" 
data-parsoid='{\"stx\":\"html\",\"selfClose\":true,\"dsr\":[83,0,53,0]}'/></u></p><p
 data-parsoid='{\"fostered\":true,\"autoInsertedEnd\":true,\"dsr\":[0,0]}'><u 
class=\"|\" about=\"#mwt2\" typeof=\"mw:ExpandedAttrs\" 
data-parsoid='{\"stx\":\"html\",\"a\":{\"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->&lt;noinclude>}}}}\":null},\"sa\":{\"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->&lt;noinclude>}}}}\":\"\"},\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[-37,0,0,0]}'
 
data-mw='{\"attribs\":[[{\"txt\":\"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->}}}}\",\"html\":\"&lt;span
 about=\\\"#mwt1\\\" typeof=\\\"mw:Param\\\" 
data-parsoid=\\\"{&amp;quot;dsr&amp;quot;:[20,79,null,null],&amp;quot;src&amp;quot;:&amp;quot;{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->&lt;noinclude>}}}&amp;quot;}\\\">{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--&amp;gt;}}}&lt;/span>}\"},{\"html\":\"\"}]]}'>MOVE
 YOUR MOUSE CURSOR OVER THIS TEXT</u></p><table 
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[0,177,2,0]}'>\n\n\n\n<tbody 
data-parsoid='{\"dsr\":[176,177,0,0]}'><tr 
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[176,177,0,0]}'><td
 
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[176,177,1,0]}'></td></tr></tbody></table>");
-add("wt2html", "Fuzz testing: Parser25 (bug 6055)", "<p 
data-parsoid='{\"dsr\":[0,110,0,0]}'><span about=\"#mwt1\" typeof=\"mw:Param\" 
data-parsoid='{\"dsr\":[0,26,null,null],\"src\":\"{{{\\n| \\n&lt;LI CLASS=||\\n 
>\\n}}}\"}'></span>blah\" onmouseover=\"alert('hello world');\" 
align=\"left\"<b 
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[80,110,3,0]}'>MOVE MOUSE 
CURSOR OVER HERE</b></p>");
+add("wt2html", "Fuzz testing: Parser25 (bug 6055)", "<span about=\"#mwt1\" 
typeof=\"mw:Param\" data-parsoid='{\"dsr\":[0,26,null,null],\"src\":\"{{{\\n| 
\\n&lt;LI CLASS=||\\n >\\n}}}\"}'></span><p 
data-parsoid='{\"dsr\":[26,110,0,0]}'>blah\" onmouseover=\"alert('hello 
world');\" align=\"left\"<b 
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[80,110,3,0]}'>MOVE MOUSE 
CURSOR OVER HERE</b></p>");
 add("wt2html", "Inline HTML vs wiki block nesting", "<p 
data-parsoid='{\"dsr\":[0,17,0,0]}'><b 
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[0,17,3,0]}'>Bold
 paragraph</b></p><b 
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[17,37,0,0]}'>\n\n<p
 data-parsoid='{\"dsr\":[19,37,0,0]}'>New wiki paragraph</p></b>");
 add("wt2html", "Special page transclusion", "<p about=\"#mwt1\" 
typeof=\"mw:Transclusion\" data-parsoid='{\"dsr\":[0,30,0,0],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"Special:Prefixindex/Xyzzyx\",\"function\":\"special\"},\"params\":{},\"i\":0}}]}'>Parser
 function implementation for pf_special missing in Parsoid.</p>");
 add("wt2html", "Special page transclusion twice (bug 5021)", "<p 
data-parsoid='{\"dsr\":[0,61,0,0]}'><span about=\"#mwt1\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[0,30,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"Special:Prefixindex/Xyzzyx\",\"function\":\"special\"},\"params\":{},\"i\":0}}]}'>Parser
 function implementation for pf_special missing in Parsoid.</span>\n<span 
about=\"#mwt2\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[31,61,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"Special:Prefixindex/Xyzzyx\",\"function\":\"special\"},\"params\":{},\"i\":0}}]}'>Parser
 function implementation for pf_special missing in Parsoid.</span></p>");
@@ -388,7 +388,7 @@
 add("wt2html", "Verify that displaytitle handles inline CSS styles (bug 26547) 
- accepted value", "<p data-parsoid='{\"dsr\":[0,25,0,0]}'>this is not the the 
title</p>\n<meta property=\"mw:PageProp/displaytitle\" content=\"screen\" 
data-parsoid='{\"src\":\"{{DISPLAYTITLE:&lt;span style=\\\"color: 
red;\\\">s&lt;/span>creen}}\",\"a\":{\"content\":\"screen\"},\"sa\":{\"content\":\"&lt;span
 style=\\\"color: red;\\\">s&lt;/span>creen\"},\"dsr\":[26,82,null,null]}'/>");
 add("wt2html", "preload: check <noinclude> and <includeonly>", "<p 
data-parsoid='{\"dsr\":[0,72,0,0]}'>Hello <meta 
typeof=\"mw:Includes/NoInclude\" 
data-parsoid='{\"src\":\"&lt;noinclude>\",\"dsr\":[6,17,null,null]}'/>cruel<meta
 typeof=\"mw:Includes/NoInclude/End\" 
data-parsoid='{\"src\":\"&lt;/noinclude>\",\"dsr\":[22,34,null,null]}'/><meta 
typeof=\"mw:Includes/IncludeOnly\" 
data-parsoid='{\"src\":\"&lt;includeonly>kind&lt;/includeonly>\",\"dsr\":[34,65,null,null]}'/><meta
 typeof=\"mw:Includes/IncludeOnly/End\" 
data-parsoid='{\"src\":\"\",\"dsr\":[65,65,null,null]}'/> world.</p>");
 add("wt2html", "preload: check <onlyinclude>", "<p 
data-parsoid='{\"dsr\":[0,32,0,0]}'>Goodbye <meta 
typeof=\"mw:Includes/OnlyInclude\" 
data-parsoid='{\"src\":\"&lt;onlyinclude>\",\"dsr\":[8,21,null,null]}'/>Hello 
world</p><meta typeof=\"mw:Includes/OnlyInclude/End\" 
data-parsoid='{\"src\":\"&lt;/onlyinclude>\",\"dsr\":[32,46,null,null]}'/>");
-add("wt2html", "preload: can pass tags through if we want to", "<p 
data-parsoid='{\"dsr\":[0,92,0,0]}'><meta typeof=\"mw:Includes/IncludeOnly\" 
data-parsoid='{\"src\":\"&lt;includeonly>&lt;&lt;/includeonly>\",\"dsr\":[0,28,null,null]}'/><meta
 typeof=\"mw:Includes/IncludeOnly/End\" 
data-parsoid='{\"src\":\"\",\"dsr\":[28,28,null,null]}'/>includeonly>Hello 
world<meta typeof=\"mw:Includes/IncludeOnly\" 
data-parsoid='{\"src\":\"&lt;includeonly>&lt;&lt;/includeonly>\",\"dsr\":[51,79,null,null]}'/><meta
 typeof=\"mw:Includes/IncludeOnly/End\" 
data-parsoid='{\"src\":\"\",\"dsr\":[79,79,null,null]}'/>/includeonly></p>");
+add("wt2html", "preload: can pass tags through if we want to", "<meta 
typeof=\"mw:Includes/IncludeOnly\" 
data-parsoid='{\"src\":\"&lt;includeonly>&lt;&lt;/includeonly>\",\"dsr\":[0,28,null,null]}'/><meta
 typeof=\"mw:Includes/IncludeOnly/End\" 
data-parsoid='{\"src\":\"\",\"dsr\":[28,28,null,null]}'/><p 
data-parsoid='{\"dsr\":[28,92,0,0]}'>includeonly>Hello world<meta 
typeof=\"mw:Includes/IncludeOnly\" 
data-parsoid='{\"src\":\"&lt;includeonly>&lt;&lt;/includeonly>\",\"dsr\":[51,79,null,null]}'/><meta
 typeof=\"mw:Includes/IncludeOnly/End\" 
data-parsoid='{\"src\":\"\",\"dsr\":[79,79,null,null]}'/>/includeonly></p>");
 add("wt2html", "preload: check that it doesn't try to do tricks", "<ul 
data-parsoid='{\"dsr\":[0,111,0,0]}'><li data-parsoid='{\"dsr\":[0,111,1,0]}'> 
<!-- Hello --> <i data-parsoid='{\"dsr\":[17,30,2,2]}'><span 
typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt1\" id=\"mwt1\" 
data-parsoid='{\"dsr\":[19,28,null,null],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"world\",\"href\":\"./Template:World\"},\"params\":{},\"i\":0}}]}'>Warning:
 Page/template fetching disabled, and no cache for Template:World</span></i> 
{{<meta typeof=\"mw:Includes/IncludeOnly\" 
data-parsoid='{\"src\":\"&lt;includeonly>subst:&lt;/includeonly>\",\"dsr\":[33,66,null,null]}'/><meta
 typeof=\"mw:Includes/IncludeOnly/End\" 
data-parsoid='{\"src\":\"\",\"dsr\":[66,66,null,null]}'/>How are you}}<span 
about=\"#mwt3\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]},{\"k\":\"2\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[79,111,null,null]}'
 data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"{{{|safesubst:}}} 
#if:1\",\"function\":\"#if\"},\"params\":{\"1\":{\"wt\":\"2\"},\"2\":{\"wt\":\"3\"}},\"i\":0}}]}'>2</span></li></ul>");
 add("wt2html", "percent-encoding and + signs in internal links (Bug 26410)", 
"<p data-parsoid='{\"dsr\":[0,127,0,0]}'><a rel=\"mw:WikiLink\" 
href=\"./User:+%25\" title=\"User:+%\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./User:+%25\"},\"sa\":{\"href\":\"User:+%\"},\"dsr\":[0,11,2,2]}'>User:+%</a>
 <a rel=\"mw:WikiLink\" href=\"./Page+title%25\" title=\"Page+title%\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Page+title%25\"},\"sa\":{\"href\":\"Page+title%\"},\"dsr\":[12,27,2,2]}'>Page+title%</a>\n<a
 rel=\"mw:WikiLink\" href=\"./%25+\" title=\"%+\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./%25+\"},\"sa\":{\"href\":\"%+\"},\"dsr\":[28,34,2,2]}'>%+</a>
 <a rel=\"mw:WikiLink\" href=\"./%25+\" title=\"%+\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./%25+\"},\"sa\":{\"href\":\"%+\"},\"dsr\":[35,45,5,2]}'>%20</a>
 <a rel=\"mw:WikiLink\" href=\"./%25+\" title=\"%+\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./%25+\"},\"sa\":{\"href\":\"%+
 \"},\"dsr\":[46,53,2,2]}'>%+ </a> <a rel=\"mw:WikiLink\" href=\"./%25+r\" 
title=\"%+r\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./%25+r\"},\"sa\":{\"href\":\"%+r\"},\"dsr\":[54,61,2,2]}'>%+r</a>\n<a
 rel=\"mw:WikiLink\" href=\"./%25\" title=\"%\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./%25\"},\"sa\":{\"href\":\"%\"},\"dsr\":[62,67,2,2]}'>%</a>
 <a rel=\"mw:WikiLink\" href=\"./+\" title=\"+\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./+\"},\"sa\":{\"href\":\"+\"},\"dsr\":[68,73,2,2]}'>+</a>
 <meta typeof=\"mw:Placeholder\" 
data-parsoid='{\"src\":\"[[image:%+abc%39|foo|[[bar]]]]\",\"optList\":[{\"ck\":\"bogus\",\"ak\":\"foo\"},{\"ck\":\"caption\",\"ak\":\"[[bar]]\"}],\"dsr\":[74,104,null,null]}'/>\n<a
 rel=\"mw:WikiLink\" href=\"./3E\" title=\"3E\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./3E\"},\"sa\":{\"href\":\"%33%45\"},\"dsr\":[105,115,2,2]}'>3E</a>
 <a rel=\"mw:WikiLink\" href=\"./3E+\" title=\"3E+\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./3E+\"},\"sa\":{\"href\":\"%33%45+\"},\"dsr\":[116,127,2,2]}'>3E+</a></p>");
 add("wt2html", "Special characters in embedded file links (bug 27679)", "<meta 
typeof=\"mw:Placeholder\" data-parsoid='{\"src\":\"[[File:Contains &amp; 
ampersand.jpg]]\",\"optList\":[],\"dsr\":[0,33,null,null]}'/>\n<meta 
typeof=\"mw:Placeholder\" data-parsoid='{\"src\":\"[[File:Does not 
exist.jpg|Title with &amp; 
ampersand]]\",\"optList\":[{\"ck\":\"caption\",\"ak\":\"Title with &amp; 
ampersand\"}],\"dsr\":[34,84,null,null]}'/>");
@@ -418,7 +418,7 @@
 add("wt2html", "Headings: 6a. Heading chars in SOL context (with trailing 
spaces)", "<p data-parsoid='{\"dsr\":[0,20,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[0,20,8,9]}'>=a=</span></p>\n\n<p 
data-parsoid='{\"dsr\":[22,42,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[22,42,8,9]}'>=a=</span></p> \n\n<p 
data-parsoid='{\"dsr\":[45,65,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[45,65,8,9]}'>=a=</span></p>\t\n\n<p 
data-parsoid='{\"dsr\":[68,88,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[68,88,8,9]}'>=a=</span></p> \t");
 add("wt2html", "Headings: 6b. Heading chars in SOL context (with trailing 
newlines)", "<p data-parsoid='{\"dsr\":[0,22,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[0,22,8,9]}'>=a=\nb</span></p>\n\n<p 
data-parsoid='{\"dsr\":[24,47,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[24,47,8,9]}'>=a= \nb</span></p>\n\n<p 
data-parsoid='{\"dsr\":[49,72,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[49,72,8,9]}'>=a=\t\nb</span></p>\n\n<p 
data-parsoid='{\"dsr\":[74,98,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[74,98,8,9]}'>=a=\t \nb</span></p>");
 add("wt2html", "Headings: 6c. Heading chars in SOL context (leading newline 
break)", "<p data-parsoid='{\"dsr\":[0,22,0,0]}'>a\n<span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[2,22,8,9]}'>=b=</span></p>");
-add("wt2html", "Headings: 6d. Heading chars in SOL context (with interspersed 
comments)", "<p data-parsoid='{\"dsr\":[0,29,0,0]}'><!--c0--><span 
typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[9,29,8,9]}'>=a=</span></p>\n\n<!--c1--><p 
data-parsoid='{\"dsr\":[40,60,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[40,60,8,9]}'>=a=</span></p> <!--c2-->\t <!--c3-->");
+add("wt2html", "Headings: 6d. Heading chars in SOL context (with interspersed 
comments)", "<!--c0--><p data-parsoid='{\"dsr\":[9,29,0,0]}'><span 
typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[9,29,8,9]}'>=a=</span></p>\n\n<!--c1--><p 
data-parsoid='{\"dsr\":[40,60,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[40,60,8,9]}'>=a=</span></p> <!--c2-->\t <!--c3-->");
 add("wt2html", "Links 1. Quote marks in link text", "<p 
data-parsoid='{\"dsr\":[0,35,0,0]}'><a rel=\"mw:WikiLink\" href=\"./Foo\" 
title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[0,35,6,2]}'>Foo<span
 typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[9,33,8,9]}'>''boo''</span></a></p>");
 add("wt2html", "Links 2. WikiLinks: Escapes needed", "<p 
data-parsoid='{\"dsr\":[0,384,0,0]}'><a rel=\"mw:WikiLink\" href=\"./Foo\" 
title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[0,16,6,2]}'>[Foobar]</a>\n<a
 rel=\"mw:WikiLink\" href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[17,49,6,2]}'><span
 typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[23,47,8,9]}'>Foobar]</span></a>\n<a rel=\"mw:WikiLink\" 
href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[50,70,6,2]}'>x
 [Foobar] x</a>\n<a rel=\"mw:WikiLink\" href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[71,121,6,2]}'>x
 <span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[79,117,8,9]}'>[http://google.com g]</span> x</a>\n<a 
rel=\"mw:WikiLink\" href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[122,154,6,2]}'><span
 typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[128,152,8,9]}'>[[Bar]]</span></a>\n<a 
rel=\"mw:WikiLink\" href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[155,191,6,2]}'><span
 typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[161,189,8,9]}'>x [[Bar]] 
x</span></a>\n<a rel=\"mw:WikiLink\" href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[192,221,6,2]}'><span
 typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[198,219,8,9]}'>|Bar</span></a>\n<a rel=\"mw:WikiLink\" 
href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[222,252,6,2]}'><span
 typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[228,250,8,9]}'>]]bar</span></a>\n<a rel=\"mw:WikiLink\" 
href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[253,283,6,2]}'><span
 typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[259,281,8,9]}'>[[bar</span></a>\n<a rel=\"mw:WikiLink\" 
href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[284,315,6,2]}'><span
 typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[290,313,8,9]}'>x [[ 
y</span></a>\n<a rel=\"mw:WikiLink\" href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[316,347,6,2]}'><span
 typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[322,345,8,9]}'>x ]] 
y</span></a>\n<a rel=\"mw:WikiLink\" href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[348,384,6,2]}'><span
 typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[354,382,8,9]}'>x ]] y [[ 
z</span></a></p>");
 add("wt2html", "Links 3. WikiLinks: No escapes needed", "<p 
data-parsoid='{\"dsr\":[0,31,0,0]}'>[[Foo|[Foobar]]\n<a rel=\"mw:WikiLink\" 
href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[16,31,6,2]}'>foo|bar</a></p>");
@@ -927,7 +927,7 @@
 add("html2html", "Headings: 6a. Heading chars in SOL context (with trailing 
spaces)", "<p data-parsoid='{\"dsr\":[0,20,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[0,20,8,9]}'>=a=</span></p>\n\n<p 
data-parsoid='{\"dsr\":[22,42,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[22,42,8,9]}'>=a=</span></p> \n\n<p 
data-parsoid='{\"dsr\":[45,65,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[45,65,8,9]}'>=a=</span></p>\t\n\n<p 
data-parsoid='{\"dsr\":[68,88,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[68,88,8,9]}'>=a=</span></p> \t\n");
 add("html2html", "Headings: 6b. Heading chars in SOL context (with trailing 
newlines)", "<p data-parsoid='{\"dsr\":[0,22,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[0,22,8,9]}'>=a=\nb</span></p>\n\n<p 
data-parsoid='{\"dsr\":[24,47,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[24,47,8,9]}'>=a= \nb</span></p>\n\n<p 
data-parsoid='{\"dsr\":[49,72,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[49,72,8,9]}'>=a=\t\nb</span></p>\n\n<p 
data-parsoid='{\"dsr\":[74,98,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[74,98,8,9]}'>=a=\t \nb</span></p>\n");
 add("html2html", "Headings: 6c. Heading chars in SOL context (leading newline 
break)", "<p data-parsoid='{\"dsr\":[0,22,0,0]}'>a\n<span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[2,22,8,9]}'>=b=</span></p>\n");
-add("html2html", "Headings: 6d. Heading chars in SOL context (with 
interspersed comments)", "<p data-parsoid='{\"dsr\":[0,29,0,0]}'><!--c0--><span 
typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[9,29,8,9]}'>=a=</span></p>\n\n<!--c1--><p 
data-parsoid='{\"dsr\":[40,60,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[40,60,8,9]}'>=a=</span></p> <!--c2-->\t <!--c3-->\n");
+add("html2html", "Headings: 6d. Heading chars in SOL context (with 
interspersed comments)", "<!--c0--><p data-parsoid='{\"dsr\":[9,29,0,0]}'><span 
typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[9,29,8,9]}'>=a=</span></p>\n\n<!--c1--><p 
data-parsoid='{\"dsr\":[40,60,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[40,60,8,9]}'>=a=</span></p> <!--c2-->\t <!--c3-->\n");
 add("html2html", "Links 1. Quote marks in link text", "<p 
data-parsoid='{\"dsr\":[0,35,0,0]}'><a rel=\"mw:WikiLink\" href=\"./Foo\" 
title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[0,35,6,2]}'>Foo<span
 typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[9,33,8,9]}'>''boo''</span></a></p>");
 add("html2html", "Links 2. WikiLinks: Escapes needed", "<p 
data-parsoid='{\"dsr\":[0,384,0,0]}'><a rel=\"mw:WikiLink\" href=\"./Foo\" 
title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[0,16,6,2]}'>[Foobar]</a>\n<a
 rel=\"mw:WikiLink\" href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[17,49,6,2]}'><span
 typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[23,47,8,9]}'>Foobar]</span></a>\n<a rel=\"mw:WikiLink\" 
href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[50,70,6,2]}'>x
 [Foobar] x</a>\n<a rel=\"mw:WikiLink\" href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[71,121,6,2]}'>x
 <span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[79,117,8,9]}'>[http://google.com g]</span> x</a>\n<a 
rel=\"mw:WikiLink\" href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[122,154,6,2]}'><span
 typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[128,152,8,9]}'>[[Bar]]</span></a>\n<a 
rel=\"mw:WikiLink\" href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[155,191,6,2]}'><span
 typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[161,189,8,9]}'>x [[Bar]] 
x</span></a>\n<a rel=\"mw:WikiLink\" href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[192,221,6,2]}'><span
 typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[198,219,8,9]}'>|Bar</span></a>\n<a rel=\"mw:WikiLink\" 
href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[222,252,6,2]}'><span
 typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[228,250,8,9]}'>]]bar</span></a>\n<a rel=\"mw:WikiLink\" 
href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[253,283,6,2]}'><span
 typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[259,281,8,9]}'>[[bar</span></a>\n<a rel=\"mw:WikiLink\" 
href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[284,315,6,2]}'><span
 typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[290,313,8,9]}'>x [[ 
y</span></a>\n<a rel=\"mw:WikiLink\" href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[316,347,6,2]}'><span
 typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[322,345,8,9]}'>x ]] 
y</span></a>\n<a rel=\"mw:WikiLink\" href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[348,384,6,2]}'><span
 typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[354,382,8,9]}'>x ]] y [[ 
z</span></a></p>");
 add("html2html", "Links 3. WikiLinks: No escapes needed", "<p 
data-parsoid='{\"dsr\":[0,31,0,0]}'>[[Foo|[Foobar]]\n<a rel=\"mw:WikiLink\" 
href=\"./Foo\" title=\"Foo\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[16,31,6,2]}'>foo|bar</a></p>");
@@ -2607,15 +2607,15 @@
 add("selser", "Fuzz testing: Parser24 [[1,2,0],2,3]", 
"{{{6xvikssdmi4zehfr|\n<u class=\"|\" 
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br 
style=\"onmouseover='alert(document.cookie);' \" />\n\nwvwpzfhipqqfflxr\n\n\n");
 add("selser", "Fuzz testing: Parser24 [[1,2,0],0,4]", 
"{{{sk3rl6utosgojemi|\n<u class=\"|\" 
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br 
style=\"onmouseover='alert(document.cookie);' \" />\n\n\n\njzny1t7i47mygb9\n");
 add("selser", "Fuzz testing: Parser24 [1,1,2]", "{{{|\n<u class=\"|\" 
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br 
style=\"onmouseover='alert(document.cookie);' \" />\n\nMOVE YOUR MOUSE CURSOR 
OVER THIS TEXT\n\nwo1ljwyi3jlzbyb9\n{|\n{{{|\n<u CLASS=\n| 
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}} >\n<br 
style=\"onmouseover='alert(document.cookie);' \" />\n\nMOVE YOUR MOUSE CURSOR 
OVER THIS TEXT\n|");
-add("selser", "Fuzz testing: Parser25 (bug 6055) [2]", 
"zstgbb6nw6nr8uxr\n\n{{{\n| \n<LI CLASS=||\n >\n}}}blah\" 
onmouseover=\"alert('hello world');\" align=\"left\"'''MOVE MOUSE CURSOR OVER 
HERE");
-add("selser", "Fuzz testing: Parser25 (bug 6055) [1]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}blah\" onmouseover=\"alert('hello world');\" 
align=\"left\"'''MOVE MOUSE CURSOR OVER HERE");
-add("selser", "Fuzz testing: Parser25 (bug 6055) [[0,2,2]]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}4rrl98ny5zgaxlxrblah\" onmouseover=\"alert('hello world');\" 
align=\"left\"8i02syp6jkbj4i'''MOVE MOUSE CURSOR OVER HERE");
-add("selser", "Fuzz testing: Parser25 (bug 6055) [[0,3,0]]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}'''MOVE MOUSE CURSOR OVER HERE");
-add("selser", "Fuzz testing: Parser25 (bug 6055) [[0,0,2]]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}blah\" onmouseover=\"alert('hello world');\" 
align=\"left\"1y1dswlzouu40a4i'''MOVE MOUSE CURSOR OVER HERE");
-add("selser", "Fuzz testing: Parser25 (bug 6055) [[0,3,2]]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}4kaxzxt0lciejyvi'''MOVE MOUSE CURSOR OVER HERE");
-add("selser", "Fuzz testing: Parser25 (bug 6055) [[0,4,2]]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}xfilnfj1id89qkt9ugf2zkqtlng3c8fr'''MOVE MOUSE CURSOR OVER 
HERE");
-add("selser", "Fuzz testing: Parser25 (bug 6055) [[0,4,0]]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}l2alwbk8ifab57b9'''MOVE MOUSE CURSOR OVER HERE");
-add("selser", "Fuzz testing: Parser25 (bug 6055) [[0,2,0]]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}ltl4kyjnfvoq1tt9blah\" onmouseover=\"alert('hello world');\" 
align=\"left\"'''MOVE MOUSE CURSOR OVER HERE");
+add("selser", "Fuzz testing: Parser25 (bug 6055) [0,2]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}zstgbb6nw6nr8uxr\n\nblah\" onmouseover=\"alert('hello 
world');\" align=\"left\"'''MOVE MOUSE CURSOR OVER HERE");
+add("selser", "Fuzz testing: Parser25 (bug 6055) [0,1]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}blah\" onmouseover=\"alert('hello world');\" 
align=\"left\"'''MOVE MOUSE CURSOR OVER HERE");
+add("selser", "Fuzz testing: Parser25 (bug 6055) [0,[2,2]]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}4rrl98ny5zgaxlxrblah\" onmouseover=\"alert('hello world');\" 
align=\"left\"8i02syp6jkbj4i'''MOVE MOUSE CURSOR OVER HERE");
+add("selser", "Fuzz testing: Parser25 (bug 6055) [0,[3,0]]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}'''MOVE MOUSE CURSOR OVER HERE");
+add("selser", "Fuzz testing: Parser25 (bug 6055) [0,[0,2]]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}blah\" onmouseover=\"alert('hello world');\" 
align=\"left\"1y1dswlzouu40a4i'''MOVE MOUSE CURSOR OVER HERE");
+add("selser", "Fuzz testing: Parser25 (bug 6055) [0,[3,2]]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}4kaxzxt0lciejyvi'''MOVE MOUSE CURSOR OVER HERE");
+add("selser", "Fuzz testing: Parser25 (bug 6055) [0,[4,2]]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}xfilnfj1id89qkt9ugf2zkqtlng3c8fr'''MOVE MOUSE CURSOR OVER 
HERE");
+add("selser", "Fuzz testing: Parser25 (bug 6055) [0,[4,0]]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}l2alwbk8ifab57b9'''MOVE MOUSE CURSOR OVER HERE");
+add("selser", "Fuzz testing: Parser25 (bug 6055) [0,[2,0]]", "{{{\n| \n<LI 
CLASS=||\n >\n}}}ltl4kyjnfvoq1tt9blah\" onmouseover=\"alert('hello world');\" 
align=\"left\"'''MOVE MOUSE CURSOR OVER HERE");
 add("selser", "Inline wiki vs wiki block nesting [2,0,1]", 
"y31p21pdfplgcik9\n\n'''Bold paragraph\n\nNew wiki paragraph");
 add("selser", "Inline wiki vs wiki block nesting [1,3,[3]]", "'''Bold 
paragraph\n");
 add("selser", "Inline wiki vs wiki block nesting [0,0,4]", "'''Bold 
paragraph\n\n1vaanv1vlmtb7qfr\n");
@@ -2848,8 +2848,6 @@
 add("selser", "Entities in ref name [1]", "<ref name=\"test &amp; 
me\">hi</ref>");
 add("selser", "Headings: 5. Empty headings [[2],3,2,0,4,4,0,2,1,3,0]", 
"=hnjo2713bjvjwcdi<nowiki/>=\nx2d05yq3dapaxlxr\n==<nowiki/>==\n\nkaovt9si227ta9k9\n\nb2688fvzpaocrf6r\n====<nowiki/>====\nljshl952j0emte29\n\n=====<nowiki/>=====\n\n======<nowiki/>======");
 add("selser", "Headings: 6a. Heading chars in SOL context (with trailing 
spaces) [4,0,1,0,4,4,[2],3]", "o4fu7yz6zedvlsor\n\n<nowiki>=a=</nowiki> 
\n\nfzi337zwgfmbzkt9\n\nrziif3qr3rspp66r\n\nzm9kz709iqpsnhfr<nowiki>=a=</nowiki>
 \t");
-add("selser", "Headings: 6d. Heading chars in SOL context (with interspersed 
comments) [2,0,3,1,0,0,3,4]", 
"phebkb5pgdx3whfr\n\n<!--c0--><nowiki>=a=</nowiki>\n\n<nowiki>=a=</nowiki>\n\n<nowiki>
 </nowiki><!--c2-->e5gqs402gzm2t9\n");
-add("selser", "Lists: 6. Escape bullets in SOL position [2]", 
"zfvn44lf3sqvvx6r\n\n<!--cmt--><nowiki>*foo</nowiki>");
 add("selser", "1. Quotes inside <b> and <i> 
[[2,3,[1],4,0,0,[3],0,2,2,0,4,0,0,4,1,0,0,0,0,3,2,4,3,3,3,0,0,0,0,0,0,2,2,0,2,0,2,[3,0],0,[[4],0]]]",
 
"b9ve2r72aq44e7b9''<nowiki>'foo'</nowiki>''''<nowiki>''foo''</nowiki>''jduad2jvmauac3di''<nowiki>'''foo'''</nowiki>''\n''<nowiki/>''<nowiki/>hb7ucb9xukofajor's\nimf9p1zrvbbdfgvi'''<nowiki>'foo'</nowiki>'''\nd92wpym0cizwu3di\n'''<nowiki>'''foo'''</nowiki>'''4mia6l6nhzolxr'''<nowiki>foo'</nowiki>''<nowiki>bar'</nowiki>''baz'''\n'''foo'''<nowiki/>'s\n'ris26lje0lwstt9\n6wag5p5b648l4n29''foo''<nowiki/>'\n''''foo'''\n'''foo'''rs74ede4dxiuow29<nowiki/>s455j5uyzl0daemi'\n'<nowiki/>c9hosabzbqhbyb9'''foo'''<nowiki/><nowiki>9zoxx3yi7wl5l8fr'</nowiki>\n''<span>
 errand</span>''\n''<span>1yl4yeqhhtr19k9</span>'s errand''");
 add("selser", "1. Quotes inside <b> and <i> 
[[4,2,4,0,[[3]],3,0,3,3,[1],0,3,0,[3],4,[0,[[4]],4],0,2,1,4,1,0,1,2,2,0,1,0,0,2,3,0,4,0,3,0,1,0,4,0,2]]",
 
"hfzzqh4z896n7b9y9b5b0h3xt4vx6r\nzopywt5d4aacq5mi\n''<nowiki></nowiki>''''foo'''''<nowiki>'foo'</nowiki>'''\n\n'''<nowiki/>'''uqjub7vnyn45cdi'''<nowiki>foo'</nowiki>''<nowiki>83tn7m6x3eib2o6r</nowiki>''mtl1eup7hihyf1or'''\nxjlu6g9f7btn8kt9'''foo'''<nowiki/>p1oe0q0yue4s4i''foo''\n''foo''eojrt6m8f16y9zfr<nowiki/>m5ph5u0twa3mobt9'\n'<nowiki/>''foo''<nowiki/>'\n'n96yj3i9qz1tt9'''foo''''''foo'''<nowiki>ksi8t5exrcgi7ldi'\n'</nowiki>'''foo'''<nowiki/>'\n6bj2bwfnyer0be29\nbu3r2xksbpujtt9''<span>fool</span>'s
 errand''");
 add("selser", "1. Quotes inside <b> and <i> 
[[[[4]],0,3,2,2,2,1,1,0,2,3,[[4]],4,[[2]],0,3,3,3,0,3,3,0,2,0,0,2,3,1,0,3,0,0,4,4,4,[2],1,3,4,2,[3,0]]]",
 
"''<nowiki>av6ia62qlqj5g66r</nowiki>''\ndd67jgaznmcayvi\n9nxqxr9rsomq85mi''<nowiki>'''foo'''</nowiki>''2qbh5zutf82p4x6r\n''foo''<nowiki/>'s\nkvikr5b01zq41jor'''<nowiki>'foo'</nowiki>''''''<nowiki>u70g0hr9yg5jyvi</nowiki>'''hdyz8z5toahjv2t9'''<nowiki>ykgu26a711ao47vi'''foo'''</nowiki>'''\n<nowiki/>\nvi6ls290eteghkt9''foo''<nowiki/>'\n'ilyo093i3ipy14i<nowiki/><nowiki/><nowiki>'\n'</nowiki>\n'''foo'''8fh6lvjb5wxw29y9rq51gjn7gy14ie5tmcga6v927qfr'''t492w9pqm0urqkt9foo'''<nowiki/>ovhh9d5w53oywrk96gj1mm8uwmydgqfr\n''<nowiki>'s
 errand</nowiki>''\n");
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index e4f2ee8..ad6ba8a 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -1776,7 +1776,7 @@
 ## of eager output of buffered tokens in the p-wrapper. But, I'm going to 
ignore
 ## them for now.
 !! test
-P-wrapping should leave sol-transparent tags outside p-tags where possible
+1. P-wrapping should leave sol-transparent tags outside p-tags where possible
 !! options
 parsoid=wt2html
 !! wikitext
@@ -1788,6 +1788,16 @@
 <link href="Category:A1"/> <link href="Category:A2"/> <link 
href="Category:A3"/> <link href="Category:A4"/>
 !! end
 
+!! test
+2. P-wrapping should leave sol-transparent tags outside p-tags where possible
+!! options
+parsoid=wt2html
+!! wikitext
+[[Category:A1]]a
+!! html/parsoid
+<link href="Category:A1"/><p>a</p>
+!! end
+
 ###
 ### Preformatted text
 ###

-- 
To view, visit https://gerrit.wikimedia.org/r/168710
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ifdf22f6380b2d1883e0fcbd7222aef692f5c4a67
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Subramanya Sastry <[email protected]>
Gerrit-Reviewer: Arlolra <[email protected]>
Gerrit-Reviewer: Cscott <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to