From cad4bbfffe2b9c0d744fa78f9f7a1b0bb0168bdc Mon Sep 17 00:00:00 2001 From: Joel Jeske Date: Mon, 5 Feb 2018 16:18:17 -0600 Subject: [PATCH] Ensure we call done() on the async onExit to not prevent exitting after single run. Fixes #5 --- lib/reporter.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/reporter.js b/lib/reporter.js index fd53e8d..f174398 100644 --- a/lib/reporter.js +++ b/lib/reporter.js @@ -120,7 +120,17 @@ const AggregatedCoverageReporter = function(injector, logger, config, baseReport }; this.onExit = function(done) { - callThrough('onExit', done); + // We cannot call callThrough here as we must determine when all relevant reporters have called done() + const promises = reporters.map(({name, reporter}) => new Promise((resolve) => { + if (_.isFunction(reporter.onExit)) { + log.debug(`relaying done() on reporter:${name}`); + reporter.onExit(() => resolve()); + } else { + resolve(); + } + })); + + Promise.all(promises).then(() => done()); }; };