diff --git a/lib/tests/run_tests.js b/lib/tests/run_tests.js index eb31209a..0ed32c7c 100644 --- a/lib/tests/run_tests.js +++ b/lib/tests/run_tests.js @@ -83,8 +83,8 @@ module.exports = { mocha.suite.timeout(0); mocha.suite.beforeAll('Wait for deploy', (done) => { - global.embark.onReady(() => { - done(); + global.embark.onReady((err) => { + done(err); }); }); diff --git a/lib/tests/test.js b/lib/tests/test.js index 3dcfbf10..a6789da9 100644 --- a/lib/tests/test.js +++ b/lib/tests/test.js @@ -33,6 +33,7 @@ class Test { this.contracts = {}; this.events = new Events(); this.ready = true; + this.error = false; this.builtContracts = {}; this.compiledContracts = {}; @@ -111,12 +112,28 @@ class Test { } onReady(callback) { + const self = this; if (this.ready) { return callback(); } - this.events.once('ready', () => { + if (this.error) { + return callback(this.error); + } + + let errorCallback, readyCallback; + + errorCallback = (err) => { + self.events.removeListener('ready', readyCallback); + callback(err); + }; + + readyCallback = () => { + self.events.removeListener('deployError', errorCallback); callback(); - }); + }; + + this.events.once('ready', readyCallback); + this.events.once('deployError', errorCallback); } config(options, callback) { @@ -175,12 +192,14 @@ class Test { }, function deploy(next) { self._deploy(options, (err, accounts) => { - self.ready = true; - self.events.emit('ready'); if (err) { - console.error(err.red); + self.events.emit('deployError', err); + self.error = err; return next(err); } + self.ready = true; + self.error = false; + self.events.emit('ready'); next(null, accounts); }); }