From a58fd20d82bccccdc79062a1a9de72f677dec787 Mon Sep 17 00:00:00 2001 From: slackersoft Date: Fri, 26 Sep 2014 18:35:06 -0700 Subject: [PATCH] Build distribution for suite failed status changes --- lib/jasmine-core/jasmine-html.js | 2 +- lib/jasmine-core/jasmine.js | 67 +++++++++++++++++++++++--------- 2 files changed, 50 insertions(+), 19 deletions(-) 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) {