diff --git a/lib/parallel_cucumber/formatters/formatter.js b/lib/parallel_cucumber/formatters/formatter.js index 8ab6359..64999b5 100644 --- a/lib/parallel_cucumber/formatters/formatter.js +++ b/lib/parallel_cucumber/formatters/formatter.js @@ -4,8 +4,10 @@ var Formatter = function(options) { var self = new Events.EventEmitter(); - if (options.outFilePath) { - self._out = FS.createWriteStream(options.outFilePath, { flags: 'w' }); + self.outFilePath = options.outFilePath; + + if (self.outFilePath) { + self._out = FS.createWriteStream(self.outFilePath, { flags: 'w' }); self._outNeedsClosing = true; } else { diff --git a/lib/parallel_cucumber/formatters/json_formatter.js b/lib/parallel_cucumber/formatters/json_formatter.js index fcc417c..358aefb 100644 --- a/lib/parallel_cucumber/formatters/json_formatter.js +++ b/lib/parallel_cucumber/formatters/json_formatter.js @@ -1,6 +1,7 @@ var JsonFormatter = function(options) { var ParallelCucumber = require('../../parallel_cucumber'); var OS = require('os'); + var FS = require('fs'); var Debug = require('debug')('parallel-cucumber-js'); var self = ParallelCucumber.Formatters.Formatter(options); @@ -27,12 +28,27 @@ var JsonFormatter = function(options) { Debug('New feature'); self._features.push(currentFeature); } + + if (self.outFilePath) { + var jsonPart = JSON.stringify(self._features).slice(0, -1); + self._writeToFile(jsonPart); + } + }; + + self._writeToFile = function (data) { + self._out = FS.createWriteStream(self.outFilePath, {flags: 'w'}); + self._outNeedsClosing = true; + self._out.write(data, 'utf8'); }; self.end = function(callback) { - var json = JSON.stringify(self._features); - self._write(json); - self._write(OS.EOL); + var jsonFinal = JSON.stringify(self._features); + if (self.outFilePath) { + self._writeToFile(jsonFinal + OS.EOL); + } + else { + self._write(jsonFinal + OS.EOL); + } self._superEnd(callback); };