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:<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\":\"&#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\":\"&#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\":\"&#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\":\"&#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\":\"&#x7F;\",\"srcContent\":\"\",\"dsr\":[78,84,null,null]}'></span> <span typeof=\"mw:Entity\" data-parsoid='{\"src\":\"&#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\":\"&#xD83D;\",\"srcContent\":\"�\",\"dsr\":[105,113,null,null]}'>�</span><span typeof=\"mw:Entity\" data-parsoid='{\"src\":\"&#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\":\"&#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]}'><html><script>alert(1);</script></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|=>}-\" to \"=>\"", "<p data-parsoid='{\"dsr\":[0,11,0,0]}'>-{R|=<span typeof=\"mw:Entity\" data-parsoid='{\"src\":\"&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]}'><indicator name=\" \"></indicator>\n<indicator></indicator></p>"); add("wt2html", "Page status indicators: Weird syntaxes that are okay", "<p data-parsoid='{\"dsr\":[0,62,0,0]}'><indicator name=\"empty\" />\n<indicator name=\"name\"></indicator></p>"); -add("wt2html", "Page status indicators: Torture test", "<p data-parsoid='{\"dsr\":[0,240,0,0]}'><indicator name=\"01\">hello world</indicator>\n<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></indicator>\n<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></indicator>\n<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></indicator>\n<indicator name=\"05\">* foo</p>\n<ul data-parsoid='{\"dsr\":[241,258,0,0]}'><li data-parsoid='{\"dsr\":[241,258,1,0]}'> bar</indicator></li></ul>\n<p data-parsoid='{\"dsr\":[259,359,0,0]}'><indicator name=\"06\"><span typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[280,300,8,9]}'>foo</span></indicator>\n<indicator name=\"07\"> Preformatted</indicator></p>\n<p data-parsoid='{\"dsr\":[360,381,0,0]}'><indicator name=\"08\"></p><div data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[381,519,5,0]}'>Broken tag</indicator>\n<p data-parsoid='{\"dsr\":[409,495,0,0]}'><indicator name=\"09\">{| class=wikitable\n| cell\n|}</indicator>\n<indicator name=\"10\">Two</p>\n\n<p data-parsoid='{\"dsr\":[497,519,0,0]}'>paragraphs</indicator></p></div>"); +add("wt2html", "Page status indicators: Torture test", "<p data-parsoid='{\"dsr\":[0,240,0,0]}'><indicator name=\"01\">hello world</indicator>\n<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></indicator>\n<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></indicator>\n<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></indicator>\n<indicator name=\"05\">* foo</p>\n<ul data-parsoid='{\"dsr\":[241,258,0,0]}'><li data-parsoid='{\"dsr\":[241,258,1,0]}'> bar</indicator></li></ul>\n<p data-parsoid='{\"dsr\":[259,359,0,0]}'><indicator name=\"06\"><span typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[280,300,8,9]}'>foo</span></indicator>\n<indicator name=\"07\"> Preformatted</indicator></p>\n<p data-parsoid='{\"dsr\":[360,381,0,0]}'><indicator name=\"08\"></p><div data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[381,519,5,0]}'>Broken tag</indicator>\n<p data-parsoid='{\"dsr\":[409,495,0,0]}'><indicator name=\"09\">{| class=wikitable\n| cell\n|}</indicator>\n<indicator name=\"10\">Two</p>\n\n<p data-parsoid='{\"dsr\":[497,519,0,0]}'>paragraphs</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<nowiki>[[]]</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<nowiki>[[]]</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&action=edit&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&action=edit&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|<ref>{{echo|foo}}</ref>}}\"}],\"dsr\":[0,98,null,null]}' data-mw='{\"caption\":\"Undisplayed caption in inline image with ref: <span about=\\\"#mwt3\\\" class=\\\"mw-ref\\\" id=\\\"cite_ref-1\\\" rel=\\\"dc:references\\\" typeof=\\\"mw:Transclusion mw:Extension/ref\\\" data-parsoid='{\\\"dsr\\\":[64,96,null,null],\\\"pi\\\":[[{\\\"k\\\":\\\"1\\\"}]]}' data-mw='{\\\"parts\\\":[{\\\"template\\\":{\\\"target\\\":{\\\"wt\\\":\\\"echo\\\",\\\"href\\\":\\\"./Template:Echo\\\"},\\\"params\\\":{\\\"1\\\":{\\\"wt\\\":\\\"&lt;ref>{{echo|foo}}&lt;/ref>\\\"}},\\\"i\\\":0}}]}'><a href=\\\"./Main_Page#cite_note-1\\\" style=\\\"counter-reset: mw-Ref 1;\\\" data-parsoid=\\\"{}\\\"><span class=\\\"mw-reflink-text\\\" data-parsoid=\\\"{}\\\">[1]</span></a></span><meta typeof=\\\"mw:Transclusion mw:Extension/ref/Marker\\\" about=\\\"#mwt3\\\" data-parsoid='{\\\"group\\\":\\\"\\\",\\\"name\\\":\\\"\\\",\\\"content\\\":\\\"foo\\\",\\\"hasRefInRef\\\":false,\\\"dsr\\\":[64,96,null,null],\\\"pi\\\":[[{\\\"k\\\":\\\"1\\\"}]]}' data-mw='{\\\"parts\\\":[{\\\"template\\\":{\\\"target\\\":{\\\"wt\\\":\\\"echo\\\",\\\"href\\\":\\\"./Template:Echo\\\"},\\\"params\\\":{\\\"1\\\":{\\\"wt\\\":\\\"&lt;ref>{{echo|foo}}&lt;/ref>\\\"}},\\\"i\\\":0}}]}'/>\"}'><a href=\"./File:Foobar.jpg\" data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{}}'><img resource=\"./File:Foobar.jpg\" src=\"//example.com/images/3/3a/Foobar.jpg\" data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" height=\"220\" width=\"1941\" data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"220\",\"width\":\"1941\"},\"sa\":{\"resource\":\"File:Foobar.jpg\"}}'/></a></span></p>\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|<ref>{{echo|foo}}</ref>}}\"}],\"dsr\":[0,98,null,null]}' data-mw='{\"caption\":\"Undisplayed caption in inline image with ref: <span about=\\\"#mwt3\\\" class=\\\"mw-ref\\\" id=\\\"cite_ref-1\\\" rel=\\\"dc:references\\\" typeof=\\\"mw:Transclusion mw:Extension/ref\\\" data-parsoid='{\\\"dsr\\\":[64,96,null,null],\\\"pi\\\":[[{\\\"k\\\":\\\"1\\\"}]]}' data-mw='{\\\"parts\\\":[{\\\"template\\\":{\\\"target\\\":{\\\"wt\\\":\\\"echo\\\",\\\"href\\\":\\\"./Template:Echo\\\"},\\\"params\\\":{\\\"1\\\":{\\\"wt\\\":\\\"&lt;ref>{{echo|foo}}&lt;/ref>\\\"}},\\\"i\\\":0}}]}'><a href=\\\"./Main_Page#cite_note-1\\\" style=\\\"counter-reset: mw-Ref 1;\\\" data-parsoid=\\\"{}\\\"><span class=\\\"mw-reflink-text\\\" data-parsoid=\\\"{}\\\">[1]</span></a></span><meta typeof=\\\"mw:Transclusion mw:Extension/ref/Marker\\\" about=\\\"#mwt3\\\" data-parsoid='{\\\"group\\\":\\\"\\\",\\\"name\\\":\\\"\\\",\\\"content\\\":\\\"foo\\\",\\\"hasRefInRef\\\":false,\\\"dsr\\\":[64,96,null,null],\\\"pi\\\":[[{\\\"k\\\":\\\"1\\\"}]]}' data-mw='{\\\"parts\\\":[{\\\"template\\\":{\\\"target\\\":{\\\"wt\\\":\\\"echo\\\",\\\"href\\\":\\\"./Template:Echo\\\"},\\\"params\\\":{\\\"1\\\":{\\\"wt\\\":\\\"&lt;ref>{{echo|foo}}&lt;/ref>\\\"}},\\\"i\\\":0}}]}'/>\"}'><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<bar\"}},\"i\":0}}]}'>foo<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\":\"<span></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\":\"<span></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\":\"<span></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\":\"<span></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\":\"<tr><td>foo</td></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\":\"<tr>\"}},\"i\":0}},\"<!--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