diff --git a/lib/reporters/base.js b/lib/reporters/base.js index a1ad3d8d9a..40b5996461 100644 --- a/lib/reporters/base.js +++ b/lib/reporters/base.js @@ -196,11 +196,13 @@ function stringifyDiffObjs(err) { var generateDiff = (exports.generateDiff = function (actual, expected) { try { - const maxLen = exports.maxDiffSize || Number.MAX_SAFE_INTEGER; - const skipped = Math.max(actual.length - maxLen, expected.length - maxLen); - - actual = actual.slice(0, maxLen); - expected = expected.slice(0, maxLen); + var maxLen = exports.maxDiffSize; + var skipped = 0; + if (maxLen > 0) { + skipped = Math.max(actual.length - maxLen, expected.length - maxLen); + actual = actual.slice(0, maxLen); + expected = expected.slice(0, maxLen); + } let result = exports.inlineDiffs ? inlineDiff(actual, expected) : unifiedDiff(actual, expected); @@ -328,8 +330,7 @@ function Base(runner, options) { var maxDiffSizeOpt = this.options.reporterOption && this.options.reporterOption.maxDiffSize; - console.error(); - if (maxDiffSizeOpt !== undefined && !Number.isNaN(Number(maxDiffSizeOpt))) { + if (maxDiffSizeOpt !== undefined && !isNaN(Number(maxDiffSizeOpt))) { exports.maxDiffSize = Number(maxDiffSizeOpt); } diff --git a/test/reporters/base.spec.js b/test/reporters/base.spec.js index 510428e45a..909df90a0e 100644 --- a/test/reporters/base.spec.js +++ b/test/reporters/base.spec.js @@ -10,6 +10,9 @@ var Base = reporters.Base; var chaiExpect = chai.expect; var createElements = helpers.createElements; var makeTest = helpers.makeTest; +var Mocha = require('../../'); +var Suite = Mocha.Suite; +var Runner = Mocha.Runner; describe('Base reporter', function () { var stdout; @@ -505,3 +508,18 @@ describe('Base reporter', function () { }); }); }); +describe('when "reporterOption.maxDiffSize" is provided', function () { + it('should be the effective value used for tuncating diffs', function () { + var options = { + reporterOption: { + maxDiffSize: 4 + } + }; + var mocha = new Mocha(); + var suite = new Suite('Dummy suite', 'root'); + var runner = new Runner(suite); + // eslint-disable-next-line no-unused-vars + var mochaReporter = new mocha._reporter(runner, options); + expect(Base.maxDiffSize, 'to be', 4); + }); +});