Allow reporter callbacks to be asynchronous

[finishes #154673961]
- Fixes #842

Signed-off-by: Elenore Bastian <ebastian@pivotal.io>
This commit is contained in:
Gregg Van Hove
2018-01-26 18:00:46 -08:00
parent 341c6df6ea
commit 50cd6fdd68
10 changed files with 434 additions and 272 deletions

View File

@@ -58,7 +58,19 @@ getJasmineRequireObj().Spec = function(j$) {
Spec.prototype.execute = function(onComplete, excluded) {
var self = this;
this.onStart(this);
var onStart = {
fn: function(done) {
self.onStart(self, done);
}
};
var complete = {
fn: function(done) {
self.queueableFn.fn = null;
self.result.status = self.status(excluded);
self.resultCallback(self.result, done);
}
};
var fns = this.beforeAndAfterFns();
var regularFns = fns.befores.concat(this.queueableFn);
@@ -67,8 +79,10 @@ getJasmineRequireObj().Spec = function(j$) {
isLeaf: true,
queueableFns: regularFns,
cleanupFns: fns.afters,
onException: function() { self.onException.apply(self, arguments); },
onComplete: complete,
onException: function () {
self.onException.apply(self, arguments);
},
onComplete: onComplete,
userContext: this.userContext()
};
@@ -77,17 +91,10 @@ getJasmineRequireObj().Spec = function(j$) {
runnerConfig.cleanupFns = [];
}
runnerConfig.queueableFns.unshift(onStart);
runnerConfig.cleanupFns.push(complete);
this.queueRunnerFactory(runnerConfig);
function complete() {
self.queueableFn.fn = null;
self.result.status = self.status(excluded);
self.resultCallback(self.result);
if (onComplete) {
onComplete();
}
}
};
Spec.prototype.onException = function onException(e) {