Subramanya Sastry has uploaded a new change for review.
https://gerrit.wikimedia.org/r/230130
Change subject: DOMDiff: Get rid of 'modified' diff marker
......................................................................
DOMDiff: Get rid of 'modified' diff marker
* This was an awkward flag anyway and turns out, it was being
added redundantly.
* If a diff between node OLD and node NEW wasn't found (even with
deep lookaheads in both doms), we were advancing the pointer in
the old dom without advancing the pointer in the new dom. This
ensured that we'll check for shallow node compares and find
improved diffs. In the end, if we run off the end of all siblings
in the old dom, we mark all the new nodes as "inserted".
The 'modified' flag adding no new information, but when encountered,
pushed selser into a conservative mode.
* By removing the flag, it turns out selser is more accurate as
shown all the "newly failing" selser tests. I verified about
3 or 4 of these, and in all cases, the selser output is more
accurate than before (less dirtying).
* Also did some minor comment cleanup.
Change-Id: I14d2aaced1f50ed6867448fd38e5d95d67b79f54
---
M lib/mediawiki.DOMDiff.js
M lib/mediawiki.DOMUtils.js
M lib/mediawiki.WikitextSerializer.js
M tests/parserTests-blacklist.js
4 files changed, 53 insertions(+), 46 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid
refs/changes/30/230130/1
diff --git a/lib/mediawiki.DOMDiff.js b/lib/mediawiki.DOMDiff.js
index c3e26d7..ba8eeb1 100644
--- a/lib/mediawiki.DOMDiff.js
+++ b/lib/mediawiki.DOMDiff.js
@@ -32,17 +32,6 @@
// SSS FIXME: Why are we cloning??
var workNode = node.cloneNode(true);
- // SSS FIXME: Is this required?
- //
- // First do a quick check on the top-level nodes themselves
- // FIXME gwicke: Disabled for now as the VE seems to drop data-parsoid
on
- // the body and the serializer does not respect a 'modified' flag on the
- // body. This also assumes that we always diff on the body element.
- // if (!this.treeEquals(this.env.page.dom, workNode, false)) {
- // this.markNode(workNode, 'modified');
- // return { isEmpty: false, dom: workNode };
- // }
-
// The root nodes are equal, call recursive differ
this.debug('ORIG:\n', this.env.page.dom.outerHTML, '\nNEW :\n',
workNode.outerHTML);
var foundChange = this.doDOMDiff(this.env.page.dom, workNode);
@@ -162,7 +151,7 @@
};
/**
- * Test if two DOM nodes are equal without testing subtrees
+ * Test if two DOM nodes are equal
*/
DDP.treeEquals = function(nodeA, nodeB, deep) {
if (nodeA.nodeType !== nodeB.nodeType) {
@@ -315,7 +304,7 @@
} else if (savedNewNode.nodeName ===
baseNode.nodeName &&
DU.getDataParsoid(savedNewNode).stx ===
DU.getDataParsoid(baseNode).stx) {
// Identical wrapper-type, but modified.
- // Mark as modified, and recurse.
+ // Mark modified-wrapper, and recurse.
this.debug("--found diff:
modified-wrapper--");
this.markNode(savedNewNode,
'modified-wrapper');
if
(!DU.isTplOrExtToplevelNode(baseNode) &&
@@ -324,19 +313,13 @@
this.doDOMDiff(baseNode,
savedNewNode);
}
} else {
- // Mark the sub-tree as modified since
- // we have two entirely different nodes
here
- this.debug("--found diff: modified--");
- this.markNode(savedNewNode, 'modified');
-
- // If the two subtree are drastically
different, clearly,
- // there were deletions in the new
subtree before 'savedNewNode'.
- // Add a deletion marker since this is
important for accurate
- // separator handling in selser.
- this.markNode(savedNewNode, 'deleted',
DU.isBlockNodeWithVisibleWT(baseNode));
-
// We now want to compare current
newNode with the next baseNode.
dontAdvanceNewNode = true;
+
+ // Since we are advancing in an old DOM
without advancing
+ // in the new DOM, there were
deletions. Add a deletion marker
+ // since this is important for accurate
separator handling in selser.
+ this.markNode(savedNewNode, 'deleted',
DU.isBlockNodeWithVisibleWT(baseNode));
}
}
@@ -365,7 +348,7 @@
}
}
- // mark extra new nodes as modified
+ // mark extra new nodes as inserted
while (newNode) {
this.debug("--found trailing new node: inserted--");
this.markNode(newNode, 'inserted');
diff --git a/lib/mediawiki.DOMUtils.js b/lib/mediawiki.DOMUtils.js
index 1938901..7981f5f 100644
--- a/lib/mediawiki.DOMUtils.js
+++ b/lib/mediawiki.DOMUtils.js
@@ -998,11 +998,9 @@
return dmark && dmark.diff.indexOf('children-changed') !== -1;
},
- hasInsertedOrModifiedDiffMark: function(node, env) {
+ hasInsertedDiffMark: function(node, env) {
var diffMark = this.currentDiffMark(node, env);
- return diffMark &&
- (diffMark.diff.indexOf('modified') >= 0 ||
- diffMark.diff.indexOf('inserted') >= 0);
+ return diffMark && diffMark.diff.indexOf('inserted') >= 0;
},
/**
diff --git a/lib/mediawiki.WikitextSerializer.js
b/lib/mediawiki.WikitextSerializer.js
index 64864e8..b659938 100644
--- a/lib/mediawiki.WikitextSerializer.js
+++ b/lib/mediawiki.WikitextSerializer.js
@@ -914,7 +914,7 @@
// If previous sibling is unmodified, nothing to worry about.
if (!DU.isMarkerMeta(prev, "mw:DiffMarker") &&
- !DU.hasInsertedOrModifiedDiffMark(prev, state.env)) {
+ !DU.hasInsertedDiffMark(prev, state.env)) {
return true;
}
@@ -948,7 +948,7 @@
// If a previous sibling was modified, we can't reuse the start
dsr.
while (prev) {
if (DU.isMarkerMeta(prev, 'mw:DiffMarker') ||
- DU.hasInsertedOrModifiedDiffMark(prev,
state.env)
+ DU.hasInsertedDiffMark(prev, state.env)
) {
return false;
}
@@ -1132,7 +1132,7 @@
if (domHandler && domHandler.handle) {
// DOM-based serialization
try {
- if (state.selserMode &&
DU.hasInsertedOrModifiedDiffMark(node, this.env)) {
+ if (state.selserMode &&
DU.hasInsertedDiffMark(node, this.env)) {
state.inModifiedContent
= true;
nextNode =
domHandler.handle(node, state, cb, wrapperUnmodified);
state.inModifiedContent
= false;
diff --git a/tests/parserTests-blacklist.js b/tests/parserTests-blacklist.js
index 6d56c79..30dd794 100644
--- a/tests/parserTests-blacklist.js
+++ b/tests/parserTests-blacklist.js
@@ -1454,12 +1454,14 @@
add("selser", "Parsoid only: Quote balancing context should be restricted to
td/th cells on the same wikitext line\n(Requires tidy for PHP parser output to
be fixed up) [[0,[[4,2,3,0,2],0]]]",
"{|\n!4hvneujbci0be29\n!dlmqv8ltd9lfpqfr!!''b\n|''a\n|1pz8cymf9xm9529||''b\n|}");
add("selser", "Parsoid only: Quote balancing context should be restricted to
td/th cells on the same wikitext line\n(Requires tidy for PHP parser output to
be fixed up) [[0,[[1,2,0,1,[[2]]],0]]]", "{|\n! data-foobar=\"t5yzsleh3tprpb9\"
|''a\n!39y1a3cg7nyrdx6r!!''b\n| data-foobar=\"e4eryq6zjlaexw29\"
|''a||''ud4ocn5ppv3rf6rb''\n|}");
add("selser", "Parsoid only: Quote balancing context should be restricted to
td/th cells on the same wikitext line\n(Requires tidy for PHP parser output to
be fixed up) [[0,[1,4]]]",
"{|\n!''a!!''b\n|''a||''b<!--kstn821po5cgcik9-->\n|}");
+add("selser", "Parsoid only: Quote balancing context should be restricted to
td/th cells on the same wikitext line\n(Requires tidy for PHP parser output to
be fixed up) [[3,[2,4]]]",
"{|<!--nqj6st564egkfbt9-->\n!''a!!''b\n|''a||''b<!--mbdymwqqr02uik9-->\n|}");
add("selser", "Parsoid only: Quote balancing context should be restricted to
td/th cells on the same wikitext line\n(Requires tidy for PHP parser output to
be fixed up) [[4,1]]", "{|<!--etpqkkwhhxhl4n29-->\n!''a!!''b\n|''a||''b\n|}");
add("selser", "Non-word characters don't terminate tag names (bug 17663,
40670, 52022) 5", "<blockquote|>a\n\n<b→> doesn't terminate </b→>\n\n<bä>
doesn't terminate </bä>\n\n<boo> doesn't terminate </boo>\n\n<s.foo> doesn't
terminate </s.foo>\n\n<sub-ID#1>\n");
add("selser", "Non-word characters don't terminate tag names + tidy 5",
"<blockquote|>a\n\n<b→> doesn't terminate </b→>\n\n<bä> doesn't terminate
</bä>\n\n<boo> doesn't terminate </boo>\n\n<s.foo> doesn't terminate
</s.foo>\n\n<sub-ID#1>\n");
add("selser", "Empty lines between lines with block tags
[0,0,0,0,4,[4],0,4,2,4,2,0,0,3,3,0,0,[4]]",
"<div></div>\n\n\n0jr2knw69qode7b9\n\nak4f0xoun9bv5cdi\n\n4us29365j9f9lik9\n\n3sh6psvknz3hm2t9\n\n8z2ywhrg9wl8fr\n\nz7s9at3qyq2xogvi\n\nb\n\n<div>b</div>\n<div>h2r4miiukcoez5mi</div>");
add("selser", "Empty lines between lines with block tags
[0,4,2,2,0,4,0,[2],0,[4],3,0,0,0,0,2,3,0]",
"<div></div>g72sdt9b9996bt9\n\nau765cdgwcsg7gb9\n\n\n\nqhrfek8hsgkz9f6r\n<div></div>rw83ofcbk55vzpvi\n\nvky2au8c7nmnp14ib\n<div>eu25mfmjxi0sh5mi</div>\n\n<div>b</div>d\n\nvxxu49npeng66r\n\n<div>e</div>");
add("selser", "<nowiki> inside <pre> (bug 13238) [4,2,2,0,0]",
"ptjux9vq9zarlik9\n\ny7rebotz1jo1dcxr\nnb7mtl9jj0jm7vi<pre>\n<nowiki></nowiki>\n</pre>\n<pre><nowiki><nowiki></nowiki>Foo<nowiki></nowiki></nowiki></pre>");
+add("selser", "<nowiki> inside <pre> (bug 13238) [0,3,1,0,3]",
"<pre>\n<nowiki>\n</pre><pre
data-foobar=\"d4vv2qk2d3wel8fr\">\n\n<nowiki></nowiki>\n</pre>\n");
add("selser", "<nowiki> inside <pre> (bug 13238) [3,0,3,3,2]",
"\np32i6amoddb9y66r<pre><nowiki><nowiki></nowiki>Foo<nowiki></nowiki></nowiki></pre>");
add("selser", "<nowiki> inside <pre> (bug 13238) [0,3,3,0,2]",
"<pre>\n<nowiki>\n</pre>\nf1s3by12sbw97ldi<pre><nowiki><nowiki></nowiki>Foo<nowiki></nowiki></nowiki></pre>");
add("selser", "<nowiki> inside <pre> (bug 13238) [[3],0,[0,3],3,[4,0,1,2]]",
"<pre></pre>\n<pre>\n\n<nowiki></nowiki></pre><pre>8snncrntp84ims4iFoo<nowiki></nowiki>vdl3ymz68paurf6r</nowiki></pre>");
@@ -1470,6 +1472,7 @@
add("selser", "<nowiki> and <pre> preference (first one wins)
[[4],0,3,0,0,0]",
"<pre>\nhtov4vvjzewdygb9</pre>\n\n<nowiki>\n<pre>\n<nowiki>\n</pre>\n</nowiki>\n</pre>\n");
add("selser", "<nowiki> and <pre> preference (first one wins) [3,4,3,0,2,0]",
"u20jle5jk0hvkj4i\n\nn067pn35sxjsv2t9\n\n<nowiki>\n<pre>\n<nowiki>\n</pre>\n</nowiki>\n</pre>\n");
add("selser", "<nowiki> and <pre> preference (first one wins)
[[2],0,1,0,2,4]",
"<pre>\n8ko393dqfxxvquxr<nowiki>\n</pre>\n</nowiki>\n</pre>\n\nmgac8wudaavy4x6r\n\n<nowiki>\n<pre>\n<nowiki>\n</pre>\n</nowiki>\n</pre>\n\n1js1f9r56vl5wmi\n");
+add("selser", "<nowiki> and <pre> preference (first one wins)
[[4],0,1,3,1,0]",
"<pre>\nbv7gok2svqntgldi</pre>\n</nowiki>\n</pre>\n\n<nowiki>\n<pre>\n<nowiki>\n</pre>\n</nowiki>\n</pre>\n");
add("selser", "<nowiki> and <pre> preference (first one wins)
[4,0,2,0,[0,4],4]",
"tdqftxhs7bsxlxr\n\nup3ot7cx78sq0k9\n\n</nowiki>\n</pre>\n\n<nowiki>\n<pre>\n<nowiki>\n</pre>\n</nowiki>57nnl6navsmaq0k9\n\nops9m7gl3ee1att9\n");
add("selser", "<nowiki> and <pre> preference (first one wins)
[0,0,[2,2],0,2,0]",
"<pre>\n<nowiki>\n</pre>\nayl0rt9j2rvvlsor</nowiki>ku5wz6d4oixjemi\n</pre>\n\naoia6vijp7722o6r\n\n<nowiki>\n<pre>\n<nowiki>\n</pre>\n</nowiki>\n</pre>\n");
add("selser", "Templates: Indent-Pre: 1f: Wrapping should be based on expanded
content [0,4,0,0,0,0,0,3,0,0,0,4,0,0,[3]]", "{{echo|
}}axyuf8omjvhxv42t9{{echo|\n }}a\n\n{{echo|\n b}}\n{{echo|a\n
}}b\nrnjrx8un9rvsra4i{{echo|a\n}} ");
@@ -1562,23 +1565,23 @@
add("selser", "External links: wiki links within external link (Bug 3695)
[[0,2,0]]", "[http://example.com [[wikilink]] embedded in ext
link]pj9l2glwx6sf9a4i\n");
add("selser", "External links: wiki links within external link (Bug 3695)
[[0,4,0]]", "[http://example.com [[wikilink]] embedded in ext
link]2zzejaf2y9nc23xr\n");
add("selser", "External links: wiki links within external link (Bug 3695)
[[3,2,0]]", "0uk611ztql8wu3di\n");
-add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[3,0,[2],0,3,4,3,[0,[0,[1]],4],0,1]]", "\n[http://example.com
4n2162e1fd730udi'''text''']'''rgd08hyitua0pb9''Something [http://example.com
mixed''''', even bold''''']l55strlralri19k9''\n'''''Now [http://example.com
both'''''<nowiki/>''''']'''''");
+add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[3,0,[2],0,3,4,3,[0,[0,[1]],4],0,1]]", "\n[http://example.com
4n2162e1fd730udi'''text]'''rgd08hyitua0pb9''Something [http://example.com
mixed''''', even bold''''']l55strlralri19k9''\n'''''Now [http://example.com
both''''']'''");
add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid [1]",
"''[http://example.com text'']\n[http://example.com '''text]'''\n''Something
[http://example.com in italic'']\n''Something [http://example.com mixed''''',
even bold]'''\n'''''Now [http://example.com both''''']");
add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid [2]",
"ypjgrwin4revcxr\n\n''[http://example.com text'']\n[http://example.com
'''text]'''\n''Something [http://example.com in italic'']\n''Something
[http://example.com mixed''''', even bold]'''\n'''''Now [http://example.com
both''''']");
add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[[[0,1]],0,3,1,4,1,3,[0,[0,[[3]]],3],4,3]]", "''[http://example.com
text''<nowiki/>'']''\n'''<nowiki/>'''7qwqa9229ey7gb9''Something
[http://example.com in italic'']Something [http://example.com
mixed'''''<nowiki/>''''']''counvgra3151xlxr\n");
-add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[2,0,4,4,2,1,0,3,0,4]]", "fxsbmxalr8f9wwmi''[http://example.com
text'']\ng1cxmyk709vygb9kr3b7p92rmg0t3xrc6f6w79eiwfjemi\n''Something
[http://example.com in italic''<nowiki/>'']''\n\nxqwjvsy7ltvgqfr\n");
+add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[2,0,4,4,2,1,0,3,0,4]]", "fxsbmxalr8f9wwmi''[http://example.com
text'']\ng1cxmyk709vygb9kr3b7p92rmg0t3xrc6f6w79eiwfjemi\n''Something
[http://example.com in italic'']''\n\nxqwjvsy7ltvgqfr\n");
add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[4,0,0,0,0,4,4,4,0,[3]]]", "0zdw3pkk57hnnrk9\n[http://example.com
'''text]'''\nizanpf6huff20529vfp1wv58jce1xlxry331mymvx0cc8fr\n'''<nowiki/>'''");
add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[1,3,2,2,0,1,4,[0,3,0],0,[4]]]", "''[http://example.com
text'']''9ois0yoxiebfbt9[http://example.com
'''text]saoppxketkic0udi'''\n''Something [http://example.com in
italic'']''o0hyqnpaq38cwhfr''Something '<nowiki/>''\n'''hyq0ggqn4hzadcxr'''");
-add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[3,0,3,3,4,[3,[4,0]],0,[0,1,3],0,[[3,[0,2]]]]]",
"\nsjft3sgyl0i9t3xr''[http://example.com
spz6gumbba84zpvi''<nowiki/>'']''\n''Something [http://example.com mixed''''',
even bold]''\n'''''[http://example.com
bothi78rcmgoegtoi529'''''<nowiki/>''''']'''''");
+add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[3,0,3,3,4,[3,[4,0]],0,[0,1,3],0,[[3,[0,2]]]]]",
"\nsjft3sgyl0i9t3xr''[http://example.com spz6gumbba84zpvi'']''\n''Something
[http://example.com mixed''''', even bold]''\n'''''[http://example.com
bothi78rcmgoegtoi529''''']'''''");
add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[[3],0,[2],0,4,1,0,4,3,3]]", "''<nowiki/>''\n[http://example.com
rgkc3a28h38cwhfr'''text]'''fuoqrsdna64dkj4i''Something [http://example.com in
italic'']''\nmsb55932ah7rdx6r\n");
-add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[3,0,3,1,0,2,4,3,3,[[0,[0,1]]]]]",
"\n'''<nowiki/>'''\nz032w7z1kdo0f6r''Something [http://example.com in
italic'']o88q9qaoc6ljif6r'''''Now [http://example.com
both'''''<nowiki/>''''']'''''");
+add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[3,0,3,1,0,2,4,3,3,[[0,[0,1]]]]]",
"\n'''<nowiki/>'''\nz032w7z1kdo0f6r''Something [http://example.com in
italic'']o88q9qaoc6ljif6r'''''Now [http://example.com both'''''''']'''''");
add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[2,2,[2],1,0,[3,0],3,[3,[0,[[4]]],0],0,3]]",
"o9nab4h230tnvcxr''[http://example.com
text'']u5sfhyznivd3g14i\n[http://example.com
isdro1map7qa1yvi'''text]'''<nowiki/>'''\n''[http://example.com in
italic''][http://example.com mixed'''''o08ug21d18h3erk9''''']'<nowiki/>''\n");
add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[[2],4,[[4]],0,4,[0,4],2,2,3,[4]]]", "''kndlu276kxz5b3xr[http://example.com
text'']''66fz4jk56gtd42t9[http://example.com
'''hbtqecdqt5oecdi''']'''sr9o6vidsk5u3di''Something
81gi1py5yann4s4i''i1h0s35lu287iudi\nr1c3unvdylanhfr''Something
[http://example.com mixed''''', even bold]''''''cwiw4wazt6kfn7b9'''");
add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[2,0,3,0,3,2,0,[3,2,0],2,[3]]]", "rxaa2sxf4o8yqfr''[http://example.com
text'']\n'''mtebxw1xl4x11yvi''Something [http://example.com in
italic'']\n''vt2hxx23uta3v7vi[http://example.com mixed''''', even
bold]'''fr3tlqbb4piizfr\n'''<nowiki/>'''");
add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[4,2,0,0,4,[2,[4,1]],0,1,2,1]]",
"uypp3nxnupst6gvi5lixlomwktb4vx6r\n[http://example.com
'''text]'''1euo2nqbj6mvx6r''s5ucqw1bludz33diSomething [http://example.com
iqi27jd7nxoxyldi''<nowiki/>'']''\n''Something [http://example.com mixed''''',
even bold]'''3rrma1jx3c70hpvi\n'''''Now [http://example.com both''''']'''");
add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[3,2,[4],0,0,1,2,3,4,[3]]]", "8co7ywkausb81tt9\n[http://example.com
85zbd3drbz8pk3xr]'''\n''Something [http://example.com in
italic'']''kce2gq57vem9ggb9\ni16rg8p39nj6ecdi'''<nowiki/>'''");
add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[0,3,[4],2,0,[0,[0,1]],0,[3,[3,4],3],2,[[0,4]]]]", "''[http://example.com
text''][http://example.com utcl2r0fq8lac3di]3qd60yxh5otakyb9'''\n''Something
[http://example.com in italic''<nowiki/>'']''\n''[http://example.com
dc0yjx5wecvaq0k9]''gbmw7avnratf0f6r\n'''''Now ozt1j409a2d42t9'''''");
-add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[2,4,0,4,0,1,2,1,0,2]]", "pv9ge46otv86w29''[http://example.com
text'']t24xqdq7y0la0pb9[http://example.com '''text]10amjvk8ra1nhfr\n''Something
[http://example.com in italic''<nowiki/>'']''l4tfdpdshpqilik9\n''Something
[http://example.com mixed''''', even bold]'''\nziz3awxqv8lu9pb9'''''Now
[http://example.com both''''']");
+add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[2,4,0,4,0,1,2,1,0,2]]", "pv9ge46otv86w29''[http://example.com
text'']t24xqdq7y0la0pb9[http://example.com '''text]10amjvk8ra1nhfr\n''Something
[http://example.com in italic'']''l4tfdpdshpqilik9\n''Something
[http://example.com mixed''''', even bold]'''\nziz3awxqv8lu9pb9'''''Now
[http://example.com both''''']");
add("selser", "Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
[[0,0,4,4,0,[3,4],0,[4,[4,0],0],2,3]]", "''[http://example.com
text'']\nxh33ebkbpr639pb9ikqa3l7jkhrdlsor\n''h327flpc5pbsxlxr''\n''3icsd821v6de7b9[http://example.com
2cukbor10uanhfr''''', even bold]'''3cf3j98c7sfnipb9\n");
add("selser", "External link containing double-single-quotes with no space
separating the url from text in italics [[0,1,1]]",
"[http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm''La muerte de
Casagemas'' (1901) en el sitio de [[Museo Picasso (París)|Museo
Picasso]].][[Museo Picasso (París)|Museo Picasso]]<span
data-foobar=\"w3fg9p5998n3tyb9\">.</span>\n");
add("selser", "External link containing double-single-quotes with no space
separating the url from text in italics [2]",
"pl3umz8dotsdobt9\n\n[http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm''La
muerte de Casagemas'' (1901) en el sitio de [[Museo Picasso (París)|Museo
Picasso]].]");
@@ -1601,17 +1604,18 @@
add("selser", "Unclosed and unmatched quotes
[[1],0,[1],0,[3],0,[2,2],0,4,0,4,2,4,0,3,0,4,0,[[0,[4]],0,3],0,4]", "'''''Bold
italic text '''with bold deactivated''' in between.'''''\n\n'''''Bold italic
text ''with italic deactivated'' in between.'''''\n\ny4h85lgdrtacerk9..spanning
two paragraphs (should not
work).3gnmqbeuuymbo6r'''\n\n3m9bvegcf03sor\n\nskw0gib981xde7b9\n\ndjjwoysazbvgqfr\n\nqcokvvv9z09kke29\n\nvmtyprts14m9rudi\n\n''Tom'''1qr9kmif90ox0f6r'''''<nowiki/>'''Susan'''\n\n5e2ez0in4um78pvi\n");
add("selser", "Unclosed and unmatched quotes
[[[3,0,[3]]],0,[1],0,2,2,3,0,[4],4,[4],0,0,3,0,4,[2,3,3,4,3,0],0,4,2,[0,3,4]]",
"''with bold deactivated'''<nowiki/>'''''\n\n'''''Bold italic text ''with
italic deactivated'' in between.'''''\n\nuimy0isfyrykfbt9\n\n'''Bold
text..\n\nhl888wghmewxw29\n\n4yq4z49x86ywrk9\n\nomsddcwsglihehfr\n\nmumepxtpar0vbo6r\n\nNormal
text.\n\n<!-- Unmatching number of opening, closing tags:
-->dska41gwjbwyu8fr\n\n508yy8ogfxd8ia4i'''This
year''''0o13pli3vxojq0k9s.\n\n12et9k2znm5wb3xr\n\nl97w0g61j6rvbo6r\n\nPlain
iahdy1xbdbjwz5mi");
add("selser", "Unclosed and unmatched quotes
[4,0,3,0,2,0,0,2,4,0,[4],2,[4],2,4,0,[0,0,2,0,0,0],4,1,0,[0,2,0]]",
"p51yt1t1l2rfi529\n\nrhoigk26dmkg9zfr\n\n'''Bold text..\n\n..spanning two
paragraphs (should not
work).'''\n\n0d622p6w2fenrk9\n\nurr17dfxaytd42t9\n\nt29ejiu69b0jatt9\n\nimupp3pckiq9f6r\n\n92qds57sy49ozuxr\n\nueel0927jmo8yqfr\n\nngdgm7xfofg8pvi\n\n'''This
year'<nowiki/>'''s election cx7g7aolgz4a38fr''should'' beat '''last
year''''s.\n\n5swpjnt4bod5nrk9\n\n''Tom'''s car is bigger than
'''''<nowiki/>'''Susan'''s.\n\nPlain bktidt0kwhr529''italic'''s plain");
-add("selser", "Unclosed and unmatched quotes
[[1],4,[2],3,3,3,1,2,2,0,2,0,2,3,4,2,[[2],3,3,0,[4],2],0,3,3,[0,4,0]]",
"'''''Bold italic text '''with bold deactivated''' in
between.'''''\n\npvym8fwuqk1hh0k9\n\nqxfz5g7yx7ehr529'''''Bold italic text
''with italic deactivated'' in between.'''''\n\n..spanning two paragraphs
(should not
work).'''<nowiki/>'''\n\nimm43yv5xicw61or\n\nqf82msyi498me7b9\n\n'''Bold tag
left open\n\nh20k7bi0nzdgf1or\n\n''Italic tag left
open\n\n4bg7ac36siztzkt9\n\nNormal
text.\n\nvo6dn3vgrv0a4i\n\newzcuf80f1l6usor\n\n'''tbfhcj88z2w97ldiThis year''''
beat '''m3gmfr9sp4cjif6r'''npe02pgi9a8rrudis.\n\nPlain lg1x7859rhdrt3xrs
plain");
+add("selser", "Unclosed and unmatched quotes
[[1],4,[2],3,3,3,1,2,2,0,2,0,2,3,4,2,[[2],3,3,0,[4],2],0,3,3,[0,4,0]]",
"'''''Bold italic text '''with bold deactivated''' in
between.'''''\n\npvym8fwuqk1hh0k9\n\nqxfz5g7yx7ehr529'''''Bold italic text
''with italic deactivated'' in between.'''''\n\n..spanning two paragraphs
(should not work).'''\n\nimm43yv5xicw61or\n\nqf82msyi498me7b9\n\n'''Bold tag
left open\n\nh20k7bi0nzdgf1or\n\n''Italic tag left
open\n\n4bg7ac36siztzkt9\n\nNormal
text.\n\nvo6dn3vgrv0a4i\n\newzcuf80f1l6usor\n\n'''tbfhcj88z2w97ldiThis year''''
beat '''m3gmfr9sp4cjif6r'''npe02pgi9a8rrudis.\n\nPlain lg1x7859rhdrt3xrs
plain");
add("selser", "Unclosed and unmatched quotes
[4,2,2,2,4,4,[0,1],0,1,2,2,0,3,0,0,0,[1,0,1,0,3,3],3,3,4,4]",
"sxp631t0lu4pwrk9\n\nuiov8qw0vsegsyvi\n\ns5pdb3gqeq5pcik9\n\n'''''Bold italic
text ''with italic deactivated'' in
between.'''''\n\n0im0vx321sv2t9\n\nw84opzg7rvpwrk9\n\na10san19w6a8aor\n\n..spanning
two paragraphs (should not work).'''<nowiki/>'''\n\n'''Bold tag left
open'''\n\nzmakc4arcm78pvi\n\nskau1bd5191qncdi\n\n''Italic tag left
open\n\n\n<!-- Unmatching number of opening, closing tags: -->'''This year''''s
election ''should'' beat \n\nfg0el0revo5el8fr\n\n29zcwcjdje0fi529\n");
add("selser", "Unclosed and unmatched quotes
[[[0,4,[2]]],4,[[3,0,1]],0,3,2,0,0,[[3]],3,3,3,0,0,0,0,3,0,[3,[4],0],0,2]",
"'''''Bold italic text '''frylpuwwxz9kvs4i'''si2oklqrxelmobt9 in
between.'''''\n\n4b0fwpx8i4yousor\n\n'''with italic deactivated'' in
between.'''''\n\n4y74tj37ci7fogvi\n\n..spanning two paragraphs (should not
work).'''\n\n'''<nowiki/>'''\n\nNormal text.\n\n<!-- Unmatching number of
opening, closing tags:
-->\n'''955t9gdexkbdfgvi'''s.\n\n7vsge66w9ew2ke29\n\nPlain ''italic'''s plain");
add("selser", "Unclosed and unmatched quotes
[[[[4],0,0]],0,1,0,2,4,[0,1],0,2,4,4,2,0,0,0,0,[[3],3,0,0,[3],3],0,2,2,3]",
"'''''g25w0ee1muat6gvi'''with bold deactivated''' in between.'''''\n\n'''''Bold
italic text ''with italic deactivated'' in
between.'''''\n\n978osfsmlz9tfbt9\n\n'''Bold
text..\n\n6va1z48gd8wipb9\n\n..spanning two paragraphs (should not
work).'''<nowiki/>'''\n\npap02f80lg8yf1or\n\n'''Bold tag left
open\n\nrc9woq2unjnhfr\n\nvwn5ww762sft7qfr\n\n4tvj8y1sqzg2e29\n\nNormal
text.\n\n<!-- Unmatching number of opening, closing tags:
-->\n'''<nowiki/>'''''should'' beat
'''<nowiki/>'''\n\ngo0uih65ed841jor\n\n''Tom'''s car is bigger than
''Susan'''s.\n\ngxolomlzomtsatt9\n");
-add("selser", "Unclosed and unmatched quotes
[[1],2,3,3,0,0,2,0,[[2]],0,[3],0,3,3,0,0,1,0,[3,0,4],4,3]", "'''''Bold italic
text '''with bold deactivated''' in
between.'''''\n\no48k8kitkr8dunmi\n\n'''Bold
text..\n\njg529j0bl3c2qpvi\n\n..spanning two paragraphs (should not
work).'''\n\n'''86igisuev2sjdcxrBold tag left open'''\n\n\n<!-- Unmatching
number of opening, closing tags: -->'''This year'<nowiki/>'''s election
''should'' beat '''last
year''''s.\n\nSusan'''9gtumj4ocnomvx6r\n\nprfakduhs9gousor\n");
+add("selser", "Unclosed and unmatched quotes
[[1],2,3,3,0,0,2,0,[[2]],0,[3],0,3,3,0,0,1,0,[3,0,4],4,3]", "'''''Bold italic
text '''with bold deactivated''' in
between.'''''\n\no48k8kitkr8dunmi\n\n'''Bold
text..\n\njg529j0bl3c2qpvi\n\n..spanning two paragraphs (should not
work).'''\n\n'''86igisuev2sjdcxrBold tag left open'''\n\n\n<!-- Unmatching
number of opening, closing tags: -->'''This year''''s election ''should'' beat
'''last year''''s.\n\nSusan'''9gtumj4ocnomvx6r\n\nprfakduhs9gousor\n");
+add("selser", "Unclosed and unmatched quotes
[2,0,[[2,2,[3]]],3,1,3,3,0,3,4,[[4]],2,4,4,2,0,3,0,1,2,[3,4,3]]",
"pw5zq7ljhfy4aemi\n\n'''''Bold italic text '''with bold deactivated''' in
between.'''''\n\n'''fbtby3wxdli0be29''Bold italic text ''hosaxi984a9n3ik9with
italic deactivated''<nowiki/>'''''\n\n'''Bold
text..\n\nc74033tc8r529\n\n''crya5qg6h10mgqfr''\n\n97y6epfwllsaif6r\n\nv4ny06vgjpvkuik9\n\npybvt95p8bzqia4i\n\nf4w0i3lwoafez5mi<!--
Unmatching number of opening, closing tags: -->\n\n''Tom'''s car is bigger
than '''''<nowiki/>'''Susan'''s.\n\n35ggkj027wuerk9\n\n5akp3n5k0fk9y66r");
add("selser", "Unclosed and unmatched quotes
[2,0,[1],0,[2],0,[3,0],0,0,2,3,4,[2],2,0,3,[2,3,4,0,[4],0],0,3,3,[3,1,0]]",
"z4argjbmeescq5mi\n\n'''''Bold italic text '''with bold deactivated''' in
between.'''''\n\n'''''Bold italic text ''with italic deactivated'' in
between.'''''\n\n947x1e69qode7b9'''Bold text..\n\n'''\n\n'''Bold tag left
open\n\n3ki8ayg0o64xi529\n\n79eq5ijnx56rbe29\n\ndxlh1ogra88jv2t9Normal
text.\n\nxi7td8h5z9pv6lxr\n\n<!-- Unmatching number of opening, closing tags:
-->23dgn6ecyq281tt9'''This year''''39sqeg7p7m0a4i beat
'''oiu6lbk4gnrn3ik9'''s.\n\n''italic'''s plain");
-add("selser", "Unclosed and unmatched quotes
[[2],0,4,3,[2],3,3,4,[[2]],0,0,2,3,4,0,0,4,2,[[3,[4]],2,0],3,2]",
"4yw4wxjunjtw3ik9'''''Bold italic text '''with bold deactivated''' in
between.'''''\n\nis7cyalf54su4n29\n\nmpbxmb8jpqlg14i'''Bold
text..'''\n\nalbr13x2jt273nmi\n\n'''6g5d8o738wave7b9Bold tag left
open'''\n\n''Italic tag left open\n\nteulxe8k1ma0dx6r\n\nxou6as0vzir7ldi\n<!--
Unmatching number of opening, closing tags:
-->\nujbw98y12pxecdi\n\nis2fqvz346byy14i\n\n'''''kzqmouenkvz8semi'''''9tj86gikh3j1c3di'''Susan'''s.\n\ni4wvgq117adobt9\n\nPlain
''italic'''s plain");
+add("selser", "Unclosed and unmatched quotes
[[2],0,4,3,[2],3,3,4,[[2]],0,0,2,3,4,0,0,4,2,[[3,[4]],2,0],3,2]",
"4yw4wxjunjtw3ik9'''''Bold italic text '''with bold deactivated''' in
between.'''''\n\nis7cyalf54su4n29\n\nmpbxmb8jpqlg14i'''Bold
text..\n\nalbr13x2jt273nmi\n\n'''6g5d8o738wave7b9Bold tag left
open'''\n\n''Italic tag left open\n\nteulxe8k1ma0dx6r\n\nxou6as0vzir7ldi\n<!--
Unmatching number of opening, closing tags:
-->\nujbw98y12pxecdi\n\nis2fqvz346byy14i\n\n'''''kzqmouenkvz8semi'''''9tj86gikh3j1c3di'''Susan'''s.\n\ni4wvgq117adobt9\n\nPlain
''italic'''s plain");
add("selser", "Unclosed and unmatched quotes
[[[0,4,[4]]],4,[[[3],0,0]],3,4,2,[0,3],0,2,4,1,3,0,3,0,2,[3,2,[4],0,2,0],0,3,0,2]",
"'''''Bold italic text
'''75o98j53ggyqr529'''dy2un1421co0qkt9'''''\n\nambk3df76pfrbe29\n\n'''''<nowiki/>''with
italic deactivated'' in
between.'''''\n\nmlan2o9gwrx2bj4i\n\n5ad1bsnc7xrvbo6r\n\n..spanning two
paragraphs (should not work).\n\n7rqyhyinmtqvkj4i\n\n'''Bold tag left
open\n\n6e1728i1rre019k9\n\n''Italic tag left open''\n\nNormal text.\n\n<!--
Unmatching number of opening, closing tags:
-->yrma779mh822csor\n\nzowg8vddfmxcg14is election ''bpl4hu1cvunmi'' beat
mqxj0davy046xbt9'''last year''''s.\n\nsrp1nabhht7ta9k9\n\nPlain ''italic'''s
plain");
add("selser", "Unclosed and unmatched quotes
[[[1,0,1]],3,[4],2,2,0,0,2,0,0,3,2,0,2,0,0,[[2],0,[3],3,0,4],0,[1,0,0],0,4]",
"'''''Bold italic text '''with bold deactivated''' in
between.'''''\n\n44b370raypmk7qfr\n\ni211swg0nbpam7vi\n\nvavmabtdw75jyvi\n\n'''Bold
text..\n\n..spanning two paragraphs (should not
work).'''\n\n4p1evrnwbqd26gvi\n\n'''Bold tag left
open\n\newqyg6brwjmrt3xr\n\nNormal text.\n\nah55m0efoatnjyvi\n\n<!-- Unmatching
number of opening, closing tags: -->\n'''o7plzsqaknmte29This year'<nowiki/>'''s
election ''<nowiki/>'''''last year'<nowiki/>'''2yo5fdbdlipy14i\n\n''Tom'''s car
is bigger than '''''<nowiki/>'''Susan'''s.\n\nllfjggl4suhgds4i\n");
add("selser", "Unclosed and unmatched quotes
[[3],0,[1],0,3,2,1,4,4,4,4,3,[2],0,0,0,3,0,3,2,[4,3,3]]", "\n\n'''''Bold italic
text ''with italic deactivated'' in
between.'''''\n\nx1xcylcyh7gphkt9\n\n..spanning two paragraphs (should not
work).'''\n\nnf1j27vv64unmi\n\n8gq7zshkmb49529\n\nequpikb2dtj1nhfr\n\n9qkbw2p05e6a8aor\n\nxmkojfga7ja1c3diNormal
text.\n\n<!-- Unmatching number of opening, closing tags:
-->\nrmvdbh91k72xzuxr\n\n2mzfijueenq4zpvi");
-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
[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'''\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|}");
@@ -1630,6 +1634,7 @@
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|}");
add("selser", "Table td-cell syntax variations [[4,[1,4]]]",
"{|<!--27awwjo3287iudi-->\n| foo bar foo | baz\n| foo bar foo || baz\n|
style='color:red;' | baz\n| style='color:red;' ||
baz<!--jkw3iop5lpcfpqfr-->\n|}");
add("selser", "Table td-cell syntax variations [1]", "{|
data-foobar=\"ripzux1o66crf6r\"\n| foo bar foo | baz\n| foo bar foo || baz\n|
style='color:red;' | baz\n| style='color:red;' || baz\n|}");
+add("selser", "Table td-cell syntax variations [[3,[2,0]]]",
"{|<!--aerzm44cpngynwmi-->\n| foo bar foo | baz\n| foo bar foo || baz\n|
style='color:red;' | baz\n| style='color:red;' || baz\n|}");
add("selser", "Table td-cell syntax variations
[[4,[[2,0,2,[3],4,0,3,[3],1],2]]]",
"{|<!--mz3xyunmkehwu3di-->\n|w4c4887c9phnnrk9\n| foo bar foo |
baz\n|l0hmwng5zji9hpvi\n| foo bar foo ||\n|si4mhwzz7p919k9\n|
style='color:red;' | baz\n||| data-foobar=\"kxxz57fxsgbq33di\" |
baz<!--ekzrdkkb8xopf1or-->\n|}");
add("selser", "Table td-cell syntax variations [[0,[[4,0,0,1,0,0,0,4,4],0]]]",
"{|\n|juve1nh5fs4kuik9\n| foo bar foo || data-foobar=\"v00hdvjl3int57b9\" |
baz\n| style='color:red;' | baz\n|6x3dng4d2qehfr\n|eow57cf1pgmn29\n|}");
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|}");
@@ -1650,13 +1655,13 @@
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 [[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", "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| α\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-->|
α\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|
α\n|\n{| bgcolor=#ABCDEF border=2\n|nested\n|-\n|table\n|}\n|the original
table again\n|}");
@@ -1668,7 +1673,7 @@
add("selser", "Nested table [[2,1]]", "{| border=1<!--35nkwvkg96ls1yvi-->\n|
α\n|\n{| bgcolor=\"#ABCDEF\" border=\"2\"\n|nested\n|-\n|table\n|}\n|the
original table again\n|}");
add("selser", "Nested table [[3,[3,0]]]", "{| border=1\n|}");
add("selser", "Nested table [[0,[[[4,0],0,4,2,1],3]]]", "{|
border=1\n|nnqydx4felt2zkt9α\n|krzzwsokfqen4s4i\n|crl4tbkmgl9xusor\n|
data-foobar=\"hezkv4q5eb9ms4i\" |the original table again\n|}");
-add("selser", "Nested table [[3,[1,4]]]", "{| border=1\n| α\n|\n{|
bgcolor=\"#ABCDEF\" border=\"2\"\n|nested\n|-\n|table\n|}\n|the original table
again<!--xoe21j7jau62bj4i-->\n|}");
+add("selser", "Nested table [[3,[1,4]]]", "{| border=1\n| α\n|\n{|
bgcolor=#ABCDEF border=2\n|nested\n|-\n|table\n|}\n|the original table
again<!--xoe21j7jau62bj4i-->\n|}");
add("selser", "Nested table [[0,4]]", "{|
border=1\n<!--1si3ih2ugqkqehfr-->|}");
add("selser", "Nested table [[0,[[1,2,[3,4],0,4],2]]]", "{| border=1\n|
data-foobar=\"rvxj3ybmjcl680k9\" |
α\n|hk2lwgso9gvz33di\n|nqxaiu7b5cngsyvi\n|ymx715n666j62yb9<!--qegrhh8kob76i529-->\n|}");
add("selser", "Nested table [[0,[1,2]]]", "{| border=1\n| α\n|\n{|
bgcolor=#ABCDEF border=2\n|nested\n|-\n|table\n|}\n|the original table
again<!--4p9ui8hhwjy5vcxr-->\n|}");
@@ -1695,6 +1700,8 @@
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{{!}}}");
+add("selser", "Build table with {{!}} [[3,1]]", "{{{!}} class=\"wikitable\"\n!
header\n! second header\n{{!}}- style=\"color:red;\"\n{{!}} data {{!}}{{!}}
style=\"color:red;\" {{!}} second data\n{{!}}}");
+add("selser", "Build table with pipe as data
[[4,[[[3],4,[2]],4,1,3,1,0,[2,[3],0],3]]]", "{|
class=\"wikitable\"<!--gy83oqmogj1hsemi-->\n!\n!6ou7558lo31ve7b9\n!x3v452l2sgcfpqfr
second header<!--thydh4qgecy58kt9-->\n|- style=\"color:red;\"
data-foobar=\"dswqscim49xjemi\"\n| data || style=\"color:red;\" | second
data\n|- data-foobar=\"fdr26qqobkj1nhfr\"\n| style=\"color:red;\" | data with |
|| style=\"color:red;\" | second data with |\n|-\n|2tdvd6j4qhy0t3xr\n|||||
second data with |\n|}");
add("selser", "Build table with pipe as data [[4,2]]", "{|
class=\"wikitable\"<!--edau2tsedygb9--><!--v3k9certcyx03sor-->\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 [[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|}");
@@ -1780,6 +1787,7 @@
add("selser", "Nested lists 6 (both elements empty) [[2]]", "*
tmc5x74vyp7m0a4i\n*\n**");
add("selser", "Test the li-hack\n(The PHP parser relies on Tidy for the hack)
[[2,0,4,0,0,3,2,3],3,2]", "* a2sete5kqgmbo6r\n* foo\n* llnzbl3rhrnklnmi\n*
{{echo|<li>templated li-hack}}* jhdcjklsub84obt9\n* <!--foo-->
\ne5gkponwwotakyb9<ul>\n<li><li>not a li-hack\n</li>\n</ul>");
add("selser", "Unbalanced closing non-block tags don't break a list\n(php
parser relies on Tidy to fix up) [[4],0,[[4,4],3,2]]",
"390h6pqo24y22o6r\n*o41tgyrxzloko6rkhwclpkbqgsqbyb9\n*
x920d3kit2c323xr\n*b</span>");
+add("selser", "Unbalanced closing non-block tags don't break a list\n(php
parser relies on Tidy to fix up) [3,0,1]", "*a</span><span>\n*b</span>");
add("selser", "Unbalanced closing non-block tags don't break a list\n(php
parser relies on Tidy to fix up) [[1],0,1]", "<span
data-foobar=\"gmykdz3f6s2fyldi\">\n*a</span><span>\n*b</span>");
add("selser", "Unbalanced closing non-block tags don't break a list\n(php
parser relies on Tidy to fix up) [2,4,2]",
"p5zfzj30o8g833di\n\n<span>\n\nf07i3koy7pqtzkt9\n\nzkrsmqi20yynwmi\n*a</span><span>\n*b</span>");
add("selser", "Unbalanced closing non-block tags don't break a list\n(php
parser relies on Tidy to fix up) [0,3,[[0,2],0,2]]",
"<span>\n*a9ox9e692g6s3v7vi<span>\n* ksgt5bqr6cpaatt9\n*b</span>");
@@ -1830,6 +1838,7 @@
add("selser", "Template with invalid target containing unclosed tag [1]",
"<nowiki>{{</nowiki>a<b>|{{echo|foo}}|{{echo|a}}={{echo|b}}|a = b}}");
add("selser", "Template with invalid target containing unclosed tag [[0,1]]",
"<nowiki>{{</nowiki>a<b
data-foobar=\"ah4i6emv4j6pqfr\">|{{echo|foo}}|{{echo|a}}={{echo|b}}|a =b}}");
add("selser", "Template with invalid target containing unclosed tag [[4,2]]",
"d7d6vni91sfez5mio7di35eq9ubd42t9<b>|{{echo|foo}}|{{echo|a}}={{echo|b}}|a =
b}}");
+add("selser", "Template with invalid target containing unclosed tag
[[3,[0,0,4,0,3,0,0]]]", "<b>|{{echo|foo}}f3j5exmxvo0f6r{{echo|a}}{{echo|b}}|a
=b}}");
add("selser", "Template with invalid target containing unclosed tag
[[0,[4,0,0,0,3,0,0]]]",
"<nowiki>{{</nowiki>a<b>n6rra5yl19i442t9{{echo|foo}}|{{echo|a}}{{echo|b}}|a
=b}}");
add("selser", "Template with invalid target containing unclosed tag
[[3,[4,0,0,0,0,0,0]]]",
"<b>98je9r0hl43u9pb9{{echo|foo}}|{{echo|a}}={{echo|b}}|a =b}}");
add("selser", "Template with invalid target containing unclosed tag [2]",
"n9yqgp0xjbf647vi\n\n{{a<b>|{{echo|foo}}|{{echo|a}}={{echo|b}}|a = b}}");
@@ -1847,15 +1856,19 @@
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,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 [[3,1]]",
"{|\n|[[{{{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}}]]}}");
add("selser", "Template with targets containing wikilinks
[[2,1,0],0,[0,0,2],0,0]",
"h2hv5x8klgom9529<nowiki>{{</nowiki>[[foo]]}}\n\n<nowiki>{{</nowiki>[[{{echo|foo}}]]<nowiki/>ncfzvzzr3mzpvi<nowiki>}}</nowiki>\n\n{{{{echo|[[foo}}]]}}");
add("selser", "Template with targets containing wikilinks [0,3,2,0,2]",
"{{[[foo]]}}\n\n8rx6djpk76ojq0k9\n\n{{[[{{echo|foo}}]]}}\n\n5oa9tnlujuivn29\n\n{{{{echo|[[foo}}]]}}");
+add("selser", "Template with targets containing wikilinks [4,3,1,3,4]",
"tj6nwlghdk5ljtt9\n\n<nowiki>{{</nowiki>[[{{echo|foo}}]]}}\n\nz57gp6q7znuvunmi\n");
add("selser", "Template with targets containing wikilinks [[4,0,4],0,1,2,4]",
"340gvnbe2k7nl8fr[[foo]]<nowiki/>s33i9adwhcd9ggb9\n\n<nowiki>{{</nowiki>[[{{echo|foo}}]]}}\n\ny20i831f0qkt9\n\nbj9cw1q9ft6b6gvi\n");
+add("selser", "Template with targets containing wikilinks [[2,0,2],3,1,0,4]",
"10ghh1t5f8ddkj4i<nowiki>{{</nowiki>[[foo]]86q8c3ty61l6usor<nowiki>}}</nowiki>\n\n<nowiki>{{</nowiki>[[{{echo|foo}}]]}}\n\n52q3lpdqrn7sc3di\n");
add("selser", "Template with targets containing wikilinks
[[0,[3],0],0,0,2,2]",
"<nowiki>{{</nowiki>[[foo|<nowiki/>]]}}\n\n{{[[{{echo|foo}}]]}}\n\n1z50cb7dcf28olxr\n\n1ituto223xxenrk9\n\n{{{{echo|[[foo}}]]}}");
add("selser", "Template with targets containing wikilinks [[0,2,0],0,2,0,0]",
"<nowiki>{{</nowiki>htu2qmdkzjkedn29[[foo]]}}\n\nfejf3xvsleopqfr\n\n{{[[{{echo|foo}}]]}}\n\n{{{{echo|[[foo}}]]}}");
add("selser", "Template with targets containing wikilinks [1,4,0,2,0]",
"<nowiki>{{</nowiki>[[foo]]}}\n\n1cd1vr2c1t9be29\n\n{{[[{{echo|foo}}]]}}\n\nkjsr70qifjx4unmi\n\n{{{{echo|[[foo}}]]}}");
+add("selser", "Template with targets containing wikilinks [3,0,1,0,4]",
"\n<nowiki>{{</nowiki>[[{{echo|foo}}]]}}\n\nnjip1d7tubz6ko6r\n");
add("selser", "Template with targets containing wikilinks [[3,4,0],0,2,0,3]",
"25jsxi33dblc8fr<nowiki>}}</nowiki>\n\nxo4f2m9ziaawnrk9\n\n{{[[{{echo|foo}}]]}}\n");
add("selser", "Template with targets containing wikilinks [2,0,[4,0,3],0,0]",
"jwj1clvcmw5qaor\n\n{{[[foo]]}}\n\na6sabnbx8xueg66r[[{{echo|foo}}]]\n\n{{{{echo|[[foo}}]]}}");
add("selser", "Template with targets containing wikilinks [2,3,2,0,0]",
"jn3l3gn2shlac3di\n\n{{[[foo]]}}\n\neps1xdvsq62vgqfr\n\n{{[[{{echo|foo}}]]}}\n\n{{{{echo|[[foo}}]]}}");
@@ -1883,7 +1896,7 @@
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}}");
add("selser", "Templates: P-wrapping: 1d. Template preceded by comment-only
line [2,3,0]", "5x3qqz5k5wl2qpvi\n\n<!-- foo -->{{echo|Bar}}");
-add("selser", "Templates: HTML Tables: 5. Proper fostering of categories from
inside [0,4,3,3,0,0,3,1]", "\n00y7omltvljfko6r\n<table
data-foobar=\"jmfnmukwsfko6r\"><tr><td>foo</td></tr></table>");
+add("selser", "Templates: HTML Tables: 5. Proper fostering of categories from
inside [0,4,3,3,0,0,3,1]", "\n00y7omltvljfko6r\n<table
data-foobar=\"jmfnmukwsfko6r\">[[Category:bar1]][[Category:bar2]]<tr><td>foo</td></tr></table>");
add("selser", "Templates: HTML Tables: 5. Proper fostering of categories from
inside [0,[3],0,0,3,0,4,2]", "<table></table>\n<!--Two categories (Bug
50330)-->\naa9zlufnr5nlv7vi\n\nq2pyl7rcb4e4gqfr<table>[[Category:bar1]][[Category:bar2]]<tr><td>foo</td></tr></table>");
add("selser", "Templates: HTML Tables: 5. Proper fostering of categories from
inside [4,1,3,2,2,2,0,2]", "ixen0t4bgr8xs9k9<table
data-foobar=\"srvdo6x0y0bb7qfr\"><tr><td>foo</td></tr></table>uzdg6q9o13xcrf6r<!--Two
categories (Bug
50330)-->4qtzlqvafwyaatt9\nxof76nvw8xmkj4i\nmjznl60h5moenrk9<table>[[Category:bar1]][[Category:bar2]]<tr><td>foo</td></tr></table>");
add("selser", "Templates: HTML Tables: 5. Proper fostering of categories from
inside [0,4,2,4,2,1,0,1]",
"\nfvxtgp3ng3c8fr\n\nndpvbu6qrq2awcdi\n\nxvl7qedcdte29\n\nut1kj4t41ud6lxr\n[[Category:bar1]]<table
data-foobar=\"bl3hi9ypv5d34n29\">[[Category:bar1]][[Category:bar2]]<tr><td>foo</td></tr></table>");
@@ -1983,6 +1996,7 @@
add("selser", "Table multiple attributes correction [[4,[[[2]],0]]]",
"{|<!--7o9jsnzarwq7u8fr-->\n!+ class=\"error\"
class=\"awesome\"|ic6dfteyj3zhncdi status\n|}");
add("selser", "Table multiple attributes correction [[0,2]]",
"{|\n<!--659x00mqf8b8olxr-->!+ class=\"error\" class=\"awesome\"| status\n|}");
add("selser", "Table multiple attributes correction [[0,[1,3]]]", "{|\n!+
class=\"error\" class=\"awesome\"| status\n|}");
+add("selser", "Table multiple attributes correction [[3,1]]", "{|\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]]]",
"{|\n<!--k6lgk37x5g0hpvi-->!+ class=\"error\" class=\"awesome\"| status\n|}");
@@ -2127,8 +2141,10 @@
add("selser", "Fuzz testing: Parser22 [1,0,2]",
"http://===r:::https://b\n\n3ql477um4peyu8fr\n{|");
add("selser", "Fuzz testing: Parser24 [[0,2,0],3,2]",
"{{{g6r38jevgd37hkt9|\n<u class=\"|\"
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br
style=\"onmouseover='alert(document.cookie);' \"
/>\n\n7yitay7jtsjdcxr\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|");
add("selser", "Fuzz testing: Parser24 [[[4],3,0],0,[0,3]]",
"<nowiki>aosym28xh3ibpgb9</nowiki><u class=\"|\"
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br
style=\"onmouseover='alert(document.cookie);' \" />{|\n\n|}");
+add("selser", "Fuzz testing: Parser24 [1,3,1]", "{{{|\n<u class=\"|\"
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br
style=\"onmouseover='alert(document.cookie);' \" />\n{|
data-foobar=\"6fgt6dvgb9j7zaor\"\n\n||}");
add("selser", "Fuzz testing: Parser24 [[4,0,0],0,[4,[1]]]",
"11sr1z4igrvpwrk9|\n<u class=\"|\"
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br
style=\"onmouseover='alert(document.cookie);' \"
/>{|<!--smnv2ch56iy919k9-->\n||}");
add("selser", "Fuzz testing: Parser24 [3,2,4]",
"u39lbr4wb5ptlnmi\n\n\n\nng2zinxre265hfr\n");
+add("selser", "Fuzz testing: Parser24 [[2,4,0],3,1]",
"05fmnodtnjfnipb9{{{wcunbgauo7uv7vi<u class=\"|\"
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br
style=\"onmouseover='alert(document.cookie);' \" />\n{|
data-foobar=\"yddsdri9li110pb9\"\n\n||}");
add("selser", "Fuzz testing: Parser24 [[[3],0,0],2,3]",
"<nowiki></nowiki>|\n<u class=\"|\"
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br
style=\"onmouseover='alert(document.cookie);' \" />\n\naruqvd6sv8bvgqfr\n\n\n");
add("selser", "Fuzz testing: Parser24 [4,4,[2,1]]",
"u2mgcfdhu9d7k3xr\n\nt2gfu2pam7vi\n{|<!--wl9sr7uggvjf9a4i-->\n\n||}");
add("selser", "Fuzz testing: Parser24 [[3,0,0],0,1]", "|\n<u class=\"|\"
{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br
style=\"onmouseover='alert(document.cookie);' \" />{|
data-foobar=\"gvuyg42a70y3c8fr\"\n\n||}");
@@ -2136,10 +2152,12 @@
add("selser", "Fuzz testing: Parser24 [0,2,0]",
"\n\n78ok5mnhx8icz0k9\n\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|");
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 [3,0,1]", "MOVE YOUR MOUSE CURSOR OVER
THIS TEXT\n{| data-foobar=\"vpeg0ehvafijatt9\"\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 [[4,3,0],3,1]", "ajjrvymgwee45cdi<u
class=\"|\" {{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}}>\n<br
style=\"onmouseover='alert(document.cookie);' \" />\n{|
data-foobar=\"q3u36zzq1lg3z0k9\"\n\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|");
add("selser", "Fuzz testing: Parser25 (bug 6055) [0,2]", "{{{\n| \n<LI
CLASS=||\n >\n}}}zstgbb6nw6nr8uxr\n\nblah\" onmouseover=\"alert('hello
world');\" align=\"left\"'''MOVE MOUSE CURSOR OVER HERE");
add("selser", "Fuzz testing: Parser25 (bug 6055) [0,1]", "{{{\n| \n<LI
CLASS=||\n >\n}}}blah\" onmouseover=\"alert('hello world');\"
align=\"left\"'''MOVE MOUSE CURSOR OVER HERE");
@@ -2179,10 +2197,14 @@
add("selser", "Don't fall for the self-closing div [[2]]",
"<div>3554xqvubx83erk9hello world</div/>");
add("selser", "Parsing of overlapping (improperly nested) inline html tags
[2]", "y9cin9njblr6n7b9\n\n<span><s>x</span></s>");
add("selser", "Don't break table handling if language converter markup is in
the cell. [2]", "ixer2na9oirudi\n{|\n|-\n| -{R|B}-\n|}");
+add("selser", "Don't break table handling if language converter markup is in
the cell. [[3,[1,4]]]", "{|\n|- data-foobar=\"lxrh34k2mmoq1tt9\"\n|
-{R|B}-<!--czk30pw9nitl0udi-->\n|}");
+add("selser", "Don't break table handling if language converter markup is in
the cell. [[3,[2,3]]]", "{|<!--kvgh4eibaoiggb9-->\n|-\n| -{R|B}-\n|}");
add("selser", "Don't break table handling if language converter markup is in
the cell. [[4,2]]", "{|<!--g1hlzg5fl3hrrudi--><!--x4cqrou87inyu8fr-->\n|-\n|
-{R|B}-\n|}");
add("selser", "Don't break table handling if language converter markup is in
the cell. [1]", "{| data-foobar=\"ihw5lexd32uzncdi\"\n|-\n| -{R|B}-\n|}");
add("selser", "Don't break table handling if language converter markup is in
the cell. [[4,[[4,0],0]]]", "{|<!--nuhfaguqghc9pb9-->\n|-\n|9qyto9ifqjsxxbt9\n|
-{R|B}-\n|}");
add("selser", "Don't break table handling if language converter markup is in
the cell. [[0,2]]", "{|\n<!--11c9cgnqpuys0pb9-->|-\n| -{R|B}-\n|}");
+add("selser", "Don't break table handling if language converter markup is in
the cell. [[3,1]]", "{|\n|-\n| -{R|B}-\n|}");
+add("selser", "Don't break table handling if language converter markup is in
the cell. [[3,[1,3]]]", "{|\n|- data-foobar=\"62vnpmgm6rzlg14i\"\n|
-{R|B}-\n|}");
add("selser", "Don't break table handling if language converter markup is in
the cell. [[0,1]]", "{|\n|-\n| -{R|B}-\n|}");
add("selser", "Bug 529: Uncovered bullet leaving empty list, normally removed
by tidy [[[[[3]]],0]]", "**{{bullet}}");
add("selser", "Bug 529: Uncovered bullet leaving empty list, normally removed
by tidy [[1,0]]", "******* Foo {{bullet}}");
@@ -2445,11 +2467,13 @@
add("selser", "Table with broken attribute value quoting [1]", "{|
data-foobar=\"pa0vp357jvr0ms4i\"\n| title=\"Hello world|Foo\n|}");
add("selser", "Table with broken attribute value quoting [[0,[[2],0]]]",
"{|\n|wf125xn56rhsq0k9\n| title=\"Hello world|Foo\n|}");
add("selser", "Table with broken attribute value quoting [[0,[[2],2]]]",
"{|\n|cp6e2iwuotkjra4i\n| title=\"Hello world|Foo<!--ndtyo6dy2iou5wmi-->\n|}");
+add("selser", "Table with broken attribute value quoting on consecutive lines
[[3,1]]", "{|\n| title=\"Hello world|Foo\n| style=\"color:red|Bar\n|}");
add("selser", "Table with broken attribute value quoting on consecutive lines
[[3,2]]", "{|<!--e45oiux5ebmg3nmi-->\n| title=\"Hello world|Foo\n|
style=\"color:red|Bar\n|}");
add("selser", "Table with broken attribute value quoting on consecutive lines
[1]", "{| data-foobar=\"r285ew8on06yldi\"\n| title=\"Hello world|Foo\n|
style=\"color:red|Bar\n|}");
add("selser", "Table with broken attribute value quoting on consecutive lines
[[0,[1,0]]]", "{|\n| title=\"Hello world|Foo\n| style=\"color:red|Bar\n|}");
add("selser", "Table with broken attribute value quoting on consecutive lines
[2]", "g4iu5aji4bwqaor\n{|\n| title=\"Hello world|Foo\n|
style=\"color:red|Bar\n|}");
add("selser", "Table with broken attribute value quoting on consecutive lines
[[0,1]]", "{|\n| title=\"Hello world|Foo\n| style=\"color:red|Bar\n|}");
+add("selser", "Table with broken attribute value quoting on consecutive lines
[[3,[2,0]]]", "{|<!--vmfsvz1xmlrz4cxr-->\n| title=\"Hello world|Foo\n|
style=\"color:red|Bar\n|}");
add("selser", "Table with broken attribute value quoting on consecutive lines
[[0,[[[2],3,3],0]]]", "{|\n| title=\"Hello world|b04knn3whm5nrk9Foo\n|}");
add("selser", "Table with broken attribute value quoting on consecutive lines
[[4,[[[3],0,0],0]]]", "{|<!--xx6pmaat1ma0dx6r-->\n| title=\"Hello world\" |\n|
style=\"color:red|Bar\n|}");
add("selser", "Table with broken attribute value quoting on consecutive lines
[[4,[[1,0,0],0]]]", "{|<!--nejaqckt9hmbcsor-->\n| title=\"Hello world\"
data-foobar=\"bumvfdcvrbhme7b9\" |Foo\n| style=\"color:red|Bar\n|}");
@@ -2500,9 +2524,10 @@
add("selser", "Improperly nested inline or quotes tags with whitespace in
between [[[2,1],[3],3,[0,3],0]]", "<span>i9p8te7ufdmquxr <s
data-foobar=\"xoximjgruc95dn29\">x</span></s>''' ''' ''");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[0,4,[2,[[4],2]]]",
"\n\neyvglbq1wiykfbt9<table><!--yjj7q4l8vy22o6r-->\n<tr><td>c2kzihajh6oxyldi</td><!--u6dd8p15d8guv7vi-->\n</table>");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[1,3,[2,[[4],3]]]", "<nowiki> </nowiki><nowiki>||</nowiki>
<nowiki>||</nowiki><table><!--07pdt8u7nxvcmcxr-->\n<tr><td>w6cuullrqw0wl8fr</td>\n</table>");
+add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[3,4,1]", "o7gd264t7kdwjyvi<table data-foobar=\"lv0fkoe23hdj9k9\">\n<tr> ||
||\n<td> a\n</table>");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[3,2,2]", "r7yvmnw0lwstt9\njvym2daxe28adcxr<table>\n<tr> || ||\n<td>
a\n</table>");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[3,2,1]", "mk36x4nnqo7p66r\n<table data-foobar=\"j76ebe3ig8u59udi\">\n<tr> ||
||\n<td> a\n</table>");
-add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[0,3,[2,2]]", "<table><!--20ybuhlylvnjc3di-->\n<!--ia2m4awxfye97ldi--><tr><td>
a\n</table>");
+add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[0,3,[2,2]]", "<table><!--20ybuhlylvnjc3di-->\n<!--ia2m4awxfye97ldi--><tr> ||
||\n<td> a\n</table>");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[0,3,[4,4]]", "<table><!--7u0an54r0gdgqfr--><!--2brxlofgz5cj714i--></table>");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[2,3,3]", "swmghyjbym3u9pb9\n\n\n");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[0,4,4]", "\n\n6ouscimmanvobt9\n\nyr9z5asll86hto6r\n");
@@ -2514,6 +2539,7 @@
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[1,0,1]", "<nowiki> </nowiki><nowiki>||</nowiki> <nowiki>||</nowiki>\n<table
data-foobar=\"734xmyt3rp5jyvi\">\n<tr> || ||\n<td> a\n</table>");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[2,0,[0,3]]", "z8xg0t8oxy8k6gvi\n\n\n<table></table>");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[2,2,[2,[3,2]]]",
"4p9b5ylwp6gpsyvi\n\n\n\n52u735k3ah96n7b9\n<table><!--u4n4phdgngffxbt9-->\n<!--ox538fcmtef2bj4i-->\n</table>");
+add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[3,4,[2,0]]", "r04d5cr392cpu8fr<table><!--nkka2k3hiqode7b9-->\n<tr> || ||\n<td>
a\n</table>");
add("selser", "Table in fosterable position 5",
"{{OpenTable}}\n<div>\n{|\n|}\n");
add("selser", "Image: upright option is ignored on inline and frame images
(parsoid) [1]", "[[File:Foobar.jpg|500x500px|upright=0.5|caption]]");
add("selser", "Image: upright option is ignored on inline and frame images
(parsoid) [2]",
"kywu2qkfz9eh4cxr\n\n[[File:Foobar.jpg|500x500px|upright=0.5|caption]]");
--
To view, visit https://gerrit.wikimedia.org/r/230130
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I14d2aaced1f50ed6867448fd38e5d95d67b79f54
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Subramanya Sastry <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits