jenkins-bot has submitted this change and it was merged. Change subject: Use simplediff to diff rt-server test results ......................................................................
Use simplediff to diff rt-server test results Change-Id: I4e079cee763429d203c58aca5c8111a0afe5af07 --- M lib/mediawiki.Util.js M package.json M tests/roundtrip-test.js 3 files changed, 40 insertions(+), 10 deletions(-) Approvals: Marcoil: Looks good to me, approved jenkins-bot: Verified diff --git a/lib/mediawiki.Util.js b/lib/mediawiki.Util.js index 34cd020..5d5ccd5 100644 --- a/lib/mediawiki.Util.js +++ b/lib/mediawiki.Util.js @@ -9,6 +9,7 @@ var async = require('async'), request = require( 'request' ), jsDiff = require( 'diff' ), + simpleDiff = require( 'simplediff' ), entities = require( 'entities' ), TemplateRequest = require( './mediawiki.ApiRequest.js' ).TemplateRequest, Consts = require('./mediawiki.wikitext.constants.js').WikitextConstants; @@ -1249,29 +1250,31 @@ currentPair = {}; }; + var valueLength = change[1].join('').length; + if ( !currentPair ) { currentPair = {}; } - if ( change.added ) { + if ( change[0] === '+' ) { if ( currentPair.added ) { pushPair( currentPair, outOff ); } currentPair.added = { start: outOff }; - outOff += change.value.length; + outOff += valueLength; currentPair.added.end = outOff; if ( currentPair.removed ) { pushPair( currentPair ); } - } else if ( change.removed ) { + } else if ( change[0] === '-' ) { if ( currentPair.removed ) { pushPair( currentPair, srcOff ); } currentPair.removed = { start: srcOff }; - srcOff += change.value.length; + srcOff += valueLength; currentPair.removed.end = srcOff; if ( currentPair.added ) { @@ -1282,14 +1285,41 @@ pushPair( currentPair, currentPair.added ? srcOff : outOff ); } - srcOff += change.value.length; - outOff += change.value.length; + srcOff += valueLength; + outOff += valueLength; } } ); return pairs; }; + +var diffLines = function(oldString, newString) { + var lineTokenize = function(value) { + var retLines = [], + lines = value.split(/^/m); + for(var i = 0; i < lines.length; i++) { + var line = lines[i], + lastLine = lines[i - 1]; + // Merge lines that may contain windows new lines + if (line === '\n' && lastLine && lastLine[lastLine.length - 1] === '\r') { + retLines[retLines.length - 1] += '\n'; + } else if (line) { + retLines.push(line); + } + } + return retLines; + }; + + if (oldString === newString) { + return [['=', [newString]]]; + } else { + return simpleDiff.diff(lineTokenize(oldString), lineTokenize(newString)); + } +}; + + Util.convertDiffToOffsetPairs = convertDiffToOffsetPairs; +Util.diffLines = diffLines; }( Util ) ); diff --git a/package.json b/package.json index 8c993a1..baaf453 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ }, "devDependencies": { "colors": "~0.6.2", - "diff": "~1.0.7" + "diff": "~1.0.7", + "simplediff": "0.1.1" }, "main": "mediawiki.parser.js", "scripts": { diff --git a/tests/roundtrip-test.js b/tests/roundtrip-test.js index 544393f..1bf60da 100755 --- a/tests/roundtrip-test.js +++ b/tests/roundtrip-test.js @@ -1,8 +1,7 @@ #!/usr/bin/env node "use strict"; -var jsDiff = require( 'diff' ), - request = require( 'request' ), +var request = require( 'request' ), optimist = require( 'optimist' ), domino = require( 'domino' ), url = require( 'url' ), @@ -461,7 +460,7 @@ var diff, offsetPairs; try { - diff = jsDiff.diffLines( out, env.page.src ); + diff = Util.diffLines(out, env.page.src); offsetPairs = Util.convertDiffToOffsetPairs( diff ); if ( diff.length > 0 ) { -- To view, visit https://gerrit.wikimedia.org/r/115985 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4e079cee763429d203c58aca5c8111a0afe5af07 Gerrit-PatchSet: 6 Gerrit-Project: mediawiki/services/parsoid Gerrit-Branch: master Gerrit-Owner: Bebirchall <bebirch...@gmail.com> Gerrit-Reviewer: Bebirchall <bebirch...@gmail.com> Gerrit-Reviewer: GWicke <gwi...@wikimedia.org> Gerrit-Reviewer: Marcoil <marc...@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