Subramanya Sastry has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/340066 )
Change subject: WIP: Bug fixes in Async Token Transform Manager ...................................................................... WIP: Bug fixes in Async Token Transform Manager * Token chunk ranks were not being propagated properly on some async code paths. * TODO: Investigate test failures and fix. Change-Id: Ic3a0379d287b9abb2de4917966472cc70c842687 --- M lib/wt2html/TokenTransformManager.js M tests/parserTests-blacklist.js 2 files changed, 8 insertions(+), 4 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid refs/changes/66/340066/1 diff --git a/lib/wt2html/TokenTransformManager.js b/lib/wt2html/TokenTransformManager.js index 2ccd12b..3c61c30 100644 --- a/lib/wt2html/TokenTransformManager.js +++ b/lib/wt2html/TokenTransformManager.js @@ -665,11 +665,12 @@ if (!resTokens.rank || resTokens.rank < this.phaseEndRank) { // There might still be something to do for these // tokens. Prepare them for the workStack. + var oldRank = resTokens.rank; resTokens = resTokens.slice(); // Don't apply earlier transforms to results of a // transformer to avoid loops and keep the // execution model sane. - resTokens.rank = resTokens.rank || transformer.rank; + resTokens.rank = oldRank || transformer.rank; // resTokens.rank = Math.max( resTokens.rank || 0, transformer.rank ); if (res.async) { resTokens.inAsyncMode = true; @@ -763,13 +764,14 @@ this.env.log('debug', 'maybeSyncReturn transforming', s.c, ret); if (ret.tokens && ret.tokens.length > 0) { if (s.res.tokens) { - var oldRank = s.res.tokens.rank; + var newRank = ret.tokens.rank; s.res.tokens = JSUtils.pushArray(s.res.tokens, ret.tokens); - if (oldRank && ret.tokens.rank) { + if (newRank) { + var oldRank = s.res.tokens.rank; // Conservatively set the overall rank to the minimum. // This assumes that multi-pass expansion for some tokens // is safe. We might want to revisit that later. - s.res.tokens.rank = Math.min(oldRank, ret.tokens.rank); + s.res.tokens.rank = Math.min(oldRank || newRank, newRank); } } else { s.res = ret; diff --git a/tests/parserTests-blacklist.js b/tests/parserTests-blacklist.js index 93087ee..083233c 100644 --- a/tests/parserTests-blacklist.js +++ b/tests/parserTests-blacklist.js @@ -38,6 +38,7 @@ // ### DO NOT REMOVE THIS LINE ### (start of automatically-generated section) // Blacklist for wt2html +add("wt2html", "CircularRef", "<p data-parsoid='{\"dsr\":[0,15,0,0]}'><span about=\"#mwt1\" class=\"mw-ref\" id=\"cite_ref-1\" rel=\"dc:references\" typeof=\"mw:Transclusion mw:Extension/ref\" data-parsoid='{\"dsr\":[0,15,null,null],\"pi\":[[]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"CircularRef\",\"href\":\"./Template:CircularRef\"},\"params\":{},\"i\":0}}]}'><a href=\"./Main_Page#cite_note-1\" style=\"counter-reset: mw-Ref 1;\"><span class=\"mw-reflink-text\">[1]</span></a></span></p>\n<ol class=\"mw-references\" typeof=\"mw:Extension/references\" about=\"#mwt6\" data-parsoid='{\"dsr\":[16,30,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=\"{}\"></span></li></ol>"); add("wt2html", "Extra newlines between heading and content are swallowed", "<h1 id=\"b\" data-parsoid='{\"dsr\":[0,3,1,1]}'>b</h1>\n\n<p data-parsoid='{\"dsr\":[5,5,0,0]}'><br data-parsoid='{\"dsr\":[5,5,0,0]}'/></p>\n\n<p data-parsoid='{\"dsr\":[7,12,0,0]}'><a rel=\"mw:WikiLink\" href=\"./A\" title=\"A\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./A\"},\"sa\":{\"href\":\"a\"},\"dsr\":[7,12,2,2]}'>a</a></p>"); add("wt2html", "Non-word characters don't terminate tag names (T19663, T42670, T54022)", "<blockquote|>a\n\n<p data-parsoid='{\"dsr\":[29,57,0,0]}'><b→> doesn't terminate </b→></p>\n\n<p data-parsoid='{\"dsr\":[59,87,0,0]}'><bä> doesn't terminate </bä></p>\n\n<p data-parsoid='{\"dsr\":[89,119,0,0]}'><boo> doesn't terminate </boo></p>\n\n<p data-parsoid='{\"dsr\":[121,155,0,0]}'><s.foo> doesn't terminate </s.foo></p>\n\n<p data-parsoid='{\"dsr\":[157,167,0,0]}'><sub-ID#1></p>"); add("wt2html", "Non-word characters don't terminate tag names + tidy", "<blockquote|>a\n\n<p data-parsoid='{\"dsr\":[29,57,0,0]}'><b→> doesn't terminate </b→></p>\n\n<p data-parsoid='{\"dsr\":[59,87,0,0]}'><bä> doesn't terminate </bä></p>\n\n<p data-parsoid='{\"dsr\":[89,119,0,0]}'><boo> doesn't terminate </boo></p>\n\n<p data-parsoid='{\"dsr\":[121,155,0,0]}'><s.foo> doesn't terminate </s.foo></p>\n\n<p data-parsoid='{\"dsr\":[157,167,0,0]}'><sub-ID#1></p>"); @@ -359,6 +360,7 @@ // Blacklist for html2html +add("html2html", "CircularRef", "<p data-parsoid='{\"dsr\":[0,15,0,0]}'><span about=\"#mwt1\" class=\"mw-ref\" id=\"cite_ref-1\" rel=\"dc:references\" typeof=\"mw:Transclusion mw:Extension/ref\" data-parsoid='{\"dsr\":[0,15,null,null],\"pi\":[[]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"CircularRef\",\"href\":\"./Template:CircularRef\"},\"params\":{},\"i\":0}}]}'><a href=\"./Main_Page#cite_note-1\" style=\"counter-reset: mw-Ref 1;\"><span class=\"mw-reflink-text\">[1]</span></a></span></p>\n<ol class=\"mw-references\" typeof=\"mw:Extension/references\" about=\"#mwt6\" data-parsoid='{\"dsr\":[16,30,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=\"{}\"></span></li></ol>"); add("html2html", "Extra newlines followed by heading", "<p data-parsoid='{\"dsr\":[0,1,0,0]}'>a</p>\n\n<p data-parsoid='{\"dsr\":[3,3,0,0]}'><br data-parsoid='{\"dsr\":[3,3,0,0]}'/></p>\n\n<h1 id=\"b\" data-parsoid='{\"dsr\":[5,10,1,1]}'> b </h1>\n<p data-parsoid='{\"dsr\":[11,55,0,0]}'>[/index.php?title=A&action=edit&redlink=1 a]</p>\n\n<p data-parsoid='{\"dsr\":[57,57,0,0]}'><br data-parsoid='{\"dsr\":[57,57,0,0]}'/></p>\n\n<h1 id=\"b_2\" data-parsoid='{\"dsr\":[59,64,1,1]}'> b </h1>\n"); add("html2html", "Extra newlines between heading and content are swallowed", "<h1 id=\"b\" data-parsoid='{\"dsr\":[0,5,1,1]}'> b </h1>\n<p data-parsoid='{\"dsr\":[6,50,0,0]}'>[/index.php?title=A&action=edit&redlink=1 a]</p>\n"); add("html2html", "Italics and possessives (1)", "<p data-parsoid='{\"dsr\":[0,115,0,0]}'>obtained by <i data-parsoid='{\"dsr\":[12,91,2,2]}'>[/index.php?title=Lunar_Prospector&action=edit&redlink=1 Lunar Prospector]'</i>s gamma-ray spectrometer</p>\n"); -- To view, visit https://gerrit.wikimedia.org/r/340066 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic3a0379d287b9abb2de4917966472cc70c842687 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/services/parsoid Gerrit-Branch: master Gerrit-Owner: Subramanya Sastry <ssas...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits