From 2d4a63b7b62f50d0a9b12e114a06667957d36382 Mon Sep 17 00:00:00 2001 From: Adam Gruber Date: Thu, 29 Jan 2015 13:25:18 -0500 Subject: [PATCH] logic to record skipped tests --- lib/index.js | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/lib/index.js b/lib/index.js index ba01315..aabe336 100755 --- a/lib/index.js +++ b/lib/index.js @@ -14,6 +14,8 @@ var Base = mocha.reporters.Base, generateReport = reportGen.generateReport, saveToFile = reportGen.saveToFile; +var totalTestsRegistered = 0; + module.exports = Mochawesome; /** @@ -85,13 +87,17 @@ function Mochawesome (runner) { allFailures: allFailures.map(cleanTest) }; - var passPercentage = Math.round((obj.stats.passes / (obj.stats.tests - obj.stats.pending))*1000)/10; - var pendingPercentage = Math.round((obj.stats.pending / obj.stats.tests)*1000)/10; + obj.stats.testsRegistered = totalTestsRegistered; + + var passPercentage = Math.round((obj.stats.passes / (obj.stats.testsRegistered - obj.stats.pending))*1000)/10; + var pendingPercentage = Math.round((obj.stats.pending / obj.stats.testsRegistered)*1000)/10; obj.stats.passPercent = passPercentage; obj.stats.pendingPercent = pendingPercentage; obj.stats.other = (obj.stats.passes + obj.stats.failures + obj.stats.pending) - obj.stats.tests; obj.stats.hasOther = obj.stats.other > 0; + obj.stats.skipped = obj.stats.testsRegistered - obj.stats.tests; + obj.stats.hasSkipped = obj.stats.skipped > 0; obj.stats.failures = obj.stats.failures - obj.stats.other; obj.stats.passPercentClass = _getPercentClass(passPercentage); obj.stats.pendingPercentClass = _getPercentClass(pendingPercentage); @@ -156,23 +162,29 @@ function cleanSuite (suite) { var passingTests = _.where(cleanTests, {state: 'passed'}); var failingTests = _.where(cleanTests, {state: 'failed'}); var pendingTests = _.where(cleanTests, {pending: true}); + var skippedTests = _.where(cleanTests, {skipped: true}); var duration = 0; _.each(cleanTests, function (test) { duration += test.duration; }); + totalTestsRegistered += suite.tests ? suite.tests.length : 0; + suite.tests = cleanTests; suite.fullFile = suite.file || ''; suite.file = suite.file ? suite.file.replace(process.cwd(), '') : ''; suite.passes = passingTests; suite.failures = failingTests; suite.pending = pendingTests; + suite.skipped = skippedTests; suite.isEmpty = suite.tests.length === 0; + suite.hasSkipped = suite.skipped.length > 0; suite.totalTests = suite.tests.length; suite.totalPasses = passingTests.length; suite.totalFailures = failingTests.length; suite.totalPending = pendingTests.length; + suite.totalSkipped = skippedTests.length; suite.duration = duration; if (suite.root) { @@ -188,15 +200,18 @@ function cleanSuite (suite) { 'passes', 'failures', 'pending', + 'skipped', 'totalTests', 'totalPasses', 'totalFailures', 'totalPending', + 'totalSkipped', 'root', 'uuid', 'duration', 'rootEmpty', 'isEmpty', + 'hasSkipped', '_timeout' ]); } @@ -218,7 +233,7 @@ function cleanTest (test) { code = Highlight.highlightAuto(code, ['javascript']).value; } - return { + var cleaned = { title: test.title, fullTitle: test.fullTitle(), timedOut: test.timedOut, @@ -234,6 +249,10 @@ function cleanTest (test) { uuid: uuid.v4(), parentUUID: test.parent.uuid }; + + cleaned.skipped = (!cleaned.pass && !cleaned.fail && !cleaned.pending); + + return cleaned; } /**