jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/334186 )

Change subject: Set src as the original value when using title as href
......................................................................


Set src as the original value when using title as href

 * Further regression fixing following fa6906a and 643d5392

Change-Id: Ifdfb167859a0c96837076d411feea8ced9d57912
---
M lib/wt2html/tt/LinkHandler.js
M tests/parserTests-blacklist.js
M tests/parserTests.txt
3 files changed, 34 insertions(+), 26 deletions(-)

Approvals:
  C. Scott Ananian: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/wt2html/tt/LinkHandler.js b/lib/wt2html/tt/LinkHandler.js
index 43ad0e8..66a2c71 100644
--- a/lib/wt2html/tt/LinkHandler.js
+++ b/lib/wt2html/tt/LinkHandler.js
@@ -1063,7 +1063,7 @@
                                        
innerContain.addNormalizedAttribute('href', this.env.makeLink(link), 
opts.link.src);
                                } else {
                                        // Treat same as if opts.link weren't 
present
-                                       
innerContain.addNormalizedAttribute('href', this.env.makeLink(opts.title.v));
+                                       
innerContain.addNormalizedAttribute('href', this.env.makeLink(opts.title.v), 
opts.title.src);
                                        // but maybe consider it a caption
                                        var pos = 
token.dataAttribs.optList.reduce(function(prv, cur, ind) {
                                                return cur.ck === 'link' ? ind 
: prv;
@@ -1076,7 +1076,7 @@
                        }
                        // No href if link= was specified
                } else {
-                       innerContain.addNormalizedAttribute('href', 
this.env.makeLink(opts.title.v));
+                       innerContain.addNormalizedAttribute('href', 
this.env.makeLink(opts.title.v), opts.title.src);
                }
        }
 
diff --git a/tests/parserTests-blacklist.js b/tests/parserTests-blacklist.js
index b9eb71f..bafb8e5 100644
--- a/tests/parserTests-blacklist.js
+++ b/tests/parserTests-blacklist.js
@@ -142,7 +142,7 @@
 add("wt2html", "{{#speciale:}} page name, unknown", "<p about=\"#mwt1\" 
typeof=\"mw:Transclusion\" data-parsoid='{\"dsr\":[0,32,0,0],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"#speciale:foobar 
nonexistent\",\"function\":\"#speciale\"},\"params\":{},\"i\":0}}]}'>Parser 
function implementation for pf_#speciale missing in Parsoid.</p>");
 add("wt2html", "Image with link parameter, wgNoFollowLinks set to false", "<p 
data-parsoid='{\"dsr\":[0,45,0,0]}'><span class=\"mw-default-size\" 
typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"link\",\"ak\":\"link=http://example.com/\"}],\"dsr\":[0,45,null,null]}'><a
 href=\"http://example.com/\"; data-parsoid=\"{}\"><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>");
 add("wt2html", "Image with link parameter, wgNoFollowDomainExceptions", "<p 
data-parsoid='{\"dsr\":[0,45,0,0]}'><span class=\"mw-default-size\" 
typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"link\",\"ak\":\"link=http://example.com/\"}],\"dsr\":[0,45,null,null]}'><a
 href=\"http://example.com/\"; data-parsoid=\"{}\"><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>");
-add("wt2html", "SVG thumbnails with invalid language code", "<figure 
class=\"mw-default-size\" typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"caption\",\"ak\":\"caption\"},{\"ck\":\"lang\",\"ak\":\"lang=invalid.language.code\"}],\"dsr\":[0,60,2,2]}'><a
 href=\"./File:Foobar.svg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.svg\"},\"sa\":{},\"dsr\":[2,null,null,null]}'><img
 resource=\"./File:Foobar.svg\" 
src=\"//example.com/images/thumb/f/ff/Foobar.svg/220px-Foobar.svg\" 
lang=\"invalid.language.code\" data-file-width=\"240\" data-file-height=\"180\" 
data-file-type=\"drawing\" height=\"165\" width=\"220\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.svg\",\"lang\":\"invalid.language.code\",\"height\":\"165\",\"width\":\"220\"},\"sa\":{\"resource\":\"File:Foobar.svg\",\"lang\":\"lang=invalid.language.code\"}}'/></a><figcaption
 data-parsoid='{\"dsr\":[null,58,null,null]}'>caption</figcaption></figure>");
+add("wt2html", "SVG thumbnails with invalid language code", "<figure 
class=\"mw-default-size\" typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"caption\",\"ak\":\"caption\"},{\"ck\":\"lang\",\"ak\":\"lang=invalid.language.code\"}],\"dsr\":[0,60,2,2]}'><a
 href=\"./File:Foobar.svg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.svg\"},\"sa\":{\"href\":\"File:Foobar.svg\"},\"dsr\":[2,null,null,null]}'><img
 resource=\"./File:Foobar.svg\" 
src=\"//example.com/images/thumb/f/ff/Foobar.svg/220px-Foobar.svg\" 
lang=\"invalid.language.code\" data-file-width=\"240\" data-file-height=\"180\" 
data-file-type=\"drawing\" height=\"165\" width=\"220\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.svg\",\"lang\":\"invalid.language.code\",\"height\":\"165\",\"width\":\"220\"},\"sa\":{\"resource\":\"File:Foobar.svg\",\"lang\":\"lang=invalid.language.code\"}}'/></a><figcaption
 data-parsoid='{\"dsr\":[null,58,null,null]}'>caption</figcaption></figure>");
 add("wt2html", "BUG 561: {{/Subpage}}", "<p 
data-parsoid='{\"dsr\":[0,12,0,0]}'><span typeof=\"mw:Transclusion 
mw:Placeholder\" about=\"#mwt1\" 
data-parsoid='{\"dsr\":[0,12,null,null],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"/Subpage\",\"href\":\"./Page/Subpage\"},\"params\":{},\"i\":0}}]}'>Warning:
 Page/template fetching disabled, and no cache for Page/Subpage</span></p>");
 add("wt2html", "PAGESINCATEGORY invalid title fatal (r33546 fix)", "<p 
about=\"#mwt1\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"dsr\":[0,27,0,0],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"PAGESINCATEGORY:&lt;bogus>\",\"function\":\"pagesincategory\"},\"params\":{},\"i\":0}}]}'>Parser
 function implementation for pf_pagesincategory missing in Parsoid.</p>");
 add("wt2html", "Parsoid: Defaultsort (template-generated)", "<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\",\"href\":\"./Foo\"},\"params\":{},\"i\":0}}]}'/>");
@@ -173,12 +173,12 @@
 add("wt2html", "Say the magic word", "<ul 
data-parsoid='{\"dsr\":[0,544,0,0]}'><li data-parsoid='{\"dsr\":[0,14,1,0]}'> 
<span about=\"#mwt1\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[2,14,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"PAGENAME\",\"function\":\"pagename\"},\"params\":{},\"i\":0}}]}'>Parser
 test</span></li>\n<li data-parsoid='{\"dsr\":[15,30,1,0]}'> <span 
about=\"#mwt2\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"dsr\":[17,30,null,null],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"PAGENAMEE\",\"function\":\"pagenamee\"},\"params\":{},\"i\":0}}]}'></span></li>\n<li
 data-parsoid='{\"dsr\":[31,49,1,0]}'> <span about=\"#mwt3\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[33,49,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"FULLPAGENAME\",\"function\":\"fullpagename\"},\"params\":{},\"i\":0}}]}'>Parser
 test</span></li>\n<li data-parsoid='{\"dsr\":[50,69,1,0]}'> <span 
about=\"#mwt4\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[52,69,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"FULLPAGENAMEE\",\"function\":\"fullpagenamee\"},\"params\":{},\"i\":0}}]}'>Parser
 test</span></li>\n<li data-parsoid='{\"dsr\":[70,88,1,0]}'> <span 
typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt5\" 
data-parsoid='{\"dsr\":[72,88,null,null],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"BASEPAGENAME\",\"href\":\"./Template:BASEPAGENAME\"},\"params\":{},\"i\":0}}]}'>Warning:
 Page/template fetching disabled, and no cache for 
Template:BASEPAGENAME</span></li>\n<li data-parsoid='{\"dsr\":[89,108,1,0]}'> 
<span typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt6\" 
data-parsoid='{\"dsr\":[91,108,null,null],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"BASEPAGENAMEE\",\"href\":\"./Template:BASEPAGENAMEE\"},\"params\":{},\"i\":0}}]}'>Warning:
 Page/template fetching disabled, and no cache for 
Template:BASEPAGENAMEE</span></li>\n<li data-parsoid='{\"dsr\":[109,126,1,0]}'> 
<span typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt7\" 
data-parsoid='{\"dsr\":[111,126,null,null],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"SUBPAGENAME\",\"href\":\"./Template:SUBPAGENAME\"},\"params\":{},\"i\":0}}]}'>Warning:
 Page/template fetching disabled, and no cache for 
Template:SUBPAGENAME</span></li>\n<li data-parsoid='{\"dsr\":[127,145,1,0]}'> 
<span typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt8\" 
data-parsoid='{\"dsr\":[129,145,null,null],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"SUBPAGENAMEE\",\"href\":\"./Template:SUBPAGENAMEE\"},\"params\":{},\"i\":0}}]}'>Warning:
 Page/template fetching disabled, and no cache for 
Template:SUBPAGENAMEE</span></li>\n<li data-parsoid='{\"dsr\":[146,164,1,0]}'> 
<span typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt9\" 
data-parsoid='{\"dsr\":[148,164,null,null],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"ROOTPAGENAME\",\"href\":\"./Template:ROOTPAGENAME\"},\"params\":{},\"i\":0}}]}'>Warning:
 Page/template fetching disabled, and no cache for 
Template:ROOTPAGENAME</span></li>\n<li data-parsoid='{\"dsr\":[165,184,1,0]}'> 
<span typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt10\" 
data-parsoid='{\"dsr\":[167,184,null,null],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"ROOTPAGENAMEE\",\"href\":\"./Template:ROOTPAGENAMEE\"},\"params\":{},\"i\":0}}]}'>Warning:
 Page/template fetching disabled, and no cache for 
Template:ROOTPAGENAMEE</span></li>\n<li data-parsoid='{\"dsr\":[185,203,1,0]}'> 
<span about=\"#mwt11\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[187,203,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"TALKPAGENAME\",\"function\":\"talkpagename\"},\"params\":{},\"i\":0}}]}'>Parser
 test</span></li>\n<li data-parsoid='{\"dsr\":[204,223,1,0]}'> <span 
typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt12\" 
data-parsoid='{\"dsr\":[206,223,null,null],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"TALKPAGENAMEE\",\"href\":\"./Template:TALKPAGENAMEE\"},\"params\":{},\"i\":0}}]}'>Warning:
 Page/template fetching disabled, and no cache for 
Template:TALKPAGENAMEE</span></li>\n<li data-parsoid='{\"dsr\":[224,245,1,0]}'> 
<span typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt13\" 
data-parsoid='{\"dsr\":[226,245,null,null],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"SUBJECTPAGENAME\",\"href\":\"./Template:SUBJECTPAGENAME\"},\"params\":{},\"i\":0}}]}'>Warning:
 Page/template fetching disabled, and no cache for 
Template:SUBJECTPAGENAME</span></li>\n<li 
data-parsoid='{\"dsr\":[246,268,1,0]}'> <span typeof=\"mw:Transclusion 
mw:Placeholder\" about=\"#mwt14\" 
data-parsoid='{\"dsr\":[248,268,null,null],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"SUBJECTPAGENAMEE\",\"href\":\"./Template:SUBJECTPAGENAMEE\"},\"params\":{},\"i\":0}}]}'>Warning:
 Page/template fetching disabled, and no cache for 
Template:SUBJECTPAGENAMEE</span></li>\n<li 
data-parsoid='{\"dsr\":[269,285,1,0]}'> <span about=\"#mwt15\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[271,285,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"NAMESPACEE\",\"function\":\"namespacee\"},\"params\":{},\"i\":0}}]}'>Main</span></li>\n<li
 data-parsoid='{\"dsr\":[286,301,1,0]}'> <span about=\"#mwt16\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[288,301,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"NAMESPACE\",\"function\":\"namespace\"},\"params\":{},\"i\":0}}]}'>Main</span></li>\n<li
 data-parsoid='{\"dsr\":[302,323,1,0]}'> <span about=\"#mwt17\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[304,323,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"NAMESPACENUMBER\",\"function\":\"namespacenumber\"},\"params\":{},\"i\":0}}]}'>0</span></li>\n<li
 data-parsoid='{\"dsr\":[324,339,1,0]}'> <span about=\"#mwt18\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[326,339,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"TALKSPACE\",\"function\":\"talkspace\"},\"params\":{},\"i\":0}}]}'>Talk</span></li>\n<li
 data-parsoid='{\"dsr\":[340,356,1,0]}'> <span typeof=\"mw:Transclusion 
mw:Placeholder\" about=\"#mwt19\" 
data-parsoid='{\"dsr\":[342,356,null,null],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"TALKSPACEE\",\"href\":\"./Template:TALKSPACEE\"},\"params\":{},\"i\":0}}]}'>Warning:
 Page/template fetching disabled, and no cache for 
Template:TALKSPACEE</span></li>\n<li data-parsoid='{\"dsr\":[357,375,1,0]}'> 
<span about=\"#mwt20\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[359,375,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"SUBJECTSPACE\",\"function\":\"subjectspace\"},\"params\":{},\"i\":0}}]}'>Main</span></li>\n<li
 data-parsoid='{\"dsr\":[376,395,1,0]}'> <span typeof=\"mw:Transclusion 
mw:Placeholder\" about=\"#mwt21\" 
data-parsoid='{\"dsr\":[378,395,null,null],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"SUBJECTSPACEE\",\"href\":\"./Template:SUBJECTSPACEE\"},\"params\":{},\"i\":0}}]}'>Warning:
 Page/template fetching disabled, and no cache for 
Template:SUBJECTSPACEE</span></li>\n<li data-parsoid='{\"dsr\":[396,544,1,0]}'> 
<span typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt22\" 
data-parsoid='{\"dsr\":[398,544,null,null],\"pi\":[[{\"k\":\"1\"},{\"k\":\"2\"},{\"k\":\"3\"},{\"k\":\"4\"},{\"k\":\"5\"},{\"k\":\"6\"},{\"k\":\"7\"}]]}'
 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"Dynamic\",\"href\":\"./Template:Dynamic\"},\"params\":{\"1\":{\"wt\":\"{{NUMBEROFUSERS}}\"},\"2\":{\"wt\":\"{{NUMBEROFPAGES}}\"},\"3\":{\"wt\":\"{{CURRENTVERSION}}\"},\"4\":{\"wt\":\"{{CONTENTLANGUAGE}}\"},\"5\":{\"wt\":\"{{DIRECTIONMARK}}\"},\"6\":{\"wt\":\"{{CURRENTTIMESTAMP}}\"},\"7\":{\"wt\":\"{{NUMBEROFARTICLES}}\"}},\"i\":0}}]}'>Warning:
 Page/template fetching disabled, and no cache for 
Template:Dynamic</span></li></ul>");
 add("wt2html", "Gallery override link with absolute external link with 
LanguageConverter", "<ul class=\"gallery mw-gallery-traditional\" 
typeof=\"mw:Extension/gallery\" about=\"#mwt2\" 
data-parsoid='{\"dsr\":[0,87,2,2]}' 
data-mw='{\"name\":\"gallery\",\"attrs\":{},\"body\":{\"extsrc\":\"\\nFile:foobar.jpg|caption|alt=galleryalt|link=http://www.example.org\\n\"}}'>\n<li
 class=\"gallerybox\" style=\"width: 155px;\"><div class=\"thumb\" 
style=\"width: 150px; height: 150px;\"><span style=\"display: inline-block; 
height: 100%; vertical-align: middle;\"></span><span typeof=\"mw:Image\" 
style=\"vertical-align: middle; display: inline-block;\"><a 
href=\"http://www.example.org\";><img alt=\"galleryalt\" 
resource=\"./File:Foobar.jpg\" 
src=\"//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg\" 
data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" 
height=\"14\" width=\"120\"/></a></span></div><div 
class=\"gallerytext\">caption</div></li>\n</ul>");
 add("wt2html", "Illegal character references (T106578)", "<dl 
data-parsoid='{\"dsr\":[0,167,0,0]}'><dt data-parsoid='{\"dsr\":[0,6,1,0]}'> 
Null</dt><dd data-parsoid='{\"stx\":\"row\",\"dsr\":[6,13,1,0]}'> <span 
typeof=\"mw:Entity\" 
data-parsoid='{\"src\":\"&amp;#00;\",\"srcContent\":\"�\",\"dsr\":[8,13,null,null]}'>�</span></dd>\n<dt
 data-parsoid='{\"dsr\":[14,18,1,0]}'> FF</dt><dd 
data-parsoid='{\"stx\":\"row\",\"dsr\":[18,25,1,0]}'> <span 
typeof=\"mw:Entity\" 
data-parsoid='{\"src\":\"&amp;#xC;\",\"srcContent\":\"\\f\",\"dsr\":[20,25,null,null]}'>\f</span></dd>\n<dt
 data-parsoid='{\"dsr\":[26,30,1,0]}'> CR</dt><dd 
data-parsoid='{\"stx\":\"row\",\"dsr\":[30,37,1,0]}'> <span 
typeof=\"mw:Entity\" 
data-parsoid='{\"src\":\"&amp;#xD;\",\"srcContent\":\"\\r\",\"dsr\":[32,37,null,null]}'>\r</span></dd>\n<dt
 data-parsoid='{\"dsr\":[38,53,1,0]}'> Control (low)</dt><dd 
data-parsoid='{\"stx\":\"row\",\"dsr\":[53,59,1,0]}'> <span 
typeof=\"mw:Entity\" 
data-parsoid='{\"src\":\"&amp;#8;\",\"srcContent\":\"\\b\",\"dsr\":[55,59,null,null]}'>\b</span></dd>\n<dt
 data-parsoid='{\"dsr\":[60,76,1,0]}'> Control (high)</dt><dd 
data-parsoid='{\"stx\":\"row\",\"dsr\":[76,91,1,0]}'> <span 
typeof=\"mw:Entity\" 
data-parsoid='{\"src\":\"&amp;#x7F;\",\"srcContent\":\"\",\"dsr\":[78,84,null,null]}'></span>
 <span typeof=\"mw:Entity\" 
data-parsoid='{\"src\":\"&amp;#x9F;\",\"srcContent\":\"Ÿ\",\"dsr\":[85,91,null,null]}'>Ÿ</span></dd>\n<dt
 data-parsoid='{\"dsr\":[92,103,1,0]}'> Surrogate</dt><dd 
data-parsoid='{\"stx\":\"row\",\"dsr\":[103,121,1,0]}'> <span 
typeof=\"mw:Entity\" 
data-parsoid='{\"src\":\"&amp;#xD83D;\",\"srcContent\":\"�\",\"dsr\":[105,113,null,null]}'>�</span><span
 typeof=\"mw:Entity\" 
data-parsoid='{\"src\":\"&amp;#xDCA9;\",\"srcContent\":\"�\",\"dsr\":[113,121,null,null]}'>�</span></dd>\n<dt
 data-parsoid='{\"dsr\":[122,156,1,0]}'> This is an okay astral 
character</dt><dd data-parsoid='{\"stx\":\"row\",\"dsr\":[156,167,1,0]}'> <span 
typeof=\"mw:Entity\" 
data-parsoid='{\"src\":\"&amp;#x1F4A9;\",\"srcContent\":\"💩\",\"dsr\":[158,167,null,null]}'>💩</span></dd></dl>");
-add("wt2html", "Centre-aligned image", "<figure class=\"mw-default-size 
mw-halign-center\" typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"center\",\"ak\":\"centre\"}],\"dsr\":[0,27,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{},\"dsr\":[2,25,null,null]}'><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></figure>");
-add("wt2html", "None-aligned image", "<figure class=\"mw-default-size 
mw-halign-none\" typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"none\",\"ak\":\"none\"}],\"dsr\":[0,25,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{},\"dsr\":[2,23,null,null]}'><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></figure>");
-add("wt2html", "Width + Height sized image (using px) (height is ignored)", 
"<p data-parsoid='{\"dsr\":[0,30,0,0]}'><span typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"width\",\"ak\":\"640x480px\"}],\"dsr\":[0,30,null,null]}'><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/640px-Foobar.jpg\" 
data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" 
height=\"73\" width=\"640\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"73\",\"width\":\"640\"},\"sa\":{\"resource\":\"Image:foobar.jpg\"}}'/></a></span></p>");
-add("wt2html", "Width-sized image (using px, no following whitespace)", "<p 
data-parsoid='{\"dsr\":[0,26,0,0]}'><span typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"width\",\"ak\":\"640px\"}],\"dsr\":[0,26,null,null]}'><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/640px-Foobar.jpg\" 
data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" 
height=\"73\" width=\"640\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"73\",\"width\":\"640\"},\"sa\":{\"resource\":\"Image:foobar.jpg\"}}'/></a></span></p>");
-add("wt2html", "Width-sized image (using px, with following whitespace - test 
regression from r39467)", "<p data-parsoid='{\"dsr\":[0,27,0,0]}'><span 
typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"width\",\"ak\":\"640px 
\"}],\"dsr\":[0,27,null,null]}'><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/640px-Foobar.jpg\" 
data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" 
height=\"73\" width=\"640\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"73\",\"width\":\"640\"},\"sa\":{\"resource\":\"Image:foobar.jpg\"}}'/></a></span></p>");
-add("wt2html", "Width-sized image (using px, with preceding whitespace - test 
regression from r39467)", "<p data-parsoid='{\"dsr\":[0,27,0,0]}'><span 
typeof=\"mw:Image\" data-parsoid='{\"optList\":[{\"ck\":\"width\",\"ak\":\" 
640px\"}],\"dsr\":[0,27,null,null]}'><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/640px-Foobar.jpg\" 
data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" 
height=\"73\" width=\"640\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"73\",\"width\":\"640\"},\"sa\":{\"resource\":\"Image:foobar.jpg\"}}'/></a></span></p>");
+add("wt2html", "Centre-aligned image", "<figure class=\"mw-default-size 
mw-halign-center\" typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"center\",\"ak\":\"centre\"}],\"dsr\":[0,27,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"Image:foobar.jpg\"},\"dsr\":[2,25,null,null]}'><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></figure>");
+add("wt2html", "None-aligned image", "<figure class=\"mw-default-size 
mw-halign-none\" typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"none\",\"ak\":\"none\"}],\"dsr\":[0,25,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"Image:foobar.jpg\"},\"dsr\":[2,23,null,null]}'><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></figure>");
+add("wt2html", "Width + Height sized image (using px) (height is ignored)", 
"<p data-parsoid='{\"dsr\":[0,30,0,0]}'><span typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"width\",\"ak\":\"640x480px\"}],\"dsr\":[0,30,null,null]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"Image:foobar.jpg\"}}'><img
 resource=\"./File:Foobar.jpg\" 
src=\"//example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg\" 
data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" 
height=\"73\" width=\"640\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"73\",\"width\":\"640\"},\"sa\":{\"resource\":\"Image:foobar.jpg\"}}'/></a></span></p>");
+add("wt2html", "Width-sized image (using px, no following whitespace)", "<p 
data-parsoid='{\"dsr\":[0,26,0,0]}'><span typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"width\",\"ak\":\"640px\"}],\"dsr\":[0,26,null,null]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"Image:foobar.jpg\"}}'><img
 resource=\"./File:Foobar.jpg\" 
src=\"//example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg\" 
data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" 
height=\"73\" width=\"640\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"73\",\"width\":\"640\"},\"sa\":{\"resource\":\"Image:foobar.jpg\"}}'/></a></span></p>");
+add("wt2html", "Width-sized image (using px, with following whitespace - test 
regression from r39467)", "<p data-parsoid='{\"dsr\":[0,27,0,0]}'><span 
typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"width\",\"ak\":\"640px 
\"}],\"dsr\":[0,27,null,null]}'><a href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"Image:foobar.jpg\"}}'><img
 resource=\"./File:Foobar.jpg\" 
src=\"//example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg\" 
data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" 
height=\"73\" width=\"640\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"73\",\"width\":\"640\"},\"sa\":{\"resource\":\"Image:foobar.jpg\"}}'/></a></span></p>");
+add("wt2html", "Width-sized image (using px, with preceding whitespace - test 
regression from r39467)", "<p data-parsoid='{\"dsr\":[0,27,0,0]}'><span 
typeof=\"mw:Image\" data-parsoid='{\"optList\":[{\"ck\":\"width\",\"ak\":\" 
640px\"}],\"dsr\":[0,27,null,null]}'><a href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"Image:foobar.jpg\"}}'><img
 resource=\"./File:Foobar.jpg\" 
src=\"//example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg\" 
data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" 
height=\"73\" width=\"640\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"73\",\"width\":\"640\"},\"sa\":{\"resource\":\"Image:foobar.jpg\"}}'/></a></span></p>");
 add("wt2html", "HTML with raw HTML ($wgRawHtml==true)", "<p 
data-parsoid='{\"dsr\":[0,39,0,0]}'>&lt;html>&lt;script>alert(1);&lt;/script>&lt;/html></p>");
 add("wt2html", "Parents of subpages, one level up, not named", "<p 
data-parsoid='{\"dsr\":[0,7,0,0]}'><a rel=\"mw:WikiLink\" 
href=\"./Subpage_test/L1/L2\" title=\"Subpage test/L1/L2\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Subpage_test/L1/L2\"},\"sa\":{\"href\":\"../\"},\"dsr\":[0,7,2,2]}'>Subpage_test/L1/L2</a></p>");
 add("wt2html", "Parents of subpages, two levels up, with lots of extra 
trailing slashes.", "<p data-parsoid='{\"dsr\":[0,14,0,0]}'><a 
rel=\"mw:WikiLink\" href=\"./Subpage_test/L1\" title=\"Subpage test/L1\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Subpage_test/L1\"},\"sa\":{\"href\":\"../../////\"},\"dsr\":[0,14,2,2]}'>Subpage_test/L1</a></p>");
@@ -222,8 +222,8 @@
 add("wt2html", "Do not convert roman numbers to language variants", "<p 
data-parsoid='{\"dsr\":[0,18,0,0]}'>Fridrih IV je car.</p>");
 add("wt2html", "Don't convert raw rule \"-{R|=&gt;}-\" to \"=>\"", "<p 
data-parsoid='{\"dsr\":[0,11,0,0]}'>-{R|=<span typeof=\"mw:Entity\" 
data-parsoid='{\"src\":\"&amp;gt;\",\"srcContent\":\">\",\"dsr\":[5,9,null,null]}'>></span>}-</p>");
 add("wt2html", "Don't break link parsing if language converter markup is in 
the caption.", "<p data-parsoid='{\"dsr\":[0,29,0,0]}'><a rel=\"mw:WikiLink\" 
href=\"./Main_Page\" title=\"Main Page\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Main_Page\"},\"sa\":{\"href\":\"Main
 Page\"},\"dsr\":[0,29,12,2]}'>-{R|main page}-</a></p>");
-add("wt2html", "T146305: Don't break image parsing if language converter 
markup is in the caption.", "<figure class=\"mw-default-size\" 
typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"bogus\",\"ak\":\"-{R\"},{\"ck\":\"caption\",\"ak\":\"caption:}-\"}],\"dsr\":[0,40,2,2]}'><a
 href=\"./Датотека:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./Датотека:Foobar.jpg\"},\"sa\":{},\"dsr\":[2,null,null,null]}'><img
 resource=\"./Датотека: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\":\"./Датотека:Foobar.jpg\",\"height\":\"25\",\"width\":\"220\"},\"sa\":{\"resource\":\"File:Foobar.jpg\"}}'/></a><figcaption
 
data-parsoid='{\"dsr\":[null,38,null,null]}'>caption:}-</figcaption></figure>");
-add("wt2html", "T146305: Don't break image parsing if nested language 
converter markup is in the caption.", "<figure class=\"mw-default-size\" 
typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"bogus\",\"ak\":\"-{zh-cn:blog
 (hk: -{zh-hans\"},{\"ck\":\"bogus\",\"ak\":\"WEBJOURNAL}-, tw: 
-{zh-hans\"},{\"ck\":\"caption\",\"ak\":\"WEBLOG}-)}-\"}],\"dsr\":[0,93,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{},\"dsr\":[2,null,null,null]}'><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
 
data-parsoid='{\"dsr\":[null,91,null,null]}'>WEBLOG}-)}-</figcaption></figure>");
+add("wt2html", "T146305: Don't break image parsing if language converter 
markup is in the caption.", "<figure class=\"mw-default-size\" 
typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"bogus\",\"ak\":\"-{R\"},{\"ck\":\"caption\",\"ak\":\"caption:}-\"}],\"dsr\":[0,40,2,2]}'><a
 href=\"./Датотека:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./Датотека:Foobar.jpg\"},\"sa\":{\"href\":\"File:Foobar.jpg\"},\"dsr\":[2,null,null,null]}'><img
 resource=\"./Датотека: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\":\"./Датотека:Foobar.jpg\",\"height\":\"25\",\"width\":\"220\"},\"sa\":{\"resource\":\"File:Foobar.jpg\"}}'/></a><figcaption
 
data-parsoid='{\"dsr\":[null,38,null,null]}'>caption:}-</figcaption></figure>");
+add("wt2html", "T146305: Don't break image parsing if nested language 
converter markup is in the caption.", "<figure class=\"mw-default-size\" 
typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"bogus\",\"ak\":\"-{zh-cn:blog
 (hk: -{zh-hans\"},{\"ck\":\"bogus\",\"ak\":\"WEBJOURNAL}-, tw: 
-{zh-hans\"},{\"ck\":\"caption\",\"ak\":\"WEBLOG}-)}-\"}],\"dsr\":[0,93,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"File:Foobar.jpg\"},\"dsr\":[2,null,null,null]}'><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
 
data-parsoid='{\"dsr\":[null,91,null,null]}'>WEBLOG}-)}-</figcaption></figure>");
 add("wt2html", "Don't break gallery if language converter markup is inside.", 
"<ul class=\"gallery mw-gallery-traditional\" typeof=\"mw:Extension/gallery\" 
about=\"#mwt5\" data-parsoid='{\"dsr\":[0,172,2,2]}' 
data-mw='{\"name\":\"gallery\",\"attrs\":{},\"body\":{\"extsrc\":\"\\nFile:foobar.jpg|[[File:foobar.jpg|20px|desc|alt=-{R|foo}-|-{R|bar}-]]|alt=-{R|bat}-\\nFile:foobar.jpg|{{Test|unamedParam|alt=-{R|param}-}}|alt=galleryalt\\n\"}}'>\n<li
 class=\"gallerybox\" style=\"width: 155px;\"><div class=\"thumb\" 
style=\"width: 150px; height: 150px;\"><span style=\"display: inline-block; 
height: 100%; vertical-align: middle;\"></span><span typeof=\"mw:Image\" 
style=\"vertical-align: middle; display: inline-block;\"><a 
href=\"./File:Foobar.jpg\"><img alt=\"-{R\" resource=\"./File:Foobar.jpg\" 
src=\"//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg\" 
data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" 
height=\"14\" width=\"120\"/></a></span></div><div 
class=\"gallerytext\">bat}-</div></li>\n<li class=\"gallerybox\" style=\"width: 
155px;\"><div class=\"thumb\" style=\"width: 150px; height: 150px;\"><span 
style=\"display: inline-block; height: 100%; vertical-align: 
middle;\"></span><span typeof=\"mw:Image\" style=\"vertical-align: middle; 
display: inline-block;\"><a href=\"./File:Foobar.jpg\"><img alt=\"galleryalt\" 
resource=\"./File:Foobar.jpg\" 
src=\"//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg\" 
data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" 
height=\"14\" width=\"120\"/></a></span></div><div class=\"gallerytext\"><span 
about=\"#mwt4\" typeof=\"mw:Transclusion\" 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"Test\",\"href\":\"./Template:Test\"},\"params\":{\"1\":{\"wt\":\"unamedParam\"},\"2\":{\"wt\":\"param}-\"},\"alt\":{\"wt\":\"-{R\"}},\"i\":0}}]}'>This
 is a test template</span></div></li>\n</ul>");
 add("wt2html", "Don't break list handling if language converter markup is in 
the item.", "<dl data-parsoid='{\"dsr\":[0,24,0,0]}'><dt 
data-parsoid='{\"dsr\":[0,8,1,0]}'>-{zh-cn</dt><dd 
data-parsoid='{\"stx\":\"row\",\"dsr\":[8,24,1,0]}'>AAA;zh-tw:BBB}-</dd></dl>");
 add("wt2html", "T153140: Don't break table handling if language converter 
markup is in the cell.", "<table data-parsoid='{\"dsr\":[0,18,2,2]}'>\n<tbody 
data-parsoid='{\"dsr\":[3,16,0,0]}'><tr 
data-parsoid='{\"startTagSrc\":\"|-\",\"autoInsertedEnd\":true,\"dsr\":[3,15,2,0]}'>\n<td
 
data-parsoid='{\"a\":{\"-{R\":null},\"sa\":{\"-{R\":\"\"},\"autoInsertedEnd\":true,\"dsr\":[6,15,6,0]}'>B}-</td></tr>\n</tbody></table>");
@@ -233,21 +233,21 @@
 add("wt2html", "Nesting tags, paragraphs on lines which begin with <div>", 
"<div data-parsoid='{\"stx\":\"html\",\"dsr\":[0,11,5,6]}'></div><p 
data-parsoid='{\"dsr\":[11,20,0,0]}'><strong 
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[11,20,8,0]}'>A</strong></p>\n<p
 data-parsoid='{\"dsr\":[21,31,0,0]}'><strong 
data-parsoid='{\"stx\":\"html\",\"autoInsertedStart\":true,\"dsr\":[21,31,0,9]}'>B</strong></p>");
 add("wt2html", "Bug 6200: paragraphs inside blockquotes (no extra line 
breaks)", "<blockquote 
data-parsoid='{\"stx\":\"html\",\"dsr\":[0,43,12,13]}'>Line one\n\nLine 
two</blockquote>");
 add("wt2html", "Bug 6200: paragraphs inside blockquotes (extra line break on 
close)", "<blockquote 
data-parsoid='{\"stx\":\"html\",\"dsr\":[0,44,12,13]}'>Line one\n\n<p 
data-parsoid='{\"dsr\":[22,30,0,0]}'>Line two</p>\n</blockquote>");
-add("wt2html", "Free external link invading image caption", "<figure 
class=\"mw-default-size\" typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"bogus\",\"ak\":\"http://x\"},{\"ck\":\"caption\",\"ak\":\"hello\"}],\"dsr\":[0,41,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{},\"dsr\":[2,null,null,null]}'><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\":\"Image:Foobar.jpg\"}}'/></a><figcaption
 data-parsoid='{\"dsr\":[null,39,null,null]}'>hello</figcaption></figure>");
+add("wt2html", "Free external link invading image caption", "<figure 
class=\"mw-default-size\" typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"bogus\",\"ak\":\"http://x\"},{\"ck\":\"caption\",\"ak\":\"hello\"}],\"dsr\":[0,41,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"Image:Foobar.jpg\"},\"dsr\":[2,null,null,null]}'><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\":\"Image:Foobar.jpg\"}}'/></a><figcaption
 data-parsoid='{\"dsr\":[null,39,null,null]}'>hello</figcaption></figure>");
 add("wt2html", "formatdate parser function", "<p about=\"#mwt1\" 
typeof=\"mw:Transclusion\" data-parsoid='{\"dsr\":[0,26,0,0],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"#formatdate:2009-03-24\",\"function\":\"#formatdate\"},\"params\":{},\"i\":0}}]}'>Parser
 function implementation for pf_#formatdate missing in Parsoid.</p>");
 add("wt2html", "formatdate parser function, with default format", "<p 
about=\"#mwt1\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"dsr\":[0,30,0,0],\"pi\":[[{\"k\":\"1\"}]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"#formatdate:2009-03-24\",\"function\":\"#formatdate\"},\"params\":{\"1\":{\"wt\":\"mdy\"}},\"i\":0}}]}'>Parser
 function implementation for pf_#formatdate missing in Parsoid.</p>");
 add("wt2html", "Spacing of numbers in formatted dates", "<p about=\"#mwt1\" 
typeof=\"mw:Transclusion\" data-parsoid='{\"dsr\":[0,26,0,0],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"#formatdate:January 
15\",\"function\":\"#formatdate\"},\"params\":{},\"i\":0}}]}'>Parser function 
implementation for pf_#formatdate missing in Parsoid.</p>");
 add("wt2html", "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", "<p about=\"#mwt1\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"dsr\":[0,30,0,0],\"pi\":[[{\"k\":\"1\"}]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"#formatdate:2009-03-24\",\"function\":\"#formatdate\"},\"params\":{\"1\":{\"wt\":\"dmy\"}},\"i\":0}}]}'>Parser
 function implementation for pf_#formatdate missing in Parsoid.</p>");
-add("wt2html", "Bad images - basic functionality", "<p 
data-parsoid='{\"dsr\":[0,16,0,0]}'><span class=\"mw-default-size\" 
typeof=\"mw:Error mw:Image\" 
data-parsoid='{\"optList\":[],\"dsr\":[0,16,null,null]}' 
data-mw='{\"errors\":[{\"key\":\"missing-image\",\"message\":\"This image does 
not exist.\"}]}'><a href=\"./File:Bad.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Bad.jpg\"},\"sa\":{}}'><img 
resource=\"./File:Bad.jpg\" src=\"./Special:FilePath/Bad.jpg\" height=\"220\" 
width=\"220\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Bad.jpg\",\"height\":\"220\",\"width\":\"220\"},\"sa\":{\"resource\":\"File:Bad.jpg\"}}'/></a></span></p>");
-add("wt2html", "Bad images - bug 16039: text after bad image disappears", "<p 
data-parsoid='{\"dsr\":[0,32,0,0]}'>Foo bar\n<span class=\"mw-default-size\" 
typeof=\"mw:Error mw:Image\" 
data-parsoid='{\"optList\":[],\"dsr\":[8,24,null,null]}' 
data-mw='{\"errors\":[{\"key\":\"missing-image\",\"message\":\"This image does 
not exist.\"}]}'><a href=\"./File:Bad.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Bad.jpg\"},\"sa\":{}}'><img 
resource=\"./File:Bad.jpg\" src=\"./Special:FilePath/Bad.jpg\" height=\"220\" 
width=\"220\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Bad.jpg\",\"height\":\"220\",\"width\":\"220\"},\"sa\":{\"resource\":\"File:Bad.jpg\"}}'/></a></span>\nBar
 foo</p>");
+add("wt2html", "Bad images - basic functionality", "<p 
data-parsoid='{\"dsr\":[0,16,0,0]}'><span class=\"mw-default-size\" 
typeof=\"mw:Error mw:Image\" 
data-parsoid='{\"optList\":[],\"dsr\":[0,16,null,null]}' 
data-mw='{\"errors\":[{\"key\":\"missing-image\",\"message\":\"This image does 
not exist.\"}]}'><a href=\"./File:Bad.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Bad.jpg\"},\"sa\":{\"href\":\"File:Bad.jpg\"}}'><img
 resource=\"./File:Bad.jpg\" src=\"./Special:FilePath/Bad.jpg\" height=\"220\" 
width=\"220\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Bad.jpg\",\"height\":\"220\",\"width\":\"220\"},\"sa\":{\"resource\":\"File:Bad.jpg\"}}'/></a></span></p>");
+add("wt2html", "Bad images - bug 16039: text after bad image disappears", "<p 
data-parsoid='{\"dsr\":[0,32,0,0]}'>Foo bar\n<span class=\"mw-default-size\" 
typeof=\"mw:Error mw:Image\" 
data-parsoid='{\"optList\":[],\"dsr\":[8,24,null,null]}' 
data-mw='{\"errors\":[{\"key\":\"missing-image\",\"message\":\"This image does 
not exist.\"}]}'><a href=\"./File:Bad.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Bad.jpg\"},\"sa\":{\"href\":\"File:Bad.jpg\"}}'><img
 resource=\"./File:Bad.jpg\" src=\"./Special:FilePath/Bad.jpg\" height=\"220\" 
width=\"220\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Bad.jpg\",\"height\":\"220\",\"width\":\"220\"},\"sa\":{\"resource\":\"File:Bad.jpg\"}}'/></a></span>\nBar
 foo</p>");
 add("wt2html", "Page status indicators: Empty name is invalid", "<p 
data-parsoid='{\"dsr\":[0,56,0,0]}'>&lt;indicator name=\" 
\">&lt;/indicator>\n&lt;indicator>&lt;/indicator></p>");
 add("wt2html", "Page status indicators: Weird syntaxes that are okay", "<p 
data-parsoid='{\"dsr\":[0,62,0,0]}'>&lt;indicator name=\"empty\" 
/>\n&lt;indicator name=\"name\">&lt;/indicator></p>");
-add("wt2html", "Page status indicators: Torture test", "<p 
data-parsoid='{\"dsr\":[0,240,0,0]}'>&lt;indicator name=\"01\">hello 
world&lt;/indicator>\n&lt;indicator name=\"02\"><a rel=\"mw:WikiLink\" 
href=\"./Main_Page\" title=\"Main Page\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Main_Page\"},\"sa\":{\"href\":\"Main
 Page\"},\"dsr\":[66,79,2,2]}'>Main Page</a>&lt;/indicator>\n&lt;indicator 
name=\"03\"><span typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"width\",\"ak\":\"25px\"},{\"ck\":\"link\",\"ak\":\"link=\"}],\"dsr\":[113,143,null,null]}'><span
 data-parsoid=\"{}\"><img resource=\"./File:Foobar.jpg\" 
src=\"//example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg\" 
data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" 
height=\"3\" width=\"25\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"3\",\"width\":\"25\"},\"sa\":{\"resource\":\"File:Foobar.jpg\"}}'/></span></span>&lt;/indicator>\n&lt;indicator
 name=\"04\"><span typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"width\",\"ak\":\"25px\"}],\"dsr\":[177,201,null,null]}'><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/25px-Foobar.jpg\" 
data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" 
height=\"3\" width=\"25\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"3\",\"width\":\"25\"},\"sa\":{\"resource\":\"File:Foobar.jpg\"}}'/></a></span>&lt;/indicator>\n&lt;indicator
 name=\"05\">* foo</p>\n<ul data-parsoid='{\"dsr\":[241,258,0,0]}'><li 
data-parsoid='{\"dsr\":[241,258,1,0]}'> bar&lt;/indicator></li></ul>\n<p 
data-parsoid='{\"dsr\":[259,359,0,0]}'>&lt;indicator name=\"06\"><span 
typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[280,300,8,9]}'>foo</span>&lt;/indicator>\n&lt;indicator 
name=\"07\"> Preformatted&lt;/indicator></p>\n<p 
data-parsoid='{\"dsr\":[360,381,0,0]}'>&lt;indicator name=\"08\"></p><div 
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[381,519,5,0]}'>Broken
 tag&lt;/indicator>\n<p data-parsoid='{\"dsr\":[409,495,0,0]}'>&lt;indicator 
name=\"09\">{| class=wikitable\n| cell\n|}&lt;/indicator>\n&lt;indicator 
name=\"10\">Two</p>\n\n<p 
data-parsoid='{\"dsr\":[497,519,0,0]}'>paragraphs&lt;/indicator></p></div>");
+add("wt2html", "Page status indicators: Torture test", "<p 
data-parsoid='{\"dsr\":[0,240,0,0]}'>&lt;indicator name=\"01\">hello 
world&lt;/indicator>\n&lt;indicator name=\"02\"><a rel=\"mw:WikiLink\" 
href=\"./Main_Page\" title=\"Main Page\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Main_Page\"},\"sa\":{\"href\":\"Main
 Page\"},\"dsr\":[66,79,2,2]}'>Main Page</a>&lt;/indicator>\n&lt;indicator 
name=\"03\"><span typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"width\",\"ak\":\"25px\"},{\"ck\":\"link\",\"ak\":\"link=\"}],\"dsr\":[113,143,null,null]}'><span
 data-parsoid=\"{}\"><img resource=\"./File:Foobar.jpg\" 
src=\"//example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg\" 
data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" 
height=\"3\" width=\"25\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"3\",\"width\":\"25\"},\"sa\":{\"resource\":\"File:Foobar.jpg\"}}'/></span></span>&lt;/indicator>\n&lt;indicator
 name=\"04\"><span typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"width\",\"ak\":\"25px\"}],\"dsr\":[177,201,null,null]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"File:Foobar.jpg\"}}'><img
 resource=\"./File:Foobar.jpg\" 
src=\"//example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg\" 
data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" 
height=\"3\" width=\"25\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"3\",\"width\":\"25\"},\"sa\":{\"resource\":\"File:Foobar.jpg\"}}'/></a></span>&lt;/indicator>\n&lt;indicator
 name=\"05\">* foo</p>\n<ul data-parsoid='{\"dsr\":[241,258,0,0]}'><li 
data-parsoid='{\"dsr\":[241,258,1,0]}'> bar&lt;/indicator></li></ul>\n<p 
data-parsoid='{\"dsr\":[259,359,0,0]}'>&lt;indicator name=\"06\"><span 
typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[280,300,8,9]}'>foo</span>&lt;/indicator>\n&lt;indicator 
name=\"07\"> Preformatted&lt;/indicator></p>\n<p 
data-parsoid='{\"dsr\":[360,381,0,0]}'>&lt;indicator name=\"08\"></p><div 
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[381,519,5,0]}'>Broken
 tag&lt;/indicator>\n<p data-parsoid='{\"dsr\":[409,495,0,0]}'>&lt;indicator 
name=\"09\">{| class=wikitable\n| cell\n|}&lt;/indicator>\n&lt;indicator 
name=\"10\">Two</p>\n\n<p 
data-parsoid='{\"dsr\":[497,519,0,0]}'>paragraphs&lt;/indicator></p></div>");
 add("wt2html", "Bug 31098 Template which includes system messages which 
includes the template", "<p about=\"#mwt1\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"dsr\":[0,13,0,0],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"Identical\",\"href\":\"./Template:Identical\"},\"params\":{},\"i\":0}}]}'>Parser
 function implementation for pf_int missing in Parsoid.\nParser function 
implementation for pf_int missing in Parsoid.</p>");
 add("wt2html", "Bug31490 Turkish: ucfirst 'ix'", "<p about=\"#mwt1\" 
typeof=\"mw:Transclusion\" data-parsoid='{\"dsr\":[0,14,0,0],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"ucfirst:ix\",\"function\":\"ucfirst\"},\"params\":{},\"i\":0}}]}'>Ix</p>");
 add("wt2html", "Bug31490 Turkish: ucfırst (with a dotless i)", "<p 
data-parsoid='{\"dsr\":[0,16,0,0]}'><span typeof=\"mw:Transclusion 
mw:Placeholder\" about=\"#mwt1\" 
data-parsoid='{\"dsr\":[0,16,null,null],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"ucfırst:blah\",\"href\":\"./Ucfırst:blah\"},\"params\":{},\"i\":0}}]}'>Warning:
 Page/template fetching disabled, and no cache for Ucfırst:blah</span></p>");
 add("wt2html", "Bug31490 ucfırst (with a dotless i) with English language", 
"<p data-parsoid='{\"dsr\":[0,16,0,0]}'><span typeof=\"mw:Transclusion 
mw:Placeholder\" about=\"#mwt1\" 
data-parsoid='{\"dsr\":[0,16,null,null],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"ucfırst:blah\",\"href\":\"./Ucfırst:blah\"},\"params\":{},\"i\":0}}]}'>Warning:
 Page/template fetching disabled, and no cache for Ucfırst:blah</span></p>");
-add("wt2html", "Bug 33845: Headings become cursive in TOC when they contain an 
image", "<meta property=\"mw:PageProp/toc\" 
data-parsoid='{\"src\":\"__TOC__\",\"magicSrc\":\"__TOC__\",\"dsr\":[0,7,null,null]}'/>\n<h2
 id=\"Image\" data-parsoid='{\"dsr\":[8,40,2,2]}'> Image <span 
class=\"mw-default-size\" typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[],\"dsr\":[17,37,null,null]}'><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\":\"Image:foobar.jpg\"}}'/></a></span>
 </h2>");
+add("wt2html", "Bug 33845: Headings become cursive in TOC when they contain an 
image", "<meta property=\"mw:PageProp/toc\" 
data-parsoid='{\"src\":\"__TOC__\",\"magicSrc\":\"__TOC__\",\"dsr\":[0,7,null,null]}'/>\n<h2
 id=\"Image\" data-parsoid='{\"dsr\":[8,40,2,2]}'> Image <span 
class=\"mw-default-size\" typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[],\"dsr\":[17,37,null,null]}'><a 
href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"Image: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>
 </h2>");
 add("wt2html", "Bug 33845 (2): Headings become bold in TOC when they contain a 
blockquote", "<meta property=\"mw:PageProp/toc\" 
data-parsoid='{\"src\":\"__TOC__\",\"magicSrc\":\"__TOC__\",\"dsr\":[0,7,null,null]}'/>\n<h2
 id=\"Quote\" data-parsoid='{\"dsr\":[8,44,2,2]}'> <blockquote 
data-parsoid='{\"stx\":\"html\",\"dsr\":[11,41,12,13]}'>Quote</blockquote> 
</h2>");
 add("wt2html", "Multiple tags in TOC", "<meta property=\"mw:PageProp/toc\" 
data-parsoid='{\"src\":\"__TOC__\",\"magicSrc\":\"__TOC__\",\"dsr\":[0,7,null,null]}'/>\n<h2
 id=\"Foo_Bar\" data-parsoid='{\"dsr\":[8,35,2,2]}'> <i 
data-parsoid='{\"stx\":\"html\",\"dsr\":[11,21,3,4]}'>Foo</i> <b 
data-parsoid='{\"stx\":\"html\",\"dsr\":[22,32,3,4]}'>Bar</b> </h2>\n\n<h2 
id=\"Foo_Bar_2\" data-parsoid='{\"dsr\":[37,82,2,2]}'> <i 
data-parsoid='{\"stx\":\"html\",\"dsr\":[40,50,3,4]}'>Foo</i> <blockquote 
data-parsoid='{\"stx\":\"html\",\"dsr\":[51,79,12,13]}'>Bar</blockquote> 
</h2>");
 add("wt2html", "span tags with directionality in TOC", "<meta 
property=\"mw:PageProp/toc\" 
data-parsoid='{\"src\":\"__TOC__\",\"magicSrc\":\"__TOC__\",\"dsr\":[0,7,null,null]}'/>\n<h2
 id=\"C.2B.2B\" data-parsoid='{\"dsr\":[8,40,2,2]}'> <span dir=\"ltr\" 
data-parsoid='{\"stx\":\"html\",\"dsr\":[11,37,16,7]}'>C++</span> </h2>\n\n<h2 
id=\".D7.96.D7.91.D7.A0.D7.92.21\" data-parsoid='{\"dsr\":[42,76,2,2]}'> <span 
dir=\"rtl\" data-parsoid='{\"stx\":\"html\",\"dsr\":[45,73,16,7]}'>זבנג!</span> 
</h2>\n\n<h2 
id=\"The_attributes_on_these_span_tags_must_be_deleted_from_the_TOC\" 
data-parsoid='{\"dsr\":[78,186,2,2]}'> <span style=\"font-style: italic\" 
data-parsoid='{\"stx\":\"html\",\"dsr\":[81,183,33,7]}'>The attributes on these 
span tags must be deleted from the TOC</span> </h2>\n\n<h2 
id=\"All_attributes_on_these_span_tags_must_be_deleted_from_the_TOC\" 
data-parsoid='{\"dsr\":[188,306,2,2]}'> <span style=\"font-style: italic\" 
dir=\"ltr\" data-parsoid='{\"stx\":\"html\",\"dsr\":[191,303,43,7]}'>All 
attributes on these span tags must be deleted from the TOC</span> </h2>\n\n<h2 
id=\"Attributes_after_dir_on_these_span_tags_must_be_deleted_from_the_TOC\" 
data-parsoid='{\"dsr\":[308,432,2,2]}'> <span dir=\"ltr\" style=\"font-style: 
italic\" data-parsoid='{\"stx\":\"html\",\"dsr\":[311,429,43,7]}'>Attributes 
after dir on these span tags must be deleted from the TOC</span> </h2>");
@@ -466,15 +466,15 @@
 add("html2html", "{{#speciale:}} page name, known", "<p 
data-parsoid='{\"dsr\":[0,21,0,0]}'>Special:RecentChanges</p>");
 add("html2html", "{{#speciale:}} page name with subpage, known", "<p 
data-parsoid='{\"dsr\":[0,27,0,0]}'>Special:RecentChanges/param</p>");
 add("html2html", "{{#speciale:}} page name, unknown", "<p 
data-parsoid='{\"dsr\":[0,26,0,0]}'>Special:Foobar_nonexistent</p>");
-add("html2html", "Allow empty links in image captions (Bug 60753)", "<figure 
class=\"mw-default-size\" typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"caption\",\"ak\":\"Caption
 
[[Link1]]\\n&lt;nowiki>[[]]&lt;/nowiki>\\n[[Link2]]\\n\"}],\"dsr\":[0,76,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{},\"dsr\":[2,null,null,null]}'><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
 data-parsoid='{\"dsr\":[null,74,null,null]}'>Caption <a rel=\"mw:WikiLink\" 
href=\"./Link1\" title=\"Link1\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Link1\"},\"sa\":{\"href\":\"Link1\"},\"dsr\":[32,41,2,2]}'>Link1</a>\n<span
 typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[42,63,8,9]}'>[[]]</span>\n<a 
rel=\"mw:WikiLink\" href=\"./Link2\" title=\"Link2\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Link2\"},\"sa\":{\"href\":\"Link2\"},\"dsr\":[64,73,2,2]}'>Link2</a>\n</figcaption></figure>");
-add("html2html", "Image with multiple attributes from the same template", 
"<figure class=\"mw-default-size mw-halign-right\" typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"right\",\"ak\":\"right\"},{\"ck\":\"caption\",\"ak\":\"Caption
 text\"}],\"dsr\":[0,38,2,2]}'><a href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{},\"dsr\":[2,null,null,null]}'><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><figcaption
 data-parsoid='{\"dsr\":[null,36,null,null]}'>Caption 
text</figcaption></figure>\n");
-add("html2html", "Image with link tails", "<p 
data-parsoid='{\"dsr\":[0,29,0,0]}'>123<span class=\"mw-default-size\" 
typeof=\"mw:Image\" data-parsoid='{\"optList\":[],\"dsr\":[3,22,null,null]}'><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>456\n123</p>\n<figure
 class=\"mw-default-size mw-halign-right\" typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"right\",\"ak\":\"right\"}],\"dsr\":[30,55,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{},\"dsr\":[32,53,null,null]}'><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></figure>\n<p
 data-parsoid='{\"dsr\":[56,63,0,0]}'>456\n123</p>\n<figure 
class=\"mw-default-size\" typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"}],\"dsr\":[64,89,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{},\"dsr\":[66,87,null,null]}'><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></figure>\n<p
 data-parsoid='{\"dsr\":[90,93,0,0]}'>456</p>\n");
+add("html2html", "Allow empty links in image captions (Bug 60753)", "<figure 
class=\"mw-default-size\" typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"caption\",\"ak\":\"Caption
 
[[Link1]]\\n&lt;nowiki>[[]]&lt;/nowiki>\\n[[Link2]]\\n\"}],\"dsr\":[0,76,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"File:Foobar.jpg\"},\"dsr\":[2,null,null,null]}'><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
 data-parsoid='{\"dsr\":[null,74,null,null]}'>Caption <a rel=\"mw:WikiLink\" 
href=\"./Link1\" title=\"Link1\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Link1\"},\"sa\":{\"href\":\"Link1\"},\"dsr\":[32,41,2,2]}'>Link1</a>\n<span
 typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[42,63,8,9]}'>[[]]</span>\n<a 
rel=\"mw:WikiLink\" href=\"./Link2\" title=\"Link2\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Link2\"},\"sa\":{\"href\":\"Link2\"},\"dsr\":[64,73,2,2]}'>Link2</a>\n</figcaption></figure>");
+add("html2html", "Image with multiple attributes from the same template", 
"<figure class=\"mw-default-size mw-halign-right\" typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"right\",\"ak\":\"right\"},{\"ck\":\"caption\",\"ak\":\"Caption
 text\"}],\"dsr\":[0,38,2,2]}'><a href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"File:Foobar.jpg\"},\"dsr\":[2,null,null,null]}'><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><figcaption
 data-parsoid='{\"dsr\":[null,36,null,null]}'>Caption 
text</figcaption></figure>\n");
+add("html2html", "Image with link tails", "<p 
data-parsoid='{\"dsr\":[0,29,0,0]}'>123<span class=\"mw-default-size\" 
typeof=\"mw:Image\" data-parsoid='{\"optList\":[],\"dsr\":[3,22,null,null]}'><a 
href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"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\":\"File:Foobar.jpg\"}}'/></a></span>456\n123</p>\n<figure
 class=\"mw-default-size mw-halign-right\" typeof=\"mw:Image\" 
data-parsoid='{\"optList\":[{\"ck\":\"right\",\"ak\":\"right\"}],\"dsr\":[30,55,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"File:Foobar.jpg\"},\"dsr\":[32,53,null,null]}'><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></figure>\n<p
 data-parsoid='{\"dsr\":[56,63,0,0]}'>456\n123</p>\n<figure 
class=\"mw-default-size\" typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"}],\"dsr\":[64,89,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"File:Foobar.jpg\"},\"dsr\":[66,87,null,null]}'><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></figure>\n<p
 data-parsoid='{\"dsr\":[90,93,0,0]}'>456</p>\n");
 add("html2html", "Image with link parameter, wgNoFollowLinks set to false", 
"<p data-parsoid='{\"dsr\":[0,41,0,0]}'><img 
src=\"http://example.com/images/3/3a/Foobar.jpg\"; alt=\"Foobar.jpg\" 
rel=\"mw:externalImage\" data-parsoid='{\"dsr\":[0,41,null,null]}'/></p>\n");
 add("html2html", "Image with link parameter, wgNoFollowDomainExceptions", "<p 
data-parsoid='{\"dsr\":[0,41,0,0]}'><img 
src=\"http://example.com/images/3/3a/Foobar.jpg\"; alt=\"Foobar.jpg\" 
rel=\"mw:externalImage\" data-parsoid='{\"dsr\":[0,41,null,null]}'/></p>\n");
 add("html2html", "Link to image page- image page normally doesn't exists, 
hence edit link\nAdd test with existing image page\n#<p><a 
href=\"/wiki/File:Test\" title=\"Image:Test\">Image:test</a>", "<p 
data-parsoid='{\"dsr\":[0,61,0,0]}'>[/index.php?title=File:Test&amp;action=edit&amp;redlink=1
 Image:test]</p>\n");
 add("html2html", "bug 18784  Link to non-existent image page with caption 
should use caption as link text", "<p 
data-parsoid='{\"dsr\":[0,58,0,0]}'>[/index.php?title=File:Test&amp;action=edit&amp;redlink=1
 caption]</p>\n");
-add("html2html", "SVG thumbnails with invalid language code", "<figure 
class=\"mw-default-size\" typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"lang\",\"ak\":\"lang=invalid.language.code\"}],\"dsr\":[0,52,2,2]}'><a
 href=\"./File:Foobar.svg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.svg\"},\"sa\":{},\"dsr\":[2,50,null,null]}'><img
 resource=\"./File:Foobar.svg\" 
src=\"//example.com/images/thumb/f/ff/Foobar.svg/220px-Foobar.svg\" 
lang=\"invalid.language.code\" data-file-width=\"240\" data-file-height=\"180\" 
data-file-type=\"drawing\" height=\"165\" width=\"220\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.svg\",\"lang\":\"invalid.language.code\",\"height\":\"165\",\"width\":\"220\"},\"sa\":{\"resource\":\"File:Foobar.svg\",\"lang\":\"lang=invalid.language.code\"}}'/></a></figure>\n");
-add("html2html", "T93580: 3. Templated <ref> inside inline images", "<p 
data-parsoid='{\"dsr\":[0,98,0,0]}'><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>}}\"}],\"dsr\":[0,98,null,null]}' 
data-mw='{\"caption\":\"Undisplayed caption in inline image with ref: &lt;span 
about=\\\"#mwt3\\\" class=\\\"mw-ref\\\" id=\\\"cite_ref-1\\\" 
rel=\\\"dc:references\\\" typeof=\\\"mw:Transclusion  mw:Extension/ref\\\" 
data-parsoid=&#39;{\\\"dsr\\\":[64,96,null,null],\\\"pi\\\":[[{\\\"k\\\":\\\"1\\\"}]]}&#39;
 
data-mw=&#39;{\\\"parts\\\":[{\\\"template\\\":{\\\"target\\\":{\\\"wt\\\":\\\"echo\\\",\\\"href\\\":\\\"./Template:Echo\\\"},\\\"params\\\":{\\\"1\\\":{\\\"wt\\\":\\\"&amp;lt;ref>{{echo|foo}}&amp;lt;/ref>\\\"}},\\\"i\\\":0}}]}&#39;>&lt;a
 href=\\\"./Main_Page#cite_note-1\\\" style=\\\"counter-reset: mw-Ref 1;\\\" 
data-parsoid=\\\"{}\\\">&lt;span class=\\\"mw-reflink-text\\\" 
data-parsoid=\\\"{}\\\">[1]&lt;/span>&lt;/a>&lt;/span>&lt;meta 
typeof=\\\"mw:Transclusion mw:Extension/ref/Marker\\\" about=\\\"#mwt3\\\" 
data-parsoid=&#39;{\\\"group\\\":\\\"\\\",\\\"name\\\":\\\"\\\",\\\"content\\\":\\\"foo\\\",\\\"hasRefInRef\\\":false,\\\"dsr\\\":[64,96,null,null],\\\"pi\\\":[[{\\\"k\\\":\\\"1\\\"}]]}&#39;
 
data-mw=&#39;{\\\"parts\\\":[{\\\"template\\\":{\\\"target\\\":{\\\"wt\\\":\\\"echo\\\",\\\"href\\\":\\\"./Template:Echo\\\"},\\\"params\\\":{\\\"1\\\":{\\\"wt\\\":\\\"&amp;lt;ref>{{echo|foo}}&amp;lt;/ref>\\\"}},\\\"i\\\":0}}]}&#39;/>\"}'><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>\n\n<ol
 class=\"mw-references\" typeof=\"mw:Extension/references\" about=\"#mwt7\" 
data-parsoid='{\"dsr\":[100,114,2,2]}' 
data-mw='{\"name\":\"references\",\"attrs\":{}}'><li about=\"#cite_note-1\" 
id=\"cite_note-1\"><a href=\"./Main_Page#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>");
+add("html2html", "SVG thumbnails with invalid language code", "<figure 
class=\"mw-default-size\" typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"lang\",\"ak\":\"lang=invalid.language.code\"}],\"dsr\":[0,52,2,2]}'><a
 href=\"./File:Foobar.svg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.svg\"},\"sa\":{\"href\":\"File:Foobar.svg\"},\"dsr\":[2,50,null,null]}'><img
 resource=\"./File:Foobar.svg\" 
src=\"//example.com/images/thumb/f/ff/Foobar.svg/220px-Foobar.svg\" 
lang=\"invalid.language.code\" data-file-width=\"240\" data-file-height=\"180\" 
data-file-type=\"drawing\" height=\"165\" width=\"220\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.svg\",\"lang\":\"invalid.language.code\",\"height\":\"165\",\"width\":\"220\"},\"sa\":{\"resource\":\"File:Foobar.svg\",\"lang\":\"lang=invalid.language.code\"}}'/></a></figure>\n");
+add("html2html", "T93580: 3. Templated <ref> inside inline images", "<p 
data-parsoid='{\"dsr\":[0,98,0,0]}'><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>}}\"}],\"dsr\":[0,98,null,null]}' 
data-mw='{\"caption\":\"Undisplayed caption in inline image with ref: &lt;span 
about=\\\"#mwt3\\\" class=\\\"mw-ref\\\" id=\\\"cite_ref-1\\\" 
rel=\\\"dc:references\\\" typeof=\\\"mw:Transclusion  mw:Extension/ref\\\" 
data-parsoid=&#39;{\\\"dsr\\\":[64,96,null,null],\\\"pi\\\":[[{\\\"k\\\":\\\"1\\\"}]]}&#39;
 
data-mw=&#39;{\\\"parts\\\":[{\\\"template\\\":{\\\"target\\\":{\\\"wt\\\":\\\"echo\\\",\\\"href\\\":\\\"./Template:Echo\\\"},\\\"params\\\":{\\\"1\\\":{\\\"wt\\\":\\\"&amp;lt;ref>{{echo|foo}}&amp;lt;/ref>\\\"}},\\\"i\\\":0}}]}&#39;>&lt;a
 href=\\\"./Main_Page#cite_note-1\\\" style=\\\"counter-reset: mw-Ref 1;\\\" 
data-parsoid=\\\"{}\\\">&lt;span class=\\\"mw-reflink-text\\\" 
data-parsoid=\\\"{}\\\">[1]&lt;/span>&lt;/a>&lt;/span>&lt;meta 
typeof=\\\"mw:Transclusion mw:Extension/ref/Marker\\\" about=\\\"#mwt3\\\" 
data-parsoid=&#39;{\\\"group\\\":\\\"\\\",\\\"name\\\":\\\"\\\",\\\"content\\\":\\\"foo\\\",\\\"hasRefInRef\\\":false,\\\"dsr\\\":[64,96,null,null],\\\"pi\\\":[[{\\\"k\\\":\\\"1\\\"}]]}&#39;
 
data-mw=&#39;{\\\"parts\\\":[{\\\"template\\\":{\\\"target\\\":{\\\"wt\\\":\\\"echo\\\",\\\"href\\\":\\\"./Template:Echo\\\"},\\\"params\\\":{\\\"1\\\":{\\\"wt\\\":\\\"&amp;lt;ref>{{echo|foo}}&amp;lt;/ref>\\\"}},\\\"i\\\":0}}]}&#39;/>\"}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"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\":\"File:Foobar.jpg\"}}'/></a></span></p>\n\n<ol
 class=\"mw-references\" typeof=\"mw:Extension/references\" about=\"#mwt7\" 
data-parsoid='{\"dsr\":[100,114,2,2]}' 
data-mw='{\"name\":\"references\",\"attrs\":{}}'><li about=\"#cite_note-1\" 
id=\"cite_note-1\"><a href=\"./Main_Page#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>");
 add("html2html", "Subpage link", "<p data-parsoid='{\"dsr\":[0,38,0,0]}'><a 
rel=\"mw:WikiLink\" href=\"./Wiki/Subpage_test/subpage\" title=\"Wiki/Subpage 
test/subpage\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Wiki/Subpage_test/subpage\"},\"sa\":{\"href\":\"wiki/Subpage
 test/subpage\"},\"dsr\":[0,38,28,2]}'>/subpage</a></p>\n");
 add("html2html", "Subpage noslash link", "<p 
data-parsoid='{\"dsr\":[0,37,0,0]}'><a rel=\"mw:WikiLink\" 
href=\"./Wiki/Subpage_test/subpage\" title=\"Wiki/Subpage test/subpage\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Wiki/Subpage_test/subpage\"},\"sa\":{\"href\":\"wiki/Subpage
 test/subpage\"},\"dsr\":[0,37,28,2]}'>subpage</a></p>\n");
 add("html2html", "Render invalid page names as plain text (bug 51090)", "<p 
data-parsoid='{\"dsr\":[0,141,0,0]}'>[[./../foo|bar]]\n[[foo�|bar]]\n[[foo/.|bar]]\n[[foo/..|bar]]\n<span
 typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[59,89,8,9]}'>[[foo~~~bar]]</span>\n[[foo>bar]]\n[[foo[bar]]\n[[.]]\n[[..]]\n[[foo././bar]]</p>\n\n<p
 data-parsoid='{\"dsr\":[143,389,0,0]}'>[[<span about=\"#mwt34\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[145,162,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"./../foo\"}},\"i\":0}}]}'>./../foo</span>|bar]]\n[[<span
 about=\"#mwt35\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[171,185,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo/.\"}},\"i\":0}}]}'>foo/.</span>|bar]]\n[[<span
 about=\"#mwt36\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[194,209,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo/..\"}},\"i\":0}}]}'>foo/..</span>|bar]]\n[[<span
 about=\"#mwt37\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[218,237,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo~~~~bar\"}},\"i\":0}}]}'>foo~~~~bar</span>]]\n[[<span
 about=\"#mwt38\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[242,258,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo>bar\"}},\"i\":0}}]}'>foo>bar</span>]]\n[[<span
 about=\"#mwt39\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[263,282,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo././bar\"}},\"i\":0}}]}'>foo././bar</span>]]\n[[<span
 about=\"#mwt40\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[287,303,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo{bar\"}},\"i\":0}}]}'>foo{bar</span>]]\n[[<span
 about=\"#mwt41\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[308,324,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo}bar\"}},\"i\":0}}]}'>foo}bar</span>]]\n[[<span
 about=\"#mwt42\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[329,345,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo[bar\"}},\"i\":0}}]}'>foo[bar</span>]]\n[[<span
 about=\"#mwt43\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[350,366,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo]bar\"}},\"i\":0}}]}'>foo]bar</span>]]\n[[<span
 about=\"#mwt44\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[371,387,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo&lt;bar\"}},\"i\":0}}]}'>foo&lt;bar</span>]]</p>\n");
@@ -543,12 +543,12 @@
 add("html2html", "Partly disable title conversion if variant == main language 
code", "<p data-parsoid='{\"dsr\":[0,2,0,0]}'>ZH</p>\n");
 add("html2html", "Partly disable title conversion if variant == main language 
code, more", "<p data-parsoid='{\"dsr\":[0,2,0,0]}'>ZH</p>\n");
 add("html2html", "Don't break link parsing if language converter markup is in 
the caption.", "<p data-parsoid='{\"dsr\":[0,28,0,0]}'><a rel=\"mw:WikiLink\" 
href=\"./Wiki/Main_Page\" title=\"Wiki/Main Page\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Wiki/Main_Page\"},\"sa\":{\"href\":\"wiki/Main
 Page\"},\"dsr\":[0,28,17,2]}'>main page</a></p>\n");
-add("html2html", "T146305: Don't break image parsing if language converter 
markup is in the caption.", "<figure class=\"mw-default-size\" 
typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"мини\"},{\"ck\":\"caption\",\"ak\":\"&lt;span>&lt;/span>\"}],\"dsr\":[0,42,2,2]}'><a
 href=\"./Датотека:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./Датотека:Foobar.jpg\"},\"sa\":{},\"dsr\":[2,null,null,null]}'><img
 resource=\"./Датотека: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\":\"./Датотека:Foobar.jpg\",\"height\":\"25\",\"width\":\"220\"},\"sa\":{\"resource\":\"Датотека:Foobar.jpg\"}}'/></a><figcaption
 data-parsoid='{\"dsr\":[null,40,null,null]}'><span 
data-parsoid='{\"stx\":\"html\",\"dsr\":[27,40,6,7]}'></span></figcaption></figure>\n");
-add("html2html", "T146305: Don't break image parsing if nested language 
converter markup is in the caption.", "<figure class=\"mw-default-size\" 
typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"缩略图\"},{\"ck\":\"caption\",\"ak\":\"&lt;span>&lt;/span>\"}],\"dsr\":[0,37,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{},\"dsr\":[2,null,null,null]}'><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
 data-parsoid='{\"dsr\":[null,35,null,null]}'><span 
data-parsoid='{\"stx\":\"html\",\"dsr\":[22,35,6,7]}'></span></figcaption></figure>\n");
+add("html2html", "T146305: Don't break image parsing if language converter 
markup is in the caption.", "<figure class=\"mw-default-size\" 
typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"мини\"},{\"ck\":\"caption\",\"ak\":\"&lt;span>&lt;/span>\"}],\"dsr\":[0,42,2,2]}'><a
 href=\"./Датотека:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./Датотека:Foobar.jpg\"},\"sa\":{\"href\":\"Датотека:Foobar.jpg\"},\"dsr\":[2,null,null,null]}'><img
 resource=\"./Датотека: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\":\"./Датотека:Foobar.jpg\",\"height\":\"25\",\"width\":\"220\"},\"sa\":{\"resource\":\"Датотека:Foobar.jpg\"}}'/></a><figcaption
 data-parsoid='{\"dsr\":[null,40,null,null]}'><span 
data-parsoid='{\"stx\":\"html\",\"dsr\":[27,40,6,7]}'></span></figcaption></figure>\n");
+add("html2html", "T146305: Don't break image parsing if nested language 
converter markup is in the caption.", "<figure class=\"mw-default-size\" 
typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"缩略图\"},{\"ck\":\"caption\",\"ak\":\"&lt;span>&lt;/span>\"}],\"dsr\":[0,37,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"File:Foobar.jpg\"},\"dsr\":[2,null,null,null]}'><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
 data-parsoid='{\"dsr\":[null,35,null,null]}'><span 
data-parsoid='{\"stx\":\"html\",\"dsr\":[22,35,6,7]}'></span></figcaption></figure>\n");
 add("html2html", "Don't break gallery if language converter markup is 
inside.", "<p data-parsoid='{\"dsr\":[0,4,0,0]}'>\t\t* </p><div style=\"width: 
155px\" data-parsoid='{\"stx\":\"html\",\"dsr\":[4,295,26,6]}'> \t\t\t<div 
class=\"thumb\" style=\"width: 150px;\" 
data-parsoid='{\"stx\":\"html\",\"dsr\":[34,182,41,6]}'><div 
style=\"margin:68px auto;\" 
data-parsoid='{\"stx\":\"html\",\"dsr\":[75,176,31,6]}'><img 
src=\"http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg\"; 
alt=\"120px-Foobar.jpg\" rel=\"mw:externalImage\" 
data-parsoid='{\"dsr\":[106,170,null,null]}'/></div></div> \t\t\t<div 
class=\"gallerytext\" data-parsoid='{\"stx\":\"html\",\"dsr\":[186,286,25,6]}'> 
<img src=\"http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg\"; 
alt=\"20px-Foobar.jpg\" rel=\"mw:externalImage\" 
data-parsoid='{\"dsr\":[212,275,null,null]}'/>  \t\t\t</div> \t\t</div>\n<p 
data-parsoid='{\"dsr\":[296,300,0,0]}'>\t\t* </p><div style=\"width: 155px\" 
data-parsoid='{\"stx\":\"html\",\"dsr\":[300,551,26,6]}'> \t\t\t<div 
class=\"thumb\" style=\"width: 150px;\" 
data-parsoid='{\"stx\":\"html\",\"dsr\":[330,478,41,6]}'><div 
style=\"margin:68px auto;\" 
data-parsoid='{\"stx\":\"html\",\"dsr\":[371,472,31,6]}'><img 
src=\"http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg\"; 
alt=\"120px-Foobar.jpg\" rel=\"mw:externalImage\" 
data-parsoid='{\"dsr\":[402,466,null,null]}'/></div></div> \t\t\t<div 
class=\"gallerytext\" data-parsoid='{\"stx\":\"html\",\"dsr\":[482,542,25,6]}'> 
This is a test template  \t\t\t</div> \t\t</div>\n");
 add("html2html", "Free external link invading image caption", "<div 
class=\"thumb tright\" 
data-parsoid='{\"stx\":\"html\",\"dsr\":[0,236,26,6]}'><div 
class=\"thumbinner\" style=\"width:182px;\" 
data-parsoid='{\"stx\":\"html\",\"dsr\":[26,230,45,6]}'><img 
src=\"http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg\"; 
alt=\"180px-Foobar.jpg\" rel=\"mw:externalImage\" 
data-parsoid='{\"dsr\":[71,135,null,null]}'/>  <div class=\"thumbcaption\" 
data-parsoid='{\"stx\":\"html\",\"dsr\":[137,224,26,6]}'><div class=\"magnify\" 
data-parsoid='{\"stx\":\"html\",\"dsr\":[163,213,21,6]}'>[/wiki/File:Foobar.jpg]</div>hello</div></div></div>\n");
-add("html2html", "Bad images - basic functionality", "<p 
data-parsoid='{\"dsr\":[0,16,0,0]}'><span class=\"mw-default-size\" 
typeof=\"mw:Error mw:Image\" 
data-parsoid='{\"optList\":[],\"dsr\":[0,16,null,null]}' 
data-mw='{\"errors\":[{\"key\":\"missing-image\",\"message\":\"This image does 
not exist.\"}]}'><a href=\"./File:Bad.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Bad.jpg\"},\"sa\":{}}'><img 
resource=\"./File:Bad.jpg\" src=\"./Special:FilePath/Bad.jpg\" height=\"220\" 
width=\"220\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Bad.jpg\",\"height\":\"220\",\"width\":\"220\"},\"sa\":{\"resource\":\"File:Bad.jpg\"}}'/></a></span></p>\n");
-add("html2html", "Bad images - bug 16039: text after bad image disappears", 
"<p data-parsoid='{\"dsr\":[0,32,0,0]}'>Foo bar\n<span 
class=\"mw-default-size\" typeof=\"mw:Error mw:Image\" 
data-parsoid='{\"optList\":[],\"dsr\":[8,24,null,null]}' 
data-mw='{\"errors\":[{\"key\":\"missing-image\",\"message\":\"This image does 
not exist.\"}]}'><a href=\"./File:Bad.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Bad.jpg\"},\"sa\":{}}'><img 
resource=\"./File:Bad.jpg\" src=\"./Special:FilePath/Bad.jpg\" height=\"220\" 
width=\"220\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Bad.jpg\",\"height\":\"220\",\"width\":\"220\"},\"sa\":{\"resource\":\"File:Bad.jpg\"}}'/></a></span>\nBar
 foo</p>\n");
+add("html2html", "Bad images - basic functionality", "<p 
data-parsoid='{\"dsr\":[0,16,0,0]}'><span class=\"mw-default-size\" 
typeof=\"mw:Error mw:Image\" 
data-parsoid='{\"optList\":[],\"dsr\":[0,16,null,null]}' 
data-mw='{\"errors\":[{\"key\":\"missing-image\",\"message\":\"This image does 
not exist.\"}]}'><a href=\"./File:Bad.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Bad.jpg\"},\"sa\":{\"href\":\"File:Bad.jpg\"}}'><img
 resource=\"./File:Bad.jpg\" src=\"./Special:FilePath/Bad.jpg\" height=\"220\" 
width=\"220\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Bad.jpg\",\"height\":\"220\",\"width\":\"220\"},\"sa\":{\"resource\":\"File:Bad.jpg\"}}'/></a></span></p>\n");
+add("html2html", "Bad images - bug 16039: text after bad image disappears", 
"<p data-parsoid='{\"dsr\":[0,32,0,0]}'>Foo bar\n<span 
class=\"mw-default-size\" typeof=\"mw:Error mw:Image\" 
data-parsoid='{\"optList\":[],\"dsr\":[8,24,null,null]}' 
data-mw='{\"errors\":[{\"key\":\"missing-image\",\"message\":\"This image does 
not exist.\"}]}'><a href=\"./File:Bad.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Bad.jpg\"},\"sa\":{\"href\":\"File:Bad.jpg\"}}'><img
 resource=\"./File:Bad.jpg\" src=\"./Special:FilePath/Bad.jpg\" height=\"220\" 
width=\"220\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Bad.jpg\",\"height\":\"220\",\"width\":\"220\"},\"sa\":{\"resource\":\"File:Bad.jpg\"}}'/></a></span>\nBar
 foo</p>\n");
 add("html2html", "Page status indicators: Weird syntaxes that are okay", "<p 
data-parsoid='{\"dsr\":[0,12,0,0]}'>empty=\nname=</p>\n\n<p 
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[14,14,0,0]}'><br 
data-parsoid='{\"dsr\":[14,14,0,0]}'/></p>\n");
 add("html2html", "Page status indicators: Torture test", "<p 
data-parsoid='{\"dsr\":[0,184,0,0]}'>01=hello world\n02=<a rel=\"mw:WikiLink\" 
href=\"./Wiki/Main_Page\" title=\"Wiki/Main Page\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Wiki/Main_Page\"},\"sa\":{\"href\":\"wiki/Main
 Page\"},\"dsr\":[18,46,17,2]}'>Main Page</a>\n03=<img 
src=\"http://example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg\"; 
alt=\"25px-Foobar.jpg\" rel=\"mw:externalImage\" 
data-parsoid='{\"dsr\":[50,113,null,null]}'/>\n04=<img 
src=\"http://example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg\"; 
alt=\"25px-Foobar.jpg\" rel=\"mw:externalImage\" 
data-parsoid='{\"dsr\":[117,180,null,null]}'/>\n05=</p>\n<ul 
data-parsoid='{\"dsr\":[185,196,0,0]}'><li 
data-parsoid='{\"dsr\":[185,190,1,0]}'> foo</li>\n<li 
data-parsoid='{\"dsr\":[191,196,1,0]}'> bar</li></ul>\n\n<p 
data-parsoid='{\"dsr\":[198,208,0,0]}'>06=foo\n07=</p>\n<pre 
data-parsoid='{\"dsr\":[209,222,1,0]}'>Preformatted</pre>\n\n<p 
data-parsoid='{\"dsr\":[224,227,0,0]}'>08=</p><div 
data-parsoid='{\"stx\":\"html\",\"dsr\":[227,248,5,6]}'>Broken tag</div>\n\n<p 
data-parsoid='{\"dsr\":[250,253,0,0]}'>09=</p>\n<table class=\"wikitable\" 
data-parsoid='{\"dsr\":[254,284,20,2]}'>\n<tbody 
data-parsoid='{\"dsr\":[275,282,0,0]}'><tr 
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[275,281,0,0]}'><td
 data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[275,281,1,0]}'> 
cell</td></tr>\n</tbody></table>\n\n<p 
data-parsoid='{\"dsr\":[286,289,0,0]}'>10=</p>\n\n<p 
data-parsoid='{\"dsr\":[291,294,0,0]}'>Two</p>\n\n<p 
data-parsoid='{\"dsr\":[296,306,0,0]}'>paragraphs</p>\n\n<p 
data-parsoid='{\"dsr\":[308,308,0,0]}'><br 
data-parsoid='{\"dsr\":[308,308,0,0]}'/></p>\n\n\n<p 
data-parsoid='{\"dsr\":[311,311,0,0]}'><br 
data-parsoid='{\"dsr\":[311,311,0,0]}'/></p>\n\n\n<p 
data-parsoid='{\"dsr\":[314,314,0,0]}'><br 
data-parsoid='{\"dsr\":[314,314,0,0]}'/></p>\n\n\n");
 add("html2html", "Bug 31098 Template which includes system messages which 
includes the template", "<p data-parsoid='{\"dsr\":[0,195,0,0]}'><span 
class=\"error\" data-parsoid='{\"stx\":\"html\",\"dsr\":[0,97,20,7]}'>Template 
loop detected: <a rel=\"mw:WikiLink\" href=\"./Wiki/Template:Identical\" 
title=\"Wiki/Template:Identical\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Wiki/Template:Identical\"},\"sa\":{\"href\":\"wiki/Template:Identical\"},\"dsr\":[44,90,26,2]}'>Template:Identical</a></span>\n<span
 class=\"error\" 
data-parsoid='{\"stx\":\"html\",\"dsr\":[98,195,20,7]}'>Template loop detected: 
<a rel=\"mw:WikiLink\" href=\"./Wiki/Template:Identical\" 
title=\"Wiki/Template:Identical\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Wiki/Template:Identical\"},\"sa\":{\"href\":\"wiki/Template:Identical\"},\"dsr\":[142,188,26,2]}'>Template:Identical</a></span></p>\n");
@@ -573,7 +573,7 @@
 add("html2html", "Empty TR followed by a template-generated TR", "<table 
data-parsoid='{\"dsr\":[0,36,2,2]}'>\n<tbody about=\"#mwt1\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"dsr\":[3,34,0,0],\"pi\":[[{\"k\":\"1\"}]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"&lt;tr>&lt;td>foo&lt;/td>&lt;/tr>\"}},\"i\":0}},\"\\n\"]}'><tr><td>foo</td></tr>\n</tbody></table>\n");
 add("html2html", "Empty TR followed by mixed-ws-comment line should RT 
correctly", "<table data-parsoid='{\"dsr\":[0,36,2,2]}'>\n\n <!--c--><tbody 
data-parsoid='{\"dsr\":[13,34,0,0]}'><tr 
data-parsoid='{\"startTagSrc\":\"|-\",\"autoInsertedEnd\":true,\"dsr\":[13,25,2,0]}'>\n<!--c-->
 </tr><!--d-->\n</tbody></table>\n");
 add("html2html", "T73074: More fostering fun", "<link 
rel=\"mw:PageProp/Category\" href=\"./Category:Two\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Category:Two\"},\"sa\":{\"href\":\"Category:Two\"},\"dsr\":[0,16,null,null]}'/>\n<link
 rel=\"mw:PageProp/Category\" href=\"./Category:Two\" 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Category:Two\"},\"sa\":{\"href\":\"Category:Two\"},\"fostered\":true,\"dsr\":[17,17]}'/><table
 
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[17,70,7,0]}'><tbody
 data-parsoid='{\"dsr\":[24,70,0,0]}'><tr 
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[24,33,0,0]}'><td
 data-parsoid='{\"stx\":\"html\",\"dsr\":[24,33,4,5]}'></td></tr><tr 
about=\"#mwt1\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[33,70,null,0],\"pi\":[[{\"k\":\"1\"}]]}'
 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"&lt;tr>\"}},\"i\":0}},\"&lt;!--c-->[[Category:Two]]\"]}'><!--c--></tr></tbody></table>");
-add("html2html", "Image: upright option (parsoid)", "<figure 
class=\"mw-default-size\" typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"caption\",\"ak\":\"caption\"}],\"dsr\":[0,33,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{},\"dsr\":[2,null,null,null]}'><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
 
data-parsoid='{\"dsr\":[null,31,null,null]}'>caption</figcaption></figure>\n<figure
 class=\"mw-default-size\" typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"caption\",\"ak\":\"caption\"}],\"dsr\":[34,67,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{},\"dsr\":[36,null,null,null]}'><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
 
data-parsoid='{\"dsr\":[null,65,null,null]}'>caption</figcaption></figure>\n<figure
 typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"width\",\"ak\":\"500x500px\"},{\"ck\":\"caption\",\"ak\":\"caption\"}],\"dsr\":[68,111,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{},\"dsr\":[70,null,null,null]}'><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\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"57\",\"width\":\"500\"},\"sa\":{\"resource\":\"File:Foobar.jpg\"}}'/></a><figcaption
 
data-parsoid='{\"dsr\":[null,109,null,null]}'>caption</figcaption></figure>\n");
+add("html2html", "Image: upright option (parsoid)", "<figure 
class=\"mw-default-size\" typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"caption\",\"ak\":\"caption\"}],\"dsr\":[0,33,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"File:Foobar.jpg\"},\"dsr\":[2,null,null,null]}'><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
 
data-parsoid='{\"dsr\":[null,31,null,null]}'>caption</figcaption></figure>\n<figure
 class=\"mw-default-size\" typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"caption\",\"ak\":\"caption\"}],\"dsr\":[34,67,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"File:Foobar.jpg\"},\"dsr\":[36,null,null,null]}'><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
 
data-parsoid='{\"dsr\":[null,65,null,null]}'>caption</figcaption></figure>\n<figure
 typeof=\"mw:Image/Thumb\" 
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"width\",\"ak\":\"500x500px\"},{\"ck\":\"caption\",\"ak\":\"caption\"}],\"dsr\":[68,111,2,2]}'><a
 href=\"./File:Foobar.jpg\" 
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{\"href\":\"File:Foobar.jpg\"},\"dsr\":[70,null,null,null]}'><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\" 
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"57\",\"width\":\"500\"},\"sa\":{\"resource\":\"File:Foobar.jpg\"}}'/></a><figcaption
 
data-parsoid='{\"dsr\":[null,109,null,null]}'>caption</figcaption></figure>\n");
 add("html2html", "Consecutive <pre>s should not get merged", "<pre 
data-parsoid='{\"dsr\":[0,2,1,0]}'>a</pre>\n\n<pre 
data-parsoid='{\"dsr\":[4,6,1,0]}'>b</pre>\n\n<pre 
data-parsoid='{\"dsr\":[8,10,1,0]}'>c</pre>\n\n<pre 
data-parsoid='{\"dsr\":[12,14,1,0]}'>d</pre>\n\n<pre 
data-parsoid='{\"dsr\":[16,19,1,0]}'>e</pre>\n\n\n <p 
data-parsoid='{\"dsr\":[23,23,0,0]}'><br 
data-parsoid='{\"dsr\":[23,23,0,0]}'/></p>\n<pre 
data-parsoid='{\"dsr\":[24,26,1,0]}'>f</pre>\n");
 
 
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index 8d2118e..847066c 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -7856,6 +7856,14 @@
 !! end
 
 !! test
+File containing double quotes and spaces
+!! wikitext
+[[File:Cool "Gator".png]]
+!! html/parsoid
+<p><span class="mw-default-size" typeof="mw:Error mw:Image" 
data-parsoid='{"optList":[]}' 
data-mw='{"errors":[{"key":"missing-image","message":"This image does not 
exist."}]}'><a href="./File:Cool_%22Gator%22.png" 
data-parsoid='{"a":{"href":"./File:Cool_%22Gator%22.png"},"sa":{"href":"File:Cool
 \"Gator\".png"}}'><img resource='./File:Cool_"Gator".png' 
src="./Special:FilePath/Cool_%22Gator%22.png" height="220" width="220" 
data-parsoid='{"a":{"resource":"./File:Cool_\"Gator\".png","height":"220","width":"220","src":"./Special:FilePath/Cool_%22Gator%22.png"},"sa":{"resource":"File:Cool
 
\"Gator\".png","src":"./Special:FilePath/Cool_\"Gator\".png"}}'/></a></span></p>
+!! end
+
+!! test
 Link containing double-single-quotes '' in text (bug 4598 sanity check)
 !! wikitext
 Some [[Link|pretty ''italics'' and stuff]]!

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ifdfb167859a0c96837076d411feea8ced9d57912
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <abrea...@wikimedia.org>
Gerrit-Reviewer: Arlolra <abrea...@wikimedia.org>
Gerrit-Reviewer: C. Scott Ananian <canan...@wikimedia.org>
Gerrit-Reviewer: Subramanya Sastry <ssas...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to