Suites report errors in afterAlls in the suiteDone event

- remove `afterAllEvent` from reporters
This commit is contained in:
slackersoft
2014-09-03 18:52:13 -07:00
parent 6b857d11ce
commit 9402d59859
14 changed files with 306 additions and 203 deletions

View File

@@ -34,8 +34,7 @@ getJasmineRequireObj().Env = function(j$) {
'suiteStarted',
'suiteDone',
'specStarted',
'specDone',
'afterAllEvent'
'specDone'
]);
this.specFilter = function() {
@@ -171,11 +170,6 @@ getJasmineRequireObj().Env = function(j$) {
options.catchException = catchException;
options.clearStack = options.clearStack || clearStack;
options.timer = {setTimeout: realSetTimeout, clearTimeout: realClearTimeout};
options.reportException = function(e, type) {
if (type === 'afterAll') {
reporter.afterAllEvent('Error thrown: '+ (e.message || e.description));
}
};
new j$.QueueRunner(options).execute();
};
@@ -185,8 +179,9 @@ getJasmineRequireObj().Env = function(j$) {
id: getNextSuiteId(),
description: 'Jasmine__TopLevel__Suite',
queueRunner: queueRunnerFactory,
resultCallback: function() {}, // TODO - hook this up
reportExpectationFailure: reportExpectationFailure
resultCallback: function(attrs) {
reporter.suiteDone(attrs);
}
});
runnableLookupTable[topSuite.id] = topSuite;
defaultResourcesForRunnable(topSuite.id);
@@ -243,14 +238,14 @@ getJasmineRequireObj().Env = function(j$) {
queueRunner: queueRunnerFactory,
onStart: suiteStarted,
expectationFactory: expectationFactory,
expectationResultFactory: expectationResultFactory,
resultCallback: function(attrs) {
if (!suite.disabled) {
clearResourcesForRunnable(suite.id);
currentlyExecutingSuites.pop();
}
reporter.suiteDone(attrs);
},
reportExpectationFailure: reportExpectationFailure
}
});
runnableLookupTable[suite.id] = suite;
@@ -330,7 +325,6 @@ getJasmineRequireObj().Env = function(j$) {
id: getNextSpecId(),
beforeAndAfterFns: beforeAndAfterFns(suite, runnablesExplictlySetGetter),
expectationFactory: expectationFactory,
exceptionFormatter: exceptionFormatter,
resultCallback: specResultCallback,
getSpecName: function(spec) {
return getSpecName(spec, suite);
@@ -410,10 +404,6 @@ getJasmineRequireObj().Env = function(j$) {
this.pending = function() {
throw j$.Spec.pendingSpecExceptionMessage;
};
function reportExpectationFailure(message) {
reporter.afterAllEvent('Expectation failed: '+ message);
}
}
return Env;

View File

@@ -18,7 +18,6 @@ getJasmineRequireObj().QueueRunner = function(j$) {
this.catchException = attrs.catchException || function() { return true; };
this.userContext = attrs.userContext || {};
this.timer = attrs.timeout || {setTimeout: setTimeout, clearTimeout: clearTimeout};
this.reportException = attrs.reportException || function() {};
}
QueueRunner.prototype.execute = function() {
@@ -81,7 +80,6 @@ getJasmineRequireObj().QueueRunner = function(j$) {
}
function onException(e, queueableFn) {
self.reportException(e, queueableFn.type);
self.onException(e);
}

View File

@@ -8,7 +8,6 @@ getJasmineRequireObj().Spec = function(j$) {
this.beforeAndAfterFns = attrs.beforeAndAfterFns || function() { return {befores: [], afters: []}; };
this.userContext = attrs.userContext || function() { return {}; };
this.onStart = attrs.onStart || function() {};
this.exceptionFormatter = attrs.exceptionFormatter || function() {};
this.getSpecName = attrs.getSpecName || function() { return ''; };
this.expectationResultFactory = attrs.expectationResultFactory || function() { };
this.queueRunnerFactory = attrs.queueRunnerFactory || function() {};

View File

@@ -8,7 +8,7 @@ getJasmineRequireObj().Suite = function() {
this.resultCallback = attrs.resultCallback || function() {};
this.clearStack = attrs.clearStack || function(fn) {fn();};
this.expectationFactory = attrs.expectationFactory;
this.reportExpectationFailure = attrs.reportExpectationFailure || function() {};
this.expectationResultFactory = attrs.expectationResultFactory;
this.beforeFns = [];
this.afterFns = [];
@@ -23,7 +23,8 @@ getJasmineRequireObj().Suite = function() {
id: this.id,
status: this.disabled ? 'disabled' : '',
description: this.description,
fullName: this.getFullName()
fullName: this.getFullName(),
failedExpectations: []
};
}
@@ -130,31 +131,43 @@ getJasmineRequireObj().Suite = function() {
};
Suite.prototype.onException = function() {
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
child.onException.apply(child, arguments);
if(isAfterAll(this.children)) {
var data = {
matcherName: '',
passed: false,
expected: '',
actual: '',
error: arguments[0]
};
this.result.failedExpectations.push(this.expectationResultFactory(data));
} else {
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
child.onException.apply(child, arguments);
}
}
};
Suite.prototype.addExpectationResult = function () {
if(isAfterAll(this.children) && isFailure(arguments)){
this.reportExpectationFailure(arguments[1].message);
var data = arguments[1];
this.result.failedExpectations.push(this.expectationResultFactory(data));
} else {
for (var i = 0; i < this.children.length; i++) {
var child = this.children[i];
child.addExpectationResult.apply(child, arguments);
}
}
function isAfterAll(children) {
return children && children[0].result.status;
}
function isFailure(args) {
return !args[0];
}
};
function isAfterAll(children) {
return children && children[0].result.status;
}
function isFailure(args) {
return !args[0];
}
function clone(obj) {
var clonedObj = {};
for (var prop in obj) {