karma-json-result-reporter
Advanced tools
Comparing version 0.5.0 to 0.6.0
33
index.js
@@ -0,14 +1,26 @@ | ||
var path = require('path'); | ||
var fs = require('fs'); | ||
var writeFile = require('writefile'); | ||
var converter = require('./resultConverter'); | ||
var log = console.log.bind(console, "JsonResultReporter:"); | ||
function writeOutput(config, output, helper, logger) { | ||
function writeOutput(config, output) { | ||
var log = logger.create('karma-json-result-reporter'); | ||
if (config.outputFile) { | ||
writeFile(config.outputFile, JSON.stringify(output, null, 4), function(err) { | ||
if (err) { | ||
log(err); | ||
helper.mkdirIfNotExists(path.dirname(config.outputFile), function() { | ||
if (config.isSynchronous) { | ||
log.debug('Writing test results to JSON file ' + config.outputFile); | ||
try { | ||
fs.writeFileSync(config.outputFile, JSON.stringify(output, null, 4)); | ||
} catch (err) { | ||
log.warn('Cannot write test results to JSON file\n\t' + err.message); | ||
} | ||
} else { | ||
log("JSON file was written to " + config.outputFile); | ||
fs.writeFile(config.outputFile, JSON.stringify(output, null, 4), function(err) { | ||
if (err) { | ||
log.warn('Cannot write test results to JSON file\n\t' + err.message); | ||
} else { | ||
log.debug('Test results were written to JSON file ' + config.outputFile); | ||
} | ||
}); | ||
} | ||
@@ -21,3 +33,4 @@ }); | ||
var JsonResultReporter = function(baseReporterDecorator, formatError, config) { | ||
var JsonResultReporter = function(baseReporterDecorator, formatError, config, helper, logger) { | ||
baseReporterDecorator(this); | ||
@@ -50,3 +63,3 @@ | ||
} | ||
writeOutput(config, output); | ||
writeOutput(config, output, helper, logger); | ||
@@ -59,3 +72,3 @@ this.clear(); | ||
JsonResultReporter.$inject = ['baseReporterDecorator', 'formatError', 'config.jsonResultReporter']; | ||
JsonResultReporter.$inject = ['baseReporterDecorator', 'formatError', 'config.jsonResultReporter', 'helper', 'logger']; | ||
@@ -62,0 +75,0 @@ module.exports = { |
{ | ||
"name": "karma-json-result-reporter", | ||
"version": "0.5.0", | ||
"version": "0.6.0", | ||
"description": "test results as json file", | ||
@@ -25,8 +25,8 @@ "main": "index.js", | ||
"del": "^2.2.1", | ||
"jasmine": "^2.4.1" | ||
"jasmine": "^2.4.1", | ||
"mkdirp": "^0.5.1" | ||
}, | ||
"dependencies": { | ||
"fun-map": "^3.3.1", | ||
"writefile": "^0.2.8" | ||
"fun-map": "^3.3.1" | ||
} | ||
} |
@@ -74,3 +74,4 @@ # Karma JSON result reporter | ||
jsonResultReporter: { | ||
outputFile: "karma-result.json" | ||
outputFile: "karma-result.json", | ||
isSynchronous: true (optional, default false) | ||
} | ||
@@ -77,0 +78,0 @@ ``` |
const os = require('os'); | ||
const fs = require('fs'); | ||
const mkdirp = require('mkdirp'); | ||
const del = require('del'); | ||
@@ -26,2 +27,14 @@ | ||
}); | ||
this.helper = jasmine.createSpyObj('helper', ['mkdirIfNotExists']); | ||
this.helper.mkdirIfNotExists.and.callFake(function(dirStr, callback) { | ||
if (!fs.existsSync(dirStr)) { | ||
mkdirp.sync(dirStr); | ||
} | ||
callback(); | ||
}); | ||
var log = jasmine.createSpyObj('log', ['debug', 'warn']); | ||
this.logger = jasmine.createSpyObj('logger', ['create']); | ||
this.logger.create.and.returnValue(log); | ||
}); | ||
@@ -33,3 +46,3 @@ | ||
var reporter = new JsonResultReporter(this.baseReporterDecorator, this.formatError, config); | ||
var reporter = new JsonResultReporter(this.baseReporterDecorator, this.formatError, config, this.helper, this.logger); | ||
@@ -71,3 +84,3 @@ expect(reporter).toEqual(jasmine.any(Object)); | ||
var reporter = new JsonResultReporter(this.baseReporterDecorator, this.formatError, config); | ||
var reporter = new JsonResultReporter(this.baseReporterDecorator, this.formatError, config, this.helper, this.logger); | ||
reporter.onBrowserError('test', ERROR_TEXT); | ||
@@ -84,3 +97,3 @@ reporter.onRunComplete(); | ||
var reporter = new JsonResultReporter(this.baseReporterDecorator, this.formatError, config); | ||
var reporter = new JsonResultReporter(this.baseReporterDecorator, this.formatError, config, this.helper, this.logger); | ||
reporter.onBrowserError('test', ERROR_TEXT); | ||
@@ -92,16 +105,20 @@ reporter.onRunComplete(); | ||
it('should write results synchronously, if isSynchronous is set', function(done) { | ||
var config = { | ||
outputFile: this.tempTestDir + '/my/nested/path/report-file.json', | ||
isSynchronous: true | ||
}; | ||
var reporter = new JsonResultReporter(this.baseReporterDecorator, this.formatError, config, this.helper, this.logger); | ||
reporter.onBrowserError('test', ERROR_TEXT); | ||
reporter.onRunComplete(); | ||
if (!checkFileAndContentSynchronously(config.outputFile, done)) { | ||
done.fail('Results does not exists - ' + config.outputFile); | ||
} | ||
}); | ||
function waitForFileAndCheckContent(outputFile, done) { | ||
setImmediate(function() { | ||
if (fs.existsSync(outputFile)) { | ||
fs.readFile(outputFile, function(err, result) { | ||
if (err) { | ||
done.fail('Read file error - ' + outputFile + ': ' + err); | ||
return; | ||
} | ||
expect(result.toString()).toMatch(ERROR_TEXT); | ||
done(); | ||
}); | ||
} else { | ||
if (!checkFileAndContentSynchronously(outputFile, done)) { | ||
waitForFileAndCheckContent(outputFile, done); | ||
@@ -111,4 +128,23 @@ } | ||
} | ||
function checkFileAndContentSynchronously(outputFile, done) { | ||
if (fs.existsSync(outputFile)) { | ||
fs.readFile(outputFile, function(err, result) { | ||
if (err) { | ||
done.fail('Read file error - ' + outputFile + ': ' + err); | ||
return; | ||
} | ||
expect(result.toString()).toMatch(ERROR_TEXT); | ||
done(); | ||
}); | ||
return true; | ||
} else { | ||
return false; | ||
} | ||
} | ||
}); | ||
}) | ||
}); |
15108
1
347
83
3
- Removedwritefile@^0.2.8
- Removedlift-result@0.1.5(transitive)
- Removedminimist@1.2.8(transitive)
- Removedmkdirp@0.5.6(transitive)
- Removedresult@1.0.3(transitive)
- Removedresult-core@1.2.1(transitive)
- Removedresult-type@1.0.0(transitive)
- Removedwritefile@0.2.8(transitive)