GWicke has submitted this change and it was merged.

Change subject: Added --editMode option to parse.js and parserTests.js
......................................................................


Added --editMode option to parse.js and parserTests.js

* This turns off autoInserted* flags in the the serializer.
  Enabling this mode will cause more parser tests to fail
  as well as add a lot more noise to roundtrip-testing.

  Selective serialization automatically disables the use of these
  flags. Production deploy in the live editing scenario will also
  disable the flags.

* Running parserTests in editMode seems to lead to 17 additional
  wt2wt test failures.

Change-Id: Iaa3b1bf17d8068d21d87153837ab97b61448dcda
---
M js/lib/mediawiki.DOMPostProcessor.js
M js/lib/mediawiki.SelectiveSerializer.js
M js/lib/mediawiki.WikitextSerializer.js
M js/tests/parse.js
M js/tests/parserTests.js
5 files changed, 29 insertions(+), 17 deletions(-)

Approvals:
  Krinkle: Looks good to me, approved
  GWicke: Verified; Looks good to me, approved



diff --git a/js/lib/mediawiki.DOMPostProcessor.js 
b/js/lib/mediawiki.DOMPostProcessor.js
index b54dadf..45a03b9 100644
--- a/js/lib/mediawiki.DOMPostProcessor.js
+++ b/js/lib/mediawiki.DOMPostProcessor.js
@@ -1,6 +1,6 @@
-"use strict";
-
 /* Perform post-processing steps on an already-built HTML DOM. */
+
+"use strict";
 
 var events = require('events'),
        Util = require('./mediawiki.Util.js').Util,
@@ -1564,7 +1564,7 @@
                                                        expectedName = data[0];
                                                sibling = c.previousSibling;
                                                if (( sibling && 
sibling.nodeName.toLowerCase() !== expectedName ) ||
-                                                       (!sibling && 
c.parentNode.nodeName.toLowerCase() !== expectedName ))
+                                                       (!sibling && 
c.parentNode.nodeName.toLowerCase() !== expectedName))
                                                {
                                                        //console.log( 'start 
stripped! ', expectedName, c.parentNode.innerHTML );
                                                        addPlaceholderMeta(c, 
dp, expectedName, {start: true, tsr: stagTsr});
diff --git a/js/lib/mediawiki.SelectiveSerializer.js 
b/js/lib/mediawiki.SelectiveSerializer.js
index 5e7826d..8ddd7d1 100644
--- a/js/lib/mediawiki.SelectiveSerializer.js
+++ b/js/lib/mediawiki.SelectiveSerializer.js
@@ -385,9 +385,12 @@
  * @param options.oldid {string} The revision ID you want to compare to 
(defaults to latest revision)
  */
 var SelectiveSerializer = function ( options ) {
-       this.wts = options.wts || new WikitextSerializer( options );
+       // Set edit mode
+       this.env = options.env || { conf : { parsoid : {} } };
+       this.env.conf.parsoid = Util.clone(this.env.conf.parsoid);
+       this.env.conf.parsoid.editMode = true;
 
-       this.env = options.env || {};
+       this.wts = options.wts || new WikitextSerializer( options );
 
        // The output wikitext collector
        this.wtChunks = [];
diff --git a/js/lib/mediawiki.WikitextSerializer.js 
b/js/lib/mediawiki.WikitextSerializer.js
index 19a46df..9d25cd8 100644
--- a/js/lib/mediawiki.WikitextSerializer.js
+++ b/js/lib/mediawiki.WikitextSerializer.js
@@ -268,11 +268,9 @@
  * @param options {Object} List of options for serialization
  */
 function WikitextSerializer( options ) {
-       this.options = Util.extendProps( {
-               // defaults
-       }, options || {} );
-
+       this.options = options || {};
        this.env = options.env;
+       this.options.rtTesting = !this.env.conf.parsoid.editMode;
        this.debugging = this.env.conf.parsoid.traceFlags &&
                (this.env.conf.parsoid.traceFlags.indexOf("wts") !== -1);
 
@@ -337,7 +335,6 @@
  * ********************************************************************* */
 
 WSP.initialState = {
-       // TODO: default to false for anything that could involve edits to the 
DOM
        rtTesting: true,
        sep: {},
        atStartOfOutput: true,
@@ -2918,8 +2915,8 @@
        var state = Util.extendProps({},
                // Make sure these two are cloned, so we don't alter the initial
                // state for later serializer runs.
-               Util.clone(this.initialState),
-               Util.clone(this.options)),
+               Util.clone(this.options),
+               Util.clone(this.initialState)),
                serializeInfo = state.selser.serializeInfo;
 
        // Record the serializer
diff --git a/js/tests/parse.js b/js/tests/parse.js
index 6b0a9aa..9fb5b2b 100644
--- a/js/tests/parse.js
+++ b/js/tests/parse.js
@@ -90,6 +90,11 @@
                        'boolean': true,
                        'default': false
                },
+               'editMode': {
+                       description: 'Test in edit-mode (changes some parse & 
serialization strategies)',
+                       'default': false,
+                       'boolean': true
+               },
                'debug': {
                        description: 'Debug mode',
                        'boolean': true,
@@ -199,6 +204,7 @@
                env.conf.parsoid.fetchTemplates = argv.fetchTemplates;
                env.conf.parsoid.usePHPPreProcessor = 
env.conf.parsoid.fetchTemplates && argv.usephppreprocessor;
                env.conf.parsoid.maxDepth = argv.maxdepth || 
env.conf.parsoid.maxDepth;
+               env.conf.parsoid.editMode = argv.editMode;
 
                Util.setDebuggingFlags( env.conf.parsoid, argv );
 
diff --git a/js/tests/parserTests.js b/js/tests/parserTests.js
index ef8e9c2..6796ec9 100644
--- a/js/tests/parserTests.js
+++ b/js/tests/parserTests.js
@@ -180,11 +180,6 @@
                        'default': false,
                        'boolean': true
                },
-               'use_source': {
-                       description: 'Use original source in wt2wt tests',
-                       'boolean': true,
-                       'default': true
-               },
                'html2html': {
                        description: 'Roundtrip testing: HTML(DOM) -> Wikitext 
-> HTML(DOM)',
                        'default': false,
@@ -192,6 +187,16 @@
                },
                'selser': {
                        description: 'Roundtrip testing: Wikitext -> DOM(HTML) 
-> Wikitext (with selective serialization)',
+                       'default': false,
+                       'boolean': true
+               },
+               'use_source': {
+                       description: 'Use original source in wt2wt tests',
+                       'boolean': true,
+                       'default': true
+               },
+               'editMode': {
+                       description: 'Test in edit-mode (changes some parse & 
serialization strategies)',
                        'default': false,
                        'boolean': true
                },
@@ -1274,6 +1279,7 @@
                        console.warn("ERROR: " + e);
                        console.error( e.stack );
                };
+               this.env.conf.parsoid.editMode = options.editMode;
                Util.setDebuggingFlags( this.env.conf.parsoid, options );
                options.modes = [];
                if ( options.wt2html ) {

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Iaa3b1bf17d8068d21d87153837ab97b61448dcda
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: master
Gerrit-Owner: Subramanya Sastry <[email protected]>
Gerrit-Reviewer: GWicke <[email protected]>
Gerrit-Reviewer: Krinkle <[email protected]>
Gerrit-Reviewer: Subramanya Sastry <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to