Skip to content

Commit

Permalink
fix: skip directory creation when reporting to console
Browse files Browse the repository at this point in the history
Closes #24
  • Loading branch information
timothykang committed Aug 1, 2014
1 parent b1e4289 commit 42c9e0a
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 14 deletions.
36 changes: 22 additions & 14 deletions lib/reporter.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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);
});
}

Expand Down
23 changes: 23 additions & 0 deletions test/reporter.spec.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 42c9e0a

Please sign in to comment.