From 42c9e0a8550123c5b3b86b3e3f48659bd0b7b124 Mon Sep 17 00:00:00 2001 From: Tim Kang Date: Thu, 31 Jul 2014 18:28:34 -0700 Subject: [PATCH] fix: skip directory creation when reporting to console Closes #24 --- lib/reporter.js | 36 ++++++++++++++++++++++-------------- test/reporter.spec.coffee | 23 +++++++++++++++++++++++ 2 files changed, 45 insertions(+), 14 deletions(-) diff --git a/lib/reporter.js b/lib/reporter.js index 7396afa..3b100c2 100644 --- a/lib/reporter.js +++ b/lib/reporter.js @@ -52,7 +52,13 @@ var CoverageReporter = function(rootConfig, helper, logger) { var pendingFileWritings = 0; var fileWritingFinished = function() {}; - function writeEnd() { + function writeReport(reporter, collector) { + try { + reporter.writeReport(collector, true); + } catch (e) { + log.error(e); + } + if (!--pendingFileWritings) { // cleanup collectors Object.keys(collectors).forEach(function(key) { @@ -126,21 +132,23 @@ var CoverageReporter = function(rootConfig, helper, logger) { var outputDir = helper.normalizeWinPath(path.resolve(basePath, generateOutputDir(browser.name, config.dir, config.subdir))); + var options = helper.merge({}, reporterConfig, { + dir : outputDir, + sourceStore : new BasePathStore({ + basePath : basePath + }) + }); + var reporter = istanbul.Report.create(reporterConfig.type || 'html', options); + + // If reporting to console, skip directory creation + if (reporterConfig.type && reporterConfig.type.match(/^(text|text-summary)$/) && typeof reporterConfig.file === 'undefined') { + writeReport(reporter, collector); + return; + } + helper.mkdirIfNotExists(outputDir, function() { log.debug('Writing coverage to %s', outputDir); - var options = helper.merge({}, reporterConfig, { - dir : outputDir, - sourceStore : new BasePathStore({ - basePath : basePath - }) - }); - var reporter = istanbul.Report.create(reporterConfig.type || 'html', options); - try { - reporter.writeReport(collector, true); - } catch (e) { - log.error(e); - } - writeEnd(); + writeReport(reporter, collector); }); } diff --git a/test/reporter.spec.coffee b/test/reporter.spec.coffee index 63050f4..60deb0b 100644 --- a/test/reporter.spec.coffee +++ b/test/reporter.spec.coffee @@ -180,3 +180,26 @@ describe 'reporter', -> mockMkdir.getCall(0).args[1]() expect(mockReportCreate).to.have.been.called expect(mockWriteReport).to.have.been.called + + it 'should not create directory if reporting to console', -> + run = -> + reporter = new m.CoverageReporter rootConfig, mockHelper, mockLogger + reporter.onRunStart() + browsers.forEach (b) -> reporter.onBrowserStart b + reporter.onRunComplete browsers + + rootConfig.coverageReporter.reporters = [ + { type: 'text' } + { type: 'text-summary' } + ] + run() + expect(mockMkdir).not.to.have.been.called + + rootConfig.coverageReporter.reporters = [{ type: 'text', file: 'file' }] + run() + expect(mockMkdir).to.have.been.calledTwice + + mockMkdir.reset() + rootConfig.coverageReporter.reporters = [{ type: 'text-summary', file: 'file' }] + run() + expect(mockMkdir).to.have.been.calledTwice