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

Change subject: [parserTests] Edits generation shouldn't insert content in 
fosterable position
......................................................................


[parserTests] Edits generation shouldn't insert content in fosterable position

 * We already try to do this, but aren't getting it done quite right.

 * Newly failing selser tests are all for tests where lots of other
   selser tests fail. Seem to be cases where selser is more accurate
   than wt2wt.

 * The reason the wrapperName block is entered is because TR and CAPTION
   are considered isBlockNodeWithVisibleWT.

Change-Id: I8578809a2caf90df67de138c9fdf1668d94aa8af
---
M tests/parserTests-blacklist.js
M tests/parserTests.js
2 files changed, 37 insertions(+), 13 deletions(-)

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



diff --git a/tests/parserTests-blacklist.js b/tests/parserTests-blacklist.js
index 3c827d6..e74c88b 100644
--- a/tests/parserTests-blacklist.js
+++ b/tests/parserTests-blacklist.js
@@ -1910,11 +1910,17 @@
 add("selser", "Unclosed and unmatched quotes 
[3,0,[2],0,[[2]],3,[3,0],0,4,4,0,0,3,2,0,3,[[4],2,4,0,3,0],2,3,3,[3,3,0]]", 
"\nt6n1bkvx9wq7u8fr'''''Bold italic text ''with italic deactivated'' in 
between.'''''\n\n'''mdiwcalkyki6bt9Bold 
text..'''\n\n'''<nowiki/>'''\n\n1il337h4ozu84cxr\n\nowkwkmpgu45z5mi\n\n''Italic 
tag left open\n\n0jlauri2d7gjsjor\n\n<!-- Unmatching number of opening, closing 
tags: -->'''xapa2a5a6cdw8kt9'''lc002uv6d1dzpvis election fik23fdz9d89qkt9 beat 
s.\n\n8ykwjs7kuwg0hpvi\n\ns plain");
 add("selser", "Unclosed and unmatched quotes 
[2,4,3,0,2,0,1,0,[3],0,[2],0,2,0,0,2,[2,2,4,0,1,0],2,4,3,4]", 
"re6gnnkhd1tnjyvi\n\n'''''Bold italic text '''with bold deactivated''' in 
between.'''''\n\nbdwnekfnkxei2j4i\n\nva244jbhttpdgqfr\n\n'''Bold 
text..\n\n..spanning two paragraphs (should not 
work).'''\n\nlrd6syi4ygugzaor''Italic tag left 
open\n\nknfaulivfgca0pb9\n\nNormal text.\n\n<!-- Unmatching number of opening, 
closing tags: -->h8w8s0eci66tuik9\n\nu9daa8hfmgm5z5mi'''This 
year'<nowiki/>'''s4k3bfthkfq1tt9s election am5ar352e2ltbj4i beat '''last 
year''''s.\n\nrgsn8f7qx23p7gb9\n\nlhg77py8ot21emi\n\n7h6jcsa4wmzsq0k9\n");
 add("selser", "Unclosed and unmatched quotes 
[[1],2,4,0,[4],0,[4,0],0,[[2]],3,2,0,2,0,0,2,[0,2,2,0,1,0],0,1,0,2]", 
"'''''Bold italic text '''with bold deactivated''' in 
between.'''''\n\n91y6zy5s4079zfr\n\nmkyoq2vkvt0jatt9\n\n8yeajt4jwaru23xr\n\nn2z6ghxy6lp7gb9'''<nowiki/>'''\n\n'''9c8lhwf3v6zgp66rBold
 tag left open'''\n\nootbfqoaxawi2j4i\n\n''Italic tag left 
open\n\nvv89fig83pst6gvi\n\nNormal text.\n\n<!-- Unmatching number of opening, 
closing tags: -->73vckpnoy6s3v7vi\n\n'''This year'<nowiki/>'''eedgwt17jt9be29s 
election gqta5jrflissjor''should'' beat '''last year''''s.\n\n''Tom'''s car is 
bigger than '''''<nowiki/>'''Susan'''s.\n\nz1mgwtgr2xjhh0k9\n\nPlain 
''italic'''s plain");
+add("selser", "A table with captions with non-default spaced attributes and a 
table row [[3,2,3,[4],4,[2,4]]]", "{|<!--90q42mbx340a4i-->\n|+style=\"color: 
red;\"|caption2\n|+ style=\"color: red;\" 
|68x5dnp2q5xw29<!--msaci0wnxchgds4i--><!--fhl1z8tl9txu5wmi-->\n|-\n| 
foo<!--z5tecc0c7ynwmi-->\n|}");
+add("selser", "A table with captions with non-default spaced attributes and a 
table row [[0,2,4,0,3,[4,0]]]", "{|\n<!--8folgr0kquboi529-->|+style=\"color: 
red;\"|caption2<!--9isvnh2z6j2it3xr-->\n|+ style=\"color: red;\"| 
caption3<!--cegg9qdr9hjgu8fr-->\n|}");
 add("selser", "A table with captions with non-default spaced attributes and a 
table row [[2,0,2,3,3,3]]", "{|<!--69d5z7pa8iio1or-->\n|+style=\"color: 
red;\"|caption2<!--1r97810ys18j8aor-->\n|}");
 add("selser", "A table with captions with non-default spaced attributes and a 
table row [2]", "ogl2d411a038r529\n{|\n|+style=\"color: red;\"|caption2\n|+ 
style=\"color: red;\"| caption3\n|-\n| foo\n|}");
 add("selser", "A table with captions with non-default spaced attributes and a 
table row [[4,[3],2,0,3,[[3,4],4]]]", "{|<!--glpyv8ws43elv7vi-->\n|+ 
style=\"color: red;\" |<!--977mpdg7bdg6i529-->\n|+ style=\"color: red;\"| 
caption3\n|-\n|vnlowwkt14hadcxr<!--tw8w8jwmz4p1fw29-->\n|}");
+add("selser", "A table with captions with non-default spaced attributes and a 
table row [[2,2,0,4,2,[0,4]]]", 
"{|<!--hq2lymey7xxkcsor-->\n<!--q20r2b6ga9xry66r-->|+style=\"color: 
red;\"|caption2\n<!--kyojp7sr96v18aor--><!--bky3qng4ga2a9k9-->\n|-\n| 
foo<!--phpg9eaca86ez5mi-->\n|}");
 add("selser", "A table with captions with non-default spaced attributes and a 
table row [[0,[2],0,0,0,[[0,2],0]]]", "{|\n|+ style=\"color: red;\" 
|rsk37teyuq22csorcaption2\n|+ style=\"color: red;\"| 
caption3\n|-\n|vefem1fh6g1ll3di\n| foo\n|}");
+add("selser", "A table with captions with non-default spaced attributes and a 
table row [[2,0,3,[2],0,[2,0]]]", "{|<!--8q7n7m2tbswwb3xr-->\n|+style=\"color: 
red;\"|caption2\n|+ style=\"color: red;\" |lcnpzckjupgphkt9 
caption3\n<!--px2ept6jeswnrk9-->|-\n| foo\n|}");
 add("selser", "A table with captions with non-default spaced attributes and a 
table row [1]", "{| data-foobar=\"o9k0fan234k7qfr\"\n|+style=\"color: 
red;\"|caption2\n|+ style=\"color: red;\"| caption3\n|-\n| foo\n|}");
+add("selser", "A table with captions with non-default spaced attributes and a 
table row [[0,[2],0,2,3,[[2,0],0]]]", "{|\n|+ style=\"color: red;\" 
|w96hfg740cm78pvicaption2\n<!--s66fh5bg5g1wz5mi-->|+ style=\"color: red;\"| 
caption3\n|-\n|i7akogjci8i4fgvi\n| foo\n|}");
+add("selser", "A table with captions with non-default spaced attributes and a 
table row [[3,4,3,0,0,1]]", "{|<!--xb57b1mfbeh77gb9-->\n|+ style=\"color: 
red;\"| caption3\n|-\n| foo\n|}");
 add("selser", "A table with captions with non-default spaced attributes and a 
table row [[0,0,0,1,4,3]]", "{|\n|+style=\"color: red;\"|caption2\n|+ 
style=\"color: red;\" data-foobar=\"4n9ju8e6u4ayk3xr\" | 
caption3<!--8vitqxcwje89f6r-->\n|}");
 add("selser", "A table with captions with non-default spaced attributes and a 
table row [[0,0,2,[3],3,[[0,4],0]]]", "{|\n|+style=\"color: 
red;\"|caption2<!--4865t93rr418aor-->\n|+ style=\"color: red;\" 
|\n|-\n|n2z1139bdvuc8fr\n|}");
 add("selser", "Table td-cell syntax variations [2]", "sbzhcg70xtq8semi\n{|\n| 
foo bar foo | baz\n| foo bar foo || baz\n| style='color:red;' | baz\n| 
style='color:red;' || baz\n|}");
@@ -1925,26 +1931,32 @@
 add("selser", "Table td-cell syntax variations [[0,[1,4]]]", "{|\n| foo bar 
foo | baz\n| foo bar foo || baz\n| style='color:red;' | baz\n| 
style='color:red;' || baz<!--tthr988c8d9ara4i-->\n|}");
 add("selser", "Table td-cell syntax variations [[0,[[1,4,0,2,2,0,4,0,0],3]]]", 
"{|\n| data-foobar=\"yapr5vvoeskk2o6r\" foo bar | baz\n|n59kxzdkg0dg3nmi\n| foo 
bar foo \n|3uyod7tniwfjemi|| baz\n|mksz2gze2hjjor\n| style='color:red;' | 
baz\n|2n7mgtwagfzuxr\n| style='color:red;' || baz\n|}");
 add("selser", "Table td-cell syntax variations [[0,2]]", 
"{|\n<!--uiyg1xnqf84u0udi-->| foo bar foo | baz\n| foo bar foo || baz\n| 
style='color:red;' | baz\n| style='color:red;' || baz\n|}");
+add("selser", "Allow +/- in 2nd and later cells in a row, in 1st cell when 
td-attrs are present, or in 1st cell when there is a space between \"|\" and 
+/-  [[4,[[0,0,4,3],4,[2,4,[2],[3],2,[3],[2],1],3,4,0]]]", 
"{|<!--ey69w1huzxhl4n29-->\n|-\n|style='color:red;'|+1\n|9tw49jdk0u5o2yb9<!--kx0w31z2r3eg66r-->\n|-\n|pql3wifv5zouhaor\n|b17pm8krfbqehfr||y5j51k4ijfzme7b9
 2 ||\n|agfkr8szrrb5ipb9\n|||jzz1rvd4y3bit3xr+2 || 
data-foobar=\"hz9jkr87n7co9a4i\" |-3<!--uomsfojpwyi4quxr-->\n|}");
 add("selser", "Allow +/- in 2nd and later cells in a row, in 1st cell when 
td-attrs are present, or in 1st cell when there is a space between \"|\" and 
+/-  [1]", "{| 
data-foobar=\"qni1jj96d8ia4i\"\n|-\n|style='color:red;'|+1\n|style='color:blue;'|-1\n|-\n|
 1 || 2 || 3\n| 1 ||+2 ||-3\n|-\n| +1\n| -1\n|}");
 add("selser", "Allow +/- in 2nd and later cells in a row, in 1st cell when 
td-attrs are present, or in 1st cell when there is a space between \"|\" and 
+/-  [2]", 
"pedhswzbj517zaor\n{|\n|-\n|style='color:red;'|+1\n|style='color:blue;'|-1\n|-\n|
 1 || 2 || 3\n| 1 ||+2 ||-3\n|-\n| +1\n| -1\n|}");
 add("selser", "Allow +/- in 2nd and later cells in a row, in 1st cell when 
td-attrs are present, or in 1st cell when there is a space between \"|\" and 
+/-  [[0,1]]", "{|\n|-\n|style='color:red;'|+1\n|style='color:blue;'|-1\n|-\n| 
1 || 2 || 3\n| 1 ||+2 ||-3\n|-\n| +1\n| -1\n|}");
 add("selser", "Allow +/- in 2nd and later cells in a row, in 1st cell when 
td-attrs are present, or in 1st cell when there is a space between \"|\" and 
+/-  [[0,2]]", 
"{|\n<!--xllkdkan97eyu8fr-->|-\n|style='color:red;'|+1\n|style='color:blue;'|-1\n|-\n|
 1 || 2 || 3\n| 1 ||+2 ||-3\n|-\n| +1\n| -1\n|}");
+add("selser", "Allow +/- in 2nd and later cells in a row, in 1st cell when 
td-attrs are present, or in 1st cell when there is a space between \"|\" and 
+/-  [[3,[[3,1,0,[4]],3,4,2,[0,4,0,0],4]]]", "{|\n|-\n| style=\"color:red;\" 
data-foobar=\"cppwm0tpam7vi\" 
|+1\n|style='color:blue;'|a7cowbidjazia4i<!--x62n4p612rpgy14i--><!--d2uvh61vtoqolxr-->\n|-\n|8t7ghb7id0smunmi\n|
 -1<!--qb5bhmh2xggjsjor-->\n|}");
 add("selser", "Allow +/- in 2nd and later cells in a row, in 1st cell when 
td-attrs are present, or in 1st cell when there is a space between \"|\" and 
+/-  [[0,[[3,2,0,0],0,[2,0,1,[2],0,0,0,2],0,[0,[4],0,0],0]]]", 
"{|\n|-\n|0bez83pg3gom9529\n|style='color:red;'|+1\n|style='color:blue;'|-1\n|-\n|sxirzpn3nq257b9\n|
 1 || data-foobar=\"27xcharybvs4i\" | 2 ||lz04cejtja714i 3\n| 1 ||+2 
\n|h7c5rmx7i8b0529||-3\n|-\n|kfu05heouun89f6r\n| -1\n|}");
 add("selser", "Table rowspan [[3,2]]", "{| border=1<!--dw212cp9esif6r-->\n| 
Cell 1, row 1\n|rowspan=2| Cell 2, row 1 (and 2)\n| Cell 3, row 1\n|-\n| Cell 
1, row 2\n| Cell 3, row 2\n|}");
 add("selser", "Table rowspan [[0,1]]", "{| border=1\n| Cell 1, row 
1\n|rowspan=2| Cell 2, row 1 (and 2)\n| Cell 3, row 1\n|-\n| Cell 1, row 2\n| 
Cell 3, row 2\n|}");
 add("selser", "Table rowspan [[2,[[2,0,3,0,4],0,[0,0,0,3],2]]]", "{| 
border=1<!--hf5z89mzkeh77gb9-->\n|4j3mbmbko7gmn29\n| Cell 1, row 
1\n\n|r763mckykwlba9k9\n|-\n| Cell 1, row 2\n<!--88adjxaw01ss8aor-->\n|}");
 add("selser", "Table rowspan [2]", "xb37vwsdil6gk3xr\n{| border=1\n| Cell 1, 
row 1\n|rowspan=2| Cell 2, row 1 (and 2)\n| Cell 3, row 1\n|-\n| Cell 1, row 
2\n| Cell 3, row 2\n|}");
 add("selser", "Table rowspan [1]", "{| border=\"1\" 
data-foobar=\"xgpmrwgiugpbvs4i\"\n| Cell 1, row 1\n|rowspan=2| Cell 2, row 1 
(and 2)\n| Cell 3, row 1\n|-\n| Cell 1, row 2\n| Cell 3, row 2\n|}");
+add("selser", "Table rowspan [[0,[1,0,2,0]]]", "{| border=1\n| Cell 1, row 
1\n|rowspan=2| Cell 2, row 1 (and 2)\n| Cell 3, row 
1\n<!--esqo19m7kv620529-->|-\n| Cell 1, row 2\n| Cell 3, row 2\n|}");
 add("selser", "Table rowspan [[2,2]]", "{| 
border=1<!--c9eo96nqfmjthuxr-->\n<!--mdmpc8uzbgoxn7b9-->| Cell 1, row 
1\n|rowspan=2| Cell 2, row 1 (and 2)\n| Cell 3, row 1\n|-\n| Cell 1, row 2\n| 
Cell 3, row 2\n|}");
+add("selser", "Table rowspan [[0,[1,0,2,2]]]", "{| border=1\n| Cell 1, row 
1\n|rowspan=2| Cell 2, row 1 (and 2)\n| Cell 3, row 
1\n<!--f24m9zom9d2kpgb9-->|-\n| Cell 1, row 2\n| Cell 3, row 
2<!--houk9s548i3pu8fr-->\n|}");
 add("selser", "Table rowspan [[3,[1,0,[0,2,0,4],2]]]", "{| border=1\n| Cell 1, 
row 1\n| rowspan=\"2\" | Cell 2, row 1 (and 2)\n| Cell 3, row 
1\n|-\n|gsp7c59fnpadobt9\n| Cell 1, row 
2\n|bwzd1d95wa7wg66r<!--68bu9hd9zl37syvi-->\n|}");
 add("selser", "Table rowspan [[0,[[4,0,4,0,1],0,1,2]]]", "{| 
border=1\n|aspxhnaofiqf47vi\n|73fyijt65nuerk9\n| 
data-foobar=\"t7trqii8bukp4x6r\" | Cell 3, row 1\n|- 
data-foobar=\"1pkfpcn5xq6t7qfr\"\n| Cell 1, row 2\n| Cell 3, row 
2<!--sebb2ix3zzzadcxr-->\n|}");
 add("selser", "Table rowspan [[0,4]]", "{| 
border=1\n<!--1gqzmb9oym34n29-->|}");
 add("selser", "Table rowspan [[4,1]]", "{| border=1<!--df20a6ug11ao47vi-->\n| 
Cell 1, row 1\n|rowspan=2| Cell 2, row 1 (and 2)\n| Cell 3, row 1\n|-\n| Cell 
1, row 2\n| Cell 3, row 2\n|}");
+add("selser", "Table rowspan [[0,[2,0,4,0]]]", "{| 
border=1\n<!--bz2zkuwgtbotj4i-->| Cell 1, row 1\n|rowspan=2| Cell 2, row 1 (and 
2)\n| Cell 3, row 1\n<!--hynk9y1byaw6ogvi-->\n|}");
 add("selser", "Table rowspan [[2,1]]", "{| border=1<!--kn5vfku6oyumobt9-->\n| 
Cell 1, row 1\n| rowspan=\"2\" | Cell 2, row 1 (and 2)\n| Cell 3, row 1\n|-\n| 
Cell 1, row 2\n| Cell 3, row 2\n|}");
 add("selser", "Table rowspan [[3,[1,0,[0,1,0,2],4]]]", "{| border=1\n| Cell 1, 
row 1\n| rowspan=\"2\" | Cell 2, row 1 (and 2)\n| Cell 3, row 1\n|-\n| 
data-foobar=\"gzbtsmzgf46g8pvi\" | Cell 1, row 2\n|gdz7sc5bs1xg8pvi\n| Cell 3, 
row 2<!--kjwr2bchfhqto6r-->\n|}");
 add("selser", "Nested table [[0,[1,4]]]", "{| border=1\n| &alpha;\n|\n{| 
bgcolor=#ABCDEF border=2\n|nested\n|-\n|table\n|}\n|the original table 
again<!--t5nreiu3qsxuhaor-->\n|}");
 add("selser", "Nested table [[0,2]]", "{| border=1\n<!--262ep7u743gqr529-->| 
&alpha;\n|\n{| bgcolor=#ABCDEF border=2\n|nested\n|-\n|table\n|}\n|the original 
table again\n|}");
 add("selser", "Nested table [2]", "y38000xvz4vg3nmi\n{| border=1\n| 
&alpha;\n|\n{| bgcolor=#ABCDEF border=2\n|nested\n|-\n|table\n|}\n|the original 
table again\n|}");
+add("selser", "Nested table [[2,[4,2]]]", "{| 
border=1<!--0dbf76hr5a9bpgb9-->\n<!--dkjh2vfrzy9cnmi--><!--dr69h58wuje5ewmi-->\n|}");
 add("selser", "Nested table [[2,3]]", "{| 
border=1<!--cn1vfhuotu5qxgvi-->\n|}");
 add("selser", "Nested table [[4,1]]", "{| border=1<!--21kjc55zx2tbuik9-->\n| 
&alpha;\n|\n{| bgcolor=#ABCDEF border=2\n|nested\n|-\n|table\n|}\n|the original 
table again\n|}");
 add("selser", "Nested table [1]", "{| border=\"1\" 
data-foobar=\"z21mjbodw38lg14i\"\n| &alpha;\n|\n{| bgcolor=#ABCDEF 
border=2\n|nested\n|-\n|table\n|}\n|the original table again\n|}");
@@ -1963,7 +1975,7 @@
 add("selser", "Invalid attributes in table cell (bug 1830) [2]", 
"ihzdqjdk01bp4x6r\n{|\n|Cell:|broken\n|}");
 add("selser", "Invalid attributes in table cell (bug 1830) [[0,2]]", 
"{|\n<!--0d7j9j0jsmj9k9-->|Cell:|broken\n|}");
 add("selser", "Invalid attributes in table cell (bug 1830) [[0,1]]", 
"{|\n|Cell:|broken\n|}");
-add("selser", "Invalid attributes in table cell (bug 1830) [[0,[2,0]]]", 
"j29v67hfrufmvx6r\n{|\n|Cell:|broken\n|}");
+add("selser", "Invalid attributes in table cell (bug 1830) [[0,[2,0]]]", 
"{|\n<!--j29v67hfrufmvx6r-->|Cell:|broken\n|}");
 add("selser", "Invalid attributes in table cell (bug 1830) [[3,[[2],0]]]", 
"{|\n|otq3btd8klf2yb9\n|Cell:|broken\n|}");
 add("selser", "Invalid attributes in table cell (bug 1830) [[0,[1,3]]]", 
"{|\n|Cell:|broken\n|}");
 add("selser", "Table attributes with empty value [2]", 
"ypqzbga8qxeqm2t9\n{|\n| style=| hello\n|}");
@@ -1975,6 +1987,7 @@
 add("selser", "Build table with {{!}} [2]", "vlzvgbqpbh6qd7vi\n{{{!}} 
class=\"wikitable\"\n! header\n! second header\n{{!}}- 
style=\"color:red;\"\n{{!}} data {{!}}{{!}} style=\"color:red;\" {{!}} second 
data\n{{!}}}");
 add("selser", "Build table with {{!}} [1]", "{{{!}} class=\"wikitable\" 
data-foobar=\"n7vob9kcmjp833di\"\n! header\n! second header\n{{!}}- 
style=\"color:red;\"\n{{!}} data {{!}}{{!}} style=\"color:red;\" {{!}} second 
data\n{{!}}}");
 add("selser", "Build table with {{!}} [[0,2]]", "{{{!}} 
class=\"wikitable\"\n<!--gzqyxjo46o91kyb9-->! header\n! second header\n{{!}}- 
style=\"color:red;\"\n{{!}} data {{!}}{{!}} style=\"color:red;\" {{!}} second 
data\n{{!}}}");
+add("selser", "Build table with {{!}} [[4,[4,0,2,0]]]", "{{{!}} 
class=\"wikitable\"<!--iq95chc97oxn7b9--><!--4skrg9xv6pbhjjor-->\n<!--qmcjyl6r854p9zfr-->{{!}}-
 style=\"color:red;\"\n{{!}} data {{!}}{{!}} style=\"color:red;\" {{!}} second 
data\n{{!}}}");
 add("selser", "Build table with {{!}} [[4,2]]", "{{{!}} 
class=\"wikitable\"<!--wa7mbefsy7nfjemi--><!--8sf0msj7spmbo6r-->\n! header\n! 
second header\n{{!}}- style=\"color:red;\"\n{{!}} data {{!}}{{!}} 
style=\"color:red;\" {{!}} second data\n{{!}}}");
 add("selser", "Build table with {{!}} [[2,2]]", "{{{!}} 
class=\"wikitable\"<!--hbgluiuyj95asjor-->\n<!--xss2k4vz6txd2t9-->! header\n! 
second header\n{{!}}- style=\"color:red;\"\n{{!}} data {{!}}{{!}} 
style=\"color:red;\" {{!}} second data\n{{!}}}");
 add("selser", "Build table with {{!}} [[4,1]]", "{{{!}} 
class=\"wikitable\"<!--q4x91ifb5ku766r-->\n! header\n! second header\n{{!}}- 
style=\"color:red;\"\n{{!}} data {{!}}{{!}} style=\"color:red;\" {{!}} second 
data\n{{!}}}");
@@ -1982,6 +1995,7 @@
 add("selser", "Build table with pipe as data [[3,2]]", "{| 
class=\"wikitable\"<!--0g4x735w6hcl3di-->\n! header\n! second header\n|- 
style=\"color:red;\"\n| data || style=\"color:red;\" | second data\n|-\n| 
style=\"color:red;\" | data with | || style=\"color:red;\" | second data with 
|\n|-\n|| data with | ||| second data with |\n|}");
 add("selser", "Build table with pipe as data [2]", "lmhnucjqwqctmx6r\n{| 
class=\"wikitable\"\n! header\n! second header\n|- style=\"color:red;\"\n| data 
|| style=\"color:red;\" | second data\n|-\n| style=\"color:red;\" | data with | 
|| style=\"color:red;\" | second data with |\n|-\n|| data with | ||| second 
data with |\n|}");
 add("selser", "Build table with pipe as data [1]", "{| class=\"wikitable\" 
data-foobar=\"lalglq06kuf03sor\"\n! header\n! second header\n|- 
style=\"color:red;\"\n| data || style=\"color:red;\" | second data\n|-\n| 
style=\"color:red;\" | data with | || style=\"color:red;\" | second data with 
|\n|-\n|| data with | ||| second data with |\n|}");
+add("selser", "Build table with pipe as data 
[[4,[[[4],3,2],2,[0,[3],3],0,[0,1,[2]],4,2,0]]]", "{| 
class=\"wikitable\"<!--9ei1365qdb98jjor-->\n!e7jk4mefbz4fs9k9\n!ovbodp15h8mpldi\n!
 second header<!--xhuec55czqwipb9-->\n|- style=\"color:red;\"\n|\n|-\n| 
style=\"color:red;\" data-foobar=\"gfcix9klmigdgqfr\" |<nowiki> data with | 
</nowiki>|| style=\"color:red;\" |zp74kkx3itokzkt9 second data with 
|<!--5r6q0h5oa2lnmi--><!--noh3n1jqz392j4i-->\n|-\n|| data with | ||| second 
data with |\n|}");
 add("selser", "Build table with pipe as data [[0,1]]", "{| 
class=\"wikitable\"\n! header\n! second header\n|- style=\"color:red;\"\n| data 
|| style=\"color:red;\" | second data\n|-\n| style=\"color:red;\" | data with | 
|| style=\"color:red;\" | second data with |\n|-\n|| data with | ||| second 
data with |\n|}");
 add("selser", "Build table with pipe as data 
[[0,[[3,0,4],0,[3,2,4],0,0,3,[3,3,4],0]]]", "{| 
class=\"wikitable\"\n\n|89vo0bmcsbkv5cdi\n|- 
style=\"color:red;\"\n|zwnhagffqiqhyqfr\n| data \n|dju7n7jhc15rk9\n|-\n| 
style=\"color:red;\" | data with | || style=\"color:red;\" | second data with 
|\n|-\n|lljma7s674vrhpvi\n|}");
 add("selser", "Build table with pipe as data [[2,2]]", "{| 
class=\"wikitable\"<!--hw4dq390xgk3xr-->\n<!--uqj5x3w6iwndbo6r-->! header\n! 
second header\n|- style=\"color:red;\"\n| data || style=\"color:red;\" | second 
data\n|-\n| style=\"color:red;\" | data with | || style=\"color:red;\" | second 
data with |\n|-\n|| data with | ||| second data with |\n|}");
@@ -2127,7 +2141,8 @@
 add("selser", "BUG 553: link with two variables in a piped link [1]", "{| 
data-foobar=\"sermfvbsbpujtt9\"\n|[[{{{1}}}|{{{2}}}]]\n|}");
 add("selser", "BUG 553: link with two variables in a piped link 
[[0,[[[0,0,0,0,2]],2]]]", 
"{|\n|[[{{{1}}}|{{{2}}}67x19euoicw61or]]<!--jadn53w2sr79zfr-->\n|}");
 add("selser", "BUG 553: link with two variables in a piped link [[0,[0,4]]]", 
"{|\n|[[{{{1}}}|{{{2}}}]]<!--5luam4tixnbl0udi-->\n|}");
-add("selser", "BUG 553: link with two variables in a piped link [[0,[2,0]]]", 
"ekt298jbktjoflxr\n{|\n|[[{{{1}}}|{{{2}}}]]\n|}");
+add("selser", "BUG 553: link with two variables in a piped link [[0,[2,2]]]", 
"{|\n<!--2l9bvsosq2iq9f6r-->|[[{{{1}}}|{{{2}}}]]<!--f21xzcxsl9iwl8fr-->\n|}");
+add("selser", "BUG 553: link with two variables in a piped link [[0,[2,0]]]", 
"{|\n<!--ekt298jbktjoflxr-->|[[{{{1}}}|{{{2}}}]]\n|}");
 add("selser", "BUG 553: link with two variables in a piped link [2]", 
"riybxbthicfskyb9\n{|\n|[[{{{1}}}|{{{2}}}]]\n|}");
 add("selser", "BUG 553: link with two variables in a piped link [[0,2]]", 
"{|\n<!--z79xd4wgjxphw7b9-->|[[{{{1}}}|{{{2}}}]]\n|}");
 add("selser", "Template with targets containing wikilinks [4,0,1,2,1]", 
"p8pza9iyg3yaxlxr\n\n<nowiki>{{</nowiki>[[{{echo|foo}}]]}}\n\ndf60zk0z1v8ia4i\n\n{{{{echo|[[foo}}]]}}");
@@ -2149,14 +2164,17 @@
 add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,[0,[0,2]]]", "{{echo|}}{| width = 
'100%'\n|foo<!--7w2da44bn7idaemi-->\n|}");
 add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,1]", "{{echo|}}{| width=\"100%\" 
data-foobar=\"t98xv1gnmkhp8pvi\"\n|foo\n|}");
 add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,[0,[[[2]],3]]]", "{{echo|}}{| width = 
'100%'\n|5l8xeq1crrafw29foo\n|}");
+add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,[4,[4,2]]]", "{{echo|}}{| width = 
'100%'<!--913di70icp85xw29--><!--8ypcl8eh8xx8yqfr--><!--l2z1wp6p0xwxko6r-->\n|}");
+add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,[4,[2,0]]]", "{{echo|}}{| width = 
'100%'<!--8h981ha9l6myrpb9--><!--dnzxupmh4eptlnmi-->\n|foo\n|}");
 add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,[4,[3,0]]]", "{{echo|}}{| width = 
'100%'<!--4w5gtskk09ou5wmi-->\n|}");
 add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,2]", "{{echo|}}nbv262u96o3cjtt9\n{| width = '100%'\n|foo\n|}");
 add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,[0,1]]", "{{echo|}}{| width = '100%'\n|foo\n|}");
 add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,[0,[[3],0]]]", "{{echo|}}{| width = '100%'\n\n|}");
 add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,[0,[1,4]]]", "{{echo|}}{| width = 
'100%'\n|foo<!--ls9rf79zvd8fflxr-->\n|}");
 add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,[0,[[3],3]]]", "{{echo|}}{| width = '100%'\n|}");
-add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,[0,[2,0]]]", "{{echo|}}gqnq56unxcu9pb9\n{| width = 
'100%'\n|foo\n|}");
+add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,[0,[2,0]]]", "{{echo|}}{| width = 
'100%'\n<!--gqnq56unxcu9pb9-->|foo\n|}");
 add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,[0,[[[3]],3]]]", "{{echo|}}{| width = '100%'\n|\n|}");
+add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,[0,[4,0]]]", "{{echo|}}{| width = 
'100%'\n<!--u3at1qt3epfd2t9-->\n|}");
 add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,[3,[1,0]]]", "{{echo|}}{| width = '100%'\n|foo\n|}");
 add("selser", "1. Table tag in SOL posn. should get reparsed correctly with 
valid TSR [0,[0,[[1],4]]]", "{{echo|}}{| width = '100%'\n| 
data-foobar=\"pnyys77mkaxrms4i\" |foo<!--kok37wstwgbvs4i-->\n|}");
 add("selser", "Templates: P-wrapping: 1d. Template preceded by comment-only 
line [2,0,0]", "i0wqqfgpkyjsjor\n<!-- foo -->\n{{echo|Bar}}");
@@ -2176,7 +2194,7 @@
 add("selser", "Templates: HTML Tables: 5. Proper fostering of categories from 
inside [0,3,2,4,3,3,0,4]", 
"\nhdu8b5un73rw9udi\n\naxxk36cxrg0newmi\nl6db7w99encm1jor\n");
 add("selser", "Templates: HTML Tables: 5. Proper fostering of categories from 
inside [0,2,4,4,4,4,2,0]", 
"\n3p6ds2cdy5geqaor<table>[[Category:foo1]]<tr><td>foo</td></tr></table>nf31cc8xo4leg66r\n\nirxbftzactprpb9\n\ndd21qg54ruw0cnmi\n\nv7gjnsdqspnqxgvi\n\nzg2izvkgtlu15rk9<table>[[Category:bar1]][[Category:bar2]]<tr><td>foo</td></tr></table>");
 add("selser", "Templates: HTML Tables: 5. Proper fostering of categories from 
inside [0,3,2,0,2,4,0,2]", "\n5hat330odnmw8kt9\n\n<!--Two categories (Bug 
50330)-->6ssl3a5gpeqaor\n\novgd20ux77722o6r\nkjuzhgsj82blz0k9<table>[[Category:bar1]][[Category:bar2]]<tr><td>foo</td></tr></table>");
-add("selser", "Templates: HTML Tables: 5. Proper fostering of categories from 
inside [2,3,2,2,0,0,0,[[4]]]", 
"pr6u7tvu4zccjtt9\nbzwx5yz7n0y0hpvi\n\nsqg8knvzd26gvi<!--Two categories (Bug 
50330)-->\n\nigfmiz8r7rykfbt9<table></table>");
+add("selser", "Templates: HTML Tables: 5. Proper fostering of categories from 
inside [2,3,2,2,0,0,0,[[4]]]", 
"pr6u7tvu4zccjtt9\nbzwx5yz7n0y0hpvi\n\nsqg8knvzd26gvi<!--Two categories (Bug 
50330)-->\n<table><!--igfmiz8r7rykfbt9--></table>");
 add("selser", "Templates: HTML Tables: 5. Proper fostering of categories from 
inside [0,1,4,0,0,0,1,[2]]", "<table 
data-foobar=\"16hnpb0od17l23xr\">[[Category:foo1]]<tr><td>foo</td></tr></table>p0tte61pcmh7iudi<!--Two
 categories (Bug 
50330)-->\n[[Category:bar2]]<table><!--8rm0h9nhoqkc5wmi-->[[Category:bar1]][[Category:bar2]]<tr><td>foo</td></tr></table>");
 add("selser", "Templates: HTML Tables: 5. Proper fostering of categories from 
inside [0,[2],0,2,2,0,0,[1]]", 
"<table><!--c0u2c9uer91cerk9-->[[Category:foo1]]<tr><td>foo</td></tr></table>\n8hyzimw3d00vbo6r\n\n<!--Two
 categories (Bug 
50330)-->12c9zldofglj714i\n<table><tr><td>foo</td></tr></table>");
 add("selser", "Templates: HTML Tables: 5. Proper fostering of categories from 
inside [0,[[3]],2,0,0,4,0,[[[4]]]]", "<table></table>frdce0reto2h85mi\n<!--Two 
categories (Bug 
50330)-->\n3lz5b6rsfydjkyb9<table><tr><td>6xqvzsggdh392j4i</td></tr></table>");
@@ -2276,7 +2294,7 @@
 add("selser", "Table multiple attributes correction [[0,[1,3]]]", "{|\n!+ 
class=\"error\" class=\"awesome\"| status\n|}");
 add("selser", "Table multiple attributes correction [[4,1]]", 
"{|<!--hp0nnumivla6ecdi-->\n!+ class=\"error\" class=\"awesome\"| status\n|}");
 add("selser", "Table multiple attributes correction [[3,2]]", 
"{|<!--42sj7fkd0anpzaor-->\n!+ class=\"error\" class=\"awesome\"| status\n|}");
-add("selser", "Table multiple attributes correction [[0,[2,0]]]", 
"k6lgk37x5g0hpvi\n{|\n!+ class=\"error\" class=\"awesome\"| status\n|}");
+add("selser", "Table multiple attributes correction [[0,[2,0]]]", 
"{|\n<!--k6lgk37x5g0hpvi-->!+ class=\"error\" class=\"awesome\"| status\n|}");
 add("selser", "DIV IN UPPERCASE [2]", "qcqx475zv4c2fbt9<DIV ID=\"x\">HTML 
ROCKS</DIV>");
 add("selser", "DIV IN UPPERCASE [[2]]", "<DIV ID=\"x\">0lhea1vi5vfs9k9HTML 
ROCKS</DIV>");
 add("selser", "DIV IN UPPERCASE [[4]]", "<DIV 
ID=\"x\">ae3oduwc950tqpvi</DIV>");
@@ -2341,7 +2359,7 @@
 add("selser", "Table attribute safety [2]", "zwfo2kxs5fa5g66r\n{|\n!+ 
style=\"<nowiki>border-width:expression(0+alert(document.cookie))</nowiki>\"| 
status\n|}");
 add("selser", "Table attribute safety [[0,2]]", "{|\n<!--8o73uov10ad1jor-->!+ 
style=\"<nowiki>border-width:expression(0+alert(document.cookie))</nowiki>\"| 
status\n|}");
 add("selser", "Table attribute safety [[0,[[[2]],0]]]", "{|\n!+ 
style=\"<nowiki>border-width:expression(0+alert(document.cookie))</nowiki>\"|bmw4i6d4sxidlsor
 status\n|}");
-add("selser", "Table attribute safety [[0,[2,0]]]", "hopuq8owdrv8to6r\n{|\n!+ 
style=\"<nowiki>border-width:expression(0+alert(document.cookie))</nowiki>\"| 
status\n|}");
+add("selser", "Table attribute safety [[0,[2,0]]]", 
"{|\n<!--hopuq8owdrv8to6r-->!+ 
style=\"<nowiki>border-width:expression(0+alert(document.cookie))</nowiki>\"| 
status\n|}");
 add("selser", "Table attribute safety [[0,[0,3]]]", "{|\n!+ 
style=\"<nowiki>border-width:expression(0+alert(document.cookie))</nowiki>\"| 
status\n|}");
 add("selser", "Table attribute safety [[0,[1,2]]]", "{|\n!+ 
style=\"<nowiki>border-width:expression(0+alert(document.cookie))</nowiki>\"| 
status<!--skyjeiq2kwr0be29-->\n|}");
 add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for 
Microdata [[0,1,4]]", "<div itemscope>\n\t<nowiki><meta itemprop=\"hello\" 
content=\"world\">\n\t<meta http-equiv=\"refresh\" content=\"5\">\n\t<meta 
itemprop=\"hello\" http-equiv=\"refresh\" content=\"5\">\n\t<link 
itemprop=\"hello\" href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\" 
href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\" itemprop=\"hello\" 
href=\"{{SERVER}}\"></nowiki>\n9lxnoixxq085b3xr</div>");
@@ -2391,18 +2409,21 @@
 add("selser", "Fuzz testing: Parser16 [[0,[[3,4,0,0]]]]", 
"{|\n!mn06fxy5uvbfn7b9|||||}");
 add("selser", "Fuzz testing: Parser16 [[3,2]]", 
"{|<!--4qmpsasspil4bo6r-->\n!https://|||||||}");
 add("selser", "Fuzz testing: Parser16 [[0,1]]", "{|\n!https://|||||||}");
+add("selser", "Fuzz testing: Parser16 [[3,[2]]]", 
"{|<!--fqa9lrr74yflmcxr-->\n!https://|||||||}");
 add("selser", "Fuzz testing: Parser16 [[0,[[1,1,1,0]]]]", "{|\n! 
data-foobar=\"zu74dq5r4l5wmi\" |https://|| data-foobar=\"at9q2rxpkvivbo6r\" ||| 
data-foobar=\"knfvnx3swhppsyvi\" ||||}");
 add("selser", "Fuzz testing: Parser16 [[0,[[0,2,4,2]]]]", 
"{|\n!https://\n!yojby2s147usdcxr||\n!v7e4oycgqkqehfr\n!k6xurl8iqpz257b9|||}");
 add("selser", "Fuzz testing: Parser16 [1]", "{| 
data-foobar=\"rwdbutcm2hbprpb9\"\n!https://|||||||}");
 add("selser", "Fuzz testing: Parser16 [[2,[1]]]", 
"{|<!--qd4b7r8tzb79cnmi-->\n!https://|||||||}");
 add("selser", "Fuzz testing: Parser21 [[2,2]]", 
"{|<!--fqbthlkw80cf2yb9-->\n<!--5e3ophtbp1jg7gb9-->! irc://{{ftp://a\"; 
onmouseover=\"alert('hello world');\"\n||}");
 add("selser", "Fuzz testing: Parser21 [1]", "{| 
data-foobar=\"kaeydswgfnxnipb9\"\n! irc://{{ftp://a\"; 
onmouseover=\"alert('hello world');\"\n||}");
+add("selser", "Fuzz testing: Parser21 [[4,[2]]]", 
"{|<!--kky0a6mymhwfusor--><!--we67bat81qlx47vi-->\n! irc://{{ftp://a\"; 
onmouseover=\"alert('hello world');\"\n||}");
 add("selser", "Fuzz testing: Parser21 [[3,[1]]]", "{|\n! irc://{{ftp://a\"; 
onmouseover=\"alert('hello world');\"\n||}");
 add("selser", "Fuzz testing: Parser21 [[0,[[[0,2,0],0,0]]]]", "{|\n! 
6ro52eq6kkzf47vi<nowiki/>irc://{{ftp://a\"; onmouseover=\"alert('hello 
world');\"\n||}");
 add("selser", "Fuzz testing: Parser21 [[2,[[3,0,0]]]]", 
"{|<!--91khydnxj2it3xr-->\n\n||}");
 add("selser", "Fuzz testing: Parser21 [[0,[[[4,[4],0],0,0]]]]", 
"{|\n!1z6izy471osf9a4i[irc://{{ftp://a 35m7cjzb2mrhpvi]\" 
onmouseover=\"alert('hello world');\"\n||}");
 add("selser", "Fuzz testing: Parser21 [2]", "k8ttddjg2wxez5mi\n{|\n! 
irc://{{ftp://a\"; onmouseover=\"alert('hello world');\"\n|");
-add("selser", "Fuzz testing: Parser21 [[0,[2]]]", "s2ilax302x6o5hfr\n{|\n! 
irc://{{ftp://a\"; onmouseover=\"alert('hello world');\"\n|");
+add("selser", "Fuzz testing: Parser21 [[2,[2]]]", 
"{|<!--10dd0n612botj4i-->\n<!--9woo9t4yzpmygb9-->! irc://{{ftp://a\"; 
onmouseover=\"alert('hello world');\"\n||}");
+add("selser", "Fuzz testing: Parser21 [[0,[2]]]", 
"{|\n<!--s2ilax302x6o5hfr-->! irc://{{ftp://a\"; onmouseover=\"alert('hello 
world');\"\n||}");
 add("selser", "Fuzz testing: Parser21 [[0,[[[2,1,2],4,1]]]]", 
"{|\n!7wl5fvufhdaq0k9 irc://{{ftp://a<nowiki/>bhnjk55ovtvuz0k9\" 
onmouseover=\"alert('hello world');\"\n!7wmp05ki8ophw7b9\n| 
data-foobar=\"1y26x0gu7tbotj4i\" ||}");
 add("selser", "Fuzz testing: Parser21 [[3,[[2,0,0]]]]", 
"{|\n|bsnckhcoibai3sor\n! irc://{{ftp://a\"; onmouseover=\"alert('hello 
world');\"\n||}");
 add("selser", "Fuzz testing: Parser21 [[3,1]]", "{|\n! irc://{{ftp://a\"; 
onmouseover=\"alert('hello world');\"\n||}");
@@ -2430,6 +2451,7 @@
 add("selser", "Fuzz testing: Parser24 [[1,0,0],0,3]", "{{{|\n<u class=\"|\" 
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br 
style=\"onmouseover='alert(document.cookie);' \" />\n");
 add("selser", "Fuzz testing: Parser24 [1,2,[0,[3]]]", "{{{|\n<u class=\"|\" 
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br 
style=\"onmouseover='alert(document.cookie);' \" 
/>\n\n2ee2y1k6jblkrzfr\n\n{|\n\n|}");
 add("selser", "Fuzz testing: Parser24 [[2,4,0],0,3]", 
"2h96h5bmgi2lz0k9{{{7nrcllfxlygmn29<u class=\"|\" 
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br 
style=\"onmouseover='alert(document.cookie);' \" />\n");
+add("selser", "Fuzz testing: Parser24 [4,4,[3,[2]]]", 
"vtpmggos1rxm9529\n\ntg1e2avwggbymn29\n{|<!--yi16pa7w3cv7vi-->\n||}");
 add("selser", "Fuzz testing: Parser24 [[1,2,0],2,3]", 
"{{{6xvikssdmi4zehfr|\n<u class=\"|\" 
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br 
style=\"onmouseover='alert(document.cookie);' \" />\n\nwvwpzfhipqqfflxr\n\n\n");
 add("selser", "Fuzz testing: Parser24 [[1,2,0],0,4]", 
"{{{sk3rl6utosgojemi|\n<u class=\"|\" 
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br 
style=\"onmouseover='alert(document.cookie);' \" />\n\n\n\njzny1t7i47mygb9\n");
 add("selser", "Fuzz testing: Parser24 [1,1,2]", "{{{|\n<u class=\"|\" 
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br 
style=\"onmouseover='alert(document.cookie);' \" />\n\nMOVE YOUR MOUSE CURSOR 
OVER THIS TEXT\n\nwo1ljwyi3jlzbyb9\n{|\n{{{|\n<u CLASS=\n| 
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}} >\n<br 
style=\"onmouseover='alert(document.cookie);' \" />\n\nMOVE YOUR MOUSE CURSOR 
OVER THIS TEXT\n|");
@@ -2712,7 +2734,7 @@
 add("selser", "Parsoid-only: HTML tag with broken attribute value quoting 
[[[2]]]", "<span title=\"Hello world>3i3ony861ht49529Foo</span>");
 add("selser", "Parsoid-only: HTML tag with broken attribute value quoting 
[[[4]]]", "<span title=\"Hello world>stonzy9orpt1q0k9</span>");
 add("selser", "Table with broken attribute value quoting [2]", 
"mr20rqhubuwstt9\n{|\n| title=\"Hello world|Foo\n|}");
-add("selser", "Table with broken attribute value quoting [[0,[2,0]]]", 
"ntjtaez0pi0h33di\n{|\n| title=\"Hello world|Foo\n|}");
+add("selser", "Table with broken attribute value quoting [[0,[2,0]]]", 
"{|\n<!--ntjtaez0pi0h33di-->| title=\"Hello world|Foo\n|}");
 add("selser", "Table with broken attribute value quoting [[4,1]]", 
"{|<!--aai5lsutuhht1emi-->\n| title=\"Hello world|Foo\n|}");
 add("selser", "Table with broken attribute value quoting [[0,[[[2]],0]]]", 
"{|\n| title=\"Hello world|5ra5tvh3r39grpb9Foo\n|}");
 add("selser", "Table with broken attribute value quoting [[0,1]]", "{|\n| 
title=\"Hello world|Foo\n|}");
@@ -2737,12 +2759,13 @@
 add("selser", "RT-ed inter-element separators should be valid separators [2]", 
"zpuyqbdlibj1nhfr\n{|\n|- [[foo]]\n|}");
 add("selser", "RT-ed inter-element separators should be valid separators 
[[4,[0,2]]]", "{|<!--72wprvcrqcsxajor-->\n|- 
[[foo]]<!--fo1qvsdgv3xtuik9-->\n|}");
 add("selser", "RT-ed inter-element separators should be valid separators 
[[4,2]]", "{|<!--j8hwklray6ekx1or--><!--p7v1guykesl9pb9-->\n|- [[foo]]\n|}");
+add("selser", "RT-ed inter-element separators should be valid separators 
[[0,[2,4]]]", "{|\n<!--illxemer9nrpy14i-->|- 
[[foo]]<!--sxxrpf8t8m48ia4i-->\n|}");
 add("selser", "RT-ed inter-element separators should be valid separators 
[[0,[0,2]]]", "{|\n|- [[foo]]<!--qyiayk5wxhn9izfr-->\n|}");
 add("selser", "RT-ed inter-element separators should be valid separators 
[[4,0]]", "{|<!--a467voa6hewdygb9-->\n|- [[foo]]\n|}");
 add("selser", "Trailing newlines in a deep dom-subtree that ends a wikitext 
line should be migrated out [2,4,2]", 
"oxcq39cyuk07wrk9\n{|\n|<small>foo\nbar\n|}\nbtnbac04guj46lxr\n\ni10ii39io6hqto6r\n{|\n|<small>foo<small>\n|}");
 add("selser", "Trailing newlines in a deep dom-subtree that ends a wikitext 
line should be migrated out [[0,[[1],4]],3,[0,[[[[4,0]]],0]]]", "{|\n| 
data-foobar=\"6esm1j2nehup7gb9\" 
|<small>foo\nbar<!--t9z6766d6n06yldi-->\n|}\n{|\n|<small>4j0561nruz19vn29<small>\n|}");
 add("selser", "Trailing newlines in a deep dom-subtree that ends a wikitext 
line should be migrated out [2,0,3]", 
"zx1dph1o9tpam7vi\n{|\n|<small>foo\nbar\n|}\n");
-add("selser", "Trailing newlines in a deep dom-subtree that ends a wikitext 
line should be migrated out [2,0,[2,[2,0]]]", 
"i90l9omchljl9pb9\n{|\n|<small>foo\nbar\n|}\n\n14v0774pz99hpvi\n{|<!--aly77j0vv46de7b9-->\n|<small>foo<small>\n|}");
+add("selser", "Trailing newlines in a deep dom-subtree that ends a wikitext 
line should be migrated out [2,0,[2,[2,0]]]", 
"i90l9omchljl9pb9\n{|\n|<small>foo\nbar\n|}\n\n{|<!--aly77j0vv46de7b9-->\n<!--14v0774pz99hpvi-->|<small>foo<small>\n|}");
 add("selser", "Empty TD followed by TD with tpl-generated attribute [1]", "{| 
data-foobar=\"jgkmcix8xedsra4i\"\n|-\n|\n|{{echo|style='color:red'}}|foo\n|}");
 add("selser", "Empty TD followed by TD with tpl-generated attribute [2]", 
"r7gp18ucnccsdcxr\n{|\n|-\n|\n|{{echo|style='color:red'}}|foo\n|}");
 add("selser", "Empty TD followed by TD with tpl-generated attribute 
[[0,[[2,0,0,0],0]]]", 
"{|\n|-\n|1a4bk95i0u9885mi\n|\n|{{echo|style='color:red'}}|foo\n|}");
@@ -2750,6 +2773,7 @@
 add("selser", "Empty TD followed by TD with tpl-generated attribute 
[[0,[1,4]]]", "{|\n|- 
data-foobar=\"0532xsqruk32fbt9\"\n|\n|{{echo|style='color:red'}}|foo<!--tn18t2s8bb6b6gvi-->\n|}");
 add("selser", "Empty TD followed by TD with tpl-generated attribute [[0,2]]", 
"{|\n<!--anfn90dygsvbcsor-->|-\n|\n|{{echo|style='color:red'}}|foo\n|}");
 add("selser", "Empty TD followed by TD with tpl-generated attribute [[4,2]]", 
"{|<!--3z7wqf2lpjdlhaor--><!--c7w2sjrg7jozjjor-->\n|-\n|\n|{{echo|style='color:red'}}|foo\n|}");
+add("selser", "Empty TD followed by TD with tpl-generated attribute 
[[4,[2,0]]]", 
"{|<!--2bvfx9ybokmrhpvi--><!--gyubsw35fbeasjor-->\n|-\n|\n|{{echo|style='color:red'}}|foo\n|}");
 add("selser", "Empty TD followed by TD with tpl-generated attribute [[0,1]]", 
"{|\n|-\n|\n|{{echo|style='color:red'}}|foo\n|}");
 add("selser", "Empty TD followed by TD with tpl-generated attribute 
[[3,[[0,2,0,0],0]]]", 
"{|\n|-\n|t1833l938cq2rzfr\n|\n|{{echo|style='color:red'}}|foo\n|}");
 add("selser", "Empty TD followed by TD with tpl-generated attribute 
[[3,[[4,0,0,0],4]]]", 
"{|\n|-\n|9vflhnc8lefgk3xr\n|\n|{{echo|style='color:red'}}|foo<!--w612epsbwkf8yqfr-->\n|}");
diff --git a/tests/parserTests.js b/tests/parserTests.js
index 7d2eb91..e97a8dc 100755
--- a/tests/parserTests.js
+++ b/tests/parserTests.js
@@ -522,7 +522,7 @@
                                        }
                                }
                                break;
-                       case 'BODY' : wrapperName = 'P'; break;
+                       case 'BODY': wrapperName = 'P'; break;
                        default:
                                if (DU.isBlockNodeWithVisibleWT(n)) {
                                        wrapperName = 'P';
@@ -530,11 +530,11 @@
                                break;
                }
 
-               if (wrapperName) {
+               if (DU.isFosterablePosition(n) && n.parentNode.nodeName !== 
'TR') {
+                       newNode = ownerDoc.createComment(str);
+               } else if (wrapperName) {
                        newNode = ownerDoc.createElement(wrapperName);
                        newNode.appendChild(ownerDoc.createTextNode(str));
-               } else if (DU.isFosterablePosition(n)) {
-                       newNode = ownerDoc.createComment(str);
                } else {
                        newNode = ownerDoc.createTextNode(str);
                }

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I8578809a2caf90df67de138c9fdf1668d94aa8af
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <abrea...@wikimedia.org>
Gerrit-Reviewer: Arlolra <abrea...@wikimedia.org>
Gerrit-Reviewer: Cscott <canan...@wikimedia.org>
Gerrit-Reviewer: Subramanya Sastry <ssas...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to