diff --git a/lib/jasmine-core/jasmine-html.js b/lib/jasmine-core/jasmine-html.js
index 2874fe4c..3f1ecddd 100644
--- a/lib/jasmine-core/jasmine-html.js
+++ b/lib/jasmine-core/jasmine-html.js
@@ -84,7 +84,7 @@ jasmineRequire.HtmlReporter = function(j$) {
};
this.suiteDone = function(result) {
- if (result.failedExpectations && result.failedExpectations.length > 0) {
+ if (result.status == 'failed') {
failedSuites.push(result);
}
diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js
index d1c0a1a1..65dbba6d 100644
--- a/lib/jasmine-core/jasmine.js
+++ b/lib/jasmine-core/jasmine.js
@@ -727,7 +727,7 @@ getJasmineRequireObj().Env = function(j$) {
return runnablesExplictlySet;
};
- var specFactory = function(description, fn, suite) {
+ var specFactory = function(description, fn, suite, timeout) {
totalSpecsDefined++;
var spec = new j$.Spec({
id: getNextSpecId(),
@@ -742,7 +742,11 @@ getJasmineRequireObj().Env = function(j$) {
expectationResultFactory: expectationResultFactory,
queueRunnerFactory: queueRunnerFactory,
userContext: function() { return suite.clonedSharedUserContext(); },
- queueableFn: { fn: fn, type: 'it', timeout: function() { return j$.DEFAULT_TIMEOUT_INTERVAL; } }
+ queueableFn: {
+ fn: fn,
+ type: 'it',
+ timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; }
+ }
});
runnableLookupTable[spec.id] = spec;
@@ -766,20 +770,20 @@ getJasmineRequireObj().Env = function(j$) {
}
};
- this.it = function(description, fn) {
- var spec = specFactory(description, fn, currentDeclarationSuite);
+ this.it = function(description, fn, timeout) {
+ var spec = specFactory(description, fn, currentDeclarationSuite, timeout);
currentDeclarationSuite.addChild(spec);
return spec;
};
- this.xit = function(description, fn) {
- var spec = this.it(description, fn);
+ this.xit = function() {
+ var spec = this.it.apply(this, arguments);
spec.pend();
return spec;
};
- this.fit = function(description, fn ){
- var spec = this.it(description, fn);
+ this.fit = function(){
+ var spec = this.it.apply(this, arguments);
focusedRunnables.push(spec.id);
unfocusAncestor();
@@ -794,20 +798,36 @@ getJasmineRequireObj().Env = function(j$) {
return currentRunnable().expect(actual);
};
- this.beforeEach = function(beforeEachFunction) {
- currentDeclarationSuite.beforeEach({ fn: beforeEachFunction, type: 'beforeEach', timeout: function() { return j$.DEFAULT_TIMEOUT_INTERVAL; } });
+ this.beforeEach = function(beforeEachFunction, timeout) {
+ currentDeclarationSuite.beforeEach({
+ fn: beforeEachFunction,
+ type: 'beforeEach',
+ timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; }
+ });
};
- this.beforeAll = function(beforeAllFunction) {
- currentDeclarationSuite.beforeAll({ fn: beforeAllFunction, type: 'beforeAll', timeout: function() { return j$.DEFAULT_TIMEOUT_INTERVAL; } });
+ this.beforeAll = function(beforeAllFunction, timeout) {
+ currentDeclarationSuite.beforeAll({
+ fn: beforeAllFunction,
+ type: 'beforeAll',
+ timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; }
+ });
};
- this.afterEach = function(afterEachFunction) {
- currentDeclarationSuite.afterEach({ fn: afterEachFunction, type: 'afterEach', timeout: function() { return j$.DEFAULT_TIMEOUT_INTERVAL; } });
+ this.afterEach = function(afterEachFunction, timeout) {
+ currentDeclarationSuite.afterEach({
+ fn: afterEachFunction,
+ type: 'afterEach',
+ timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; }
+ });
};
- this.afterAll = function(afterAllFunction) {
- currentDeclarationSuite.afterAll({ fn: afterAllFunction, type: 'afterAll', timeout: function() { return j$.DEFAULT_TIMEOUT_INTERVAL; } });
+ this.afterAll = function(afterAllFunction, timeout) {
+ currentDeclarationSuite.afterAll({
+ fn: afterAllFunction,
+ type: 'afterAll',
+ timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; }
+ });
};
this.pending = function() {
@@ -1968,7 +1988,6 @@ getJasmineRequireObj().Suite = function() {
Suite.prototype.disable = function() {
this.disabled = true;
- this.result.status = 'disabled';
};
Suite.prototype.beforeEach = function(fn) {
@@ -1991,6 +2010,18 @@ getJasmineRequireObj().Suite = function() {
this.children.push(child);
};
+ Suite.prototype.status = function() {
+ if (this.disabled) {
+ return 'disabled';
+ }
+
+ if (this.result.failedExpectations.length > 0) {
+ return 'failed';
+ } else {
+ return 'finished';
+ }
+ };
+
Suite.prototype.execute = function(onComplete) {
var self = this;
@@ -2021,7 +2052,7 @@ getJasmineRequireObj().Suite = function() {
});
function complete() {
- self.result.status = self.disabled ? 'disabled' : 'finished';
+ self.result.status = self.status();
self.resultCallback(self.result);
if (onComplete) {