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)", "&lt;blockquote|>a\n\n<p data-parsoid='{\"dsr\":[29,57,0,0]}'>&lt;b→> 
doesn't terminate &lt;/b→></p>\n\n<p 
data-parsoid='{\"dsr\":[59,87,0,0]}'>&lt;bä> doesn't terminate 
&lt;/bä></p>\n\n<p data-parsoid='{\"dsr\":[89,119,0,0]}'>&lt;boo> doesn't 
terminate &lt;/boo></p>\n\n<p data-parsoid='{\"dsr\":[121,155,0,0]}'>&lt;s.foo> 
doesn't terminate &lt;/s.foo></p>\n\n<p 
data-parsoid='{\"dsr\":[157,167,0,0]}'>&lt;sub-ID#1></p>");
 add("wt2html", "Non-word characters don't terminate tag names + tidy", 
"&lt;blockquote|>a\n\n<p data-parsoid='{\"dsr\":[29,57,0,0]}'>&lt;b→> doesn't 
terminate &lt;/b→></p>\n\n<p data-parsoid='{\"dsr\":[59,87,0,0]}'>&lt;bä> 
doesn't terminate &lt;/bä></p>\n\n<p 
data-parsoid='{\"dsr\":[89,119,0,0]}'>&lt;boo> doesn't terminate 
&lt;/boo></p>\n\n<p data-parsoid='{\"dsr\":[121,155,0,0]}'>&lt;s.foo> doesn't 
terminate &lt;/s.foo></p>\n\n<p 
data-parsoid='{\"dsr\":[157,167,0,0]}'>&lt;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&amp;action=edit&amp;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&amp;action=edit&amp;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&amp;action=edit&amp;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

Reply via email to