diff --git a/index.js b/index.js index 031df348..36677bb0 100644 --- a/index.js +++ b/index.js @@ -5,6 +5,7 @@ var createDefaultStream = require('./lib/default_stream'); var Test = require('./lib/test'); var createResult = require('./lib/results'); var through = require('through'); +var EventEmitter = require('events').EventEmitter; var canEmitExit = typeof process !== 'undefined' && process && typeof process.on === 'function' && process.browser !== true; @@ -43,6 +44,10 @@ module.exports = (function () { return harness.createStream(options); }; + lazyLoad.async = function () { + return getHarness().async.apply(this, arguments); + }; + lazyLoad.onFinish = function () { return getHarness().onFinish.apply(this, arguments); }; @@ -72,10 +77,15 @@ function createExitHarness(conf, wait) { var running = false; var ended = false; + run(); + if (wait) { - harness.run = run; - } else { - run(); + var waiter = new EventEmitter(); + waiter.run = function() {}; + harness._results.push(waiter); + harness.run = function() { + waiter.emit("end"); + } } if (config.exit === false) { return harness; } diff --git a/test/wait-run-object-stream.js b/test/wait-run-object-stream.js new file mode 100644 index 00000000..c195a259 --- /dev/null +++ b/test/wait-run-object-stream.js @@ -0,0 +1,33 @@ +'use strict'; + +var tap = require('tap'); +var tape = require('../'); + +tap.test('Create stream then import async tests', function (t) { + t.plan(3); + + var actualTests = function () { + tape('This one should pass', function (t1) { + t1.pass('This one should pass'); + t1.end(); + }); + }; + + var simulateAsyncEsmImport = function () { + return new Promise(function (resolve) { + setTimeout(function () { + actualTests(); + resolve(); + }); + }); + }; + + tape.createStream({ objectMode: true }).on('data', function (res) { + t.pass(res.type); + }); + + tape.wait(); + simulateAsyncEsmImport().then(function () { + tape.run(); + }); +});