Allow waits/runs in spec.after. spec.after runs in between spec end and afterEach.
This commit is contained in:
parent
8b998749f3
commit
56c26c5b55
|
@ -1686,9 +1686,6 @@ jasmine.Spec.prototype.finishCallback = function() {
|
|||
};
|
||||
|
||||
jasmine.Spec.prototype.finish = function(onComplete) {
|
||||
for (var i = 0; i < this.afterCallbacks.length; i++) {
|
||||
this.afterCallbacks[i]();
|
||||
}
|
||||
this.removeAllSpies();
|
||||
this.finishCallback();
|
||||
if (onComplete) {
|
||||
|
@ -1696,8 +1693,13 @@ jasmine.Spec.prototype.finish = function(onComplete) {
|
|||
}
|
||||
};
|
||||
|
||||
jasmine.Spec.prototype.after = function(doAfter) {
|
||||
jasmine.Spec.prototype.after = function(doAfter, test) {
|
||||
|
||||
if (this.queue.isRunning()) {
|
||||
this.queue.add(new jasmine.Block(this.env, doAfter, this));
|
||||
} else {
|
||||
this.afterCallbacks.unshift(doAfter);
|
||||
}
|
||||
};
|
||||
|
||||
jasmine.Spec.prototype.execute = function(onComplete) {
|
||||
|
@ -1726,7 +1728,12 @@ jasmine.Spec.prototype.addBeforesAndAftersToQueue = function() {
|
|||
for (var i = 0; i < suite.beforeQueue.length; i++)
|
||||
this.queue.addBefore(new jasmine.Block(this.env, suite.beforeQueue[i], this));
|
||||
}
|
||||
if (suite.afterQueue) {
|
||||
}
|
||||
for (i = 0; i < this.afterCallbacks.length; i++) {
|
||||
this.queue.add(new jasmine.Block(this.env, this.afterCallbacks[i], this));
|
||||
}
|
||||
for (suite = this.suite; suite; suite = suite.parentSuite) {
|
||||
if (suite.afterQueue) {
|
||||
for (var j = 0; j < suite.afterQueue.length; j++)
|
||||
this.queue.add(new jasmine.Block(this.env, suite.afterQueue[j], this));
|
||||
}
|
||||
|
|
|
@ -675,6 +675,100 @@ describe("jasmine spec running", function () {
|
|||
|
||||
});
|
||||
|
||||
it("Spec#after should be able to eval runs and waits blocks", function () {
|
||||
var runsBeforeAfter = false;
|
||||
var firstSpecHasRun = false;
|
||||
var secondSpecHasRun = false;
|
||||
var afterHasRun = false;
|
||||
var suiteWithAfter = env.describe('one suite with a before', function () {
|
||||
|
||||
env.it('should be the first spec', function () {
|
||||
firstSpecHasRun = true;
|
||||
this.after(function () {
|
||||
this.waits(500);
|
||||
this.runs(function () {
|
||||
afterHasRun = true;
|
||||
});
|
||||
this.waits(500);
|
||||
}, true);
|
||||
this.waits(500);
|
||||
this.runs(function () {
|
||||
runsBeforeAfter = true;
|
||||
});
|
||||
});
|
||||
|
||||
env.it('should be a spec', function () {
|
||||
secondSpecHasRun = true;
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
expect(firstSpecHasRun).toEqual(false);
|
||||
expect(runsBeforeAfter).toEqual(false);
|
||||
expect(afterHasRun).toEqual(false);
|
||||
expect(secondSpecHasRun).toEqual(false);
|
||||
|
||||
suiteWithAfter.execute();
|
||||
|
||||
expect(firstSpecHasRun).toEqual(true);
|
||||
expect(runsBeforeAfter).toEqual(false);
|
||||
expect(afterHasRun).toEqual(false);
|
||||
expect(secondSpecHasRun).toEqual(false);
|
||||
|
||||
fakeTimer.tick(500);
|
||||
|
||||
expect(firstSpecHasRun).toEqual(true);
|
||||
expect(runsBeforeAfter).toEqual(true);
|
||||
expect(afterHasRun).toEqual(false);
|
||||
expect(secondSpecHasRun).toEqual(false);
|
||||
|
||||
fakeTimer.tick(500);
|
||||
|
||||
expect(firstSpecHasRun).toEqual(true);
|
||||
expect(runsBeforeAfter).toEqual(true);
|
||||
expect(afterHasRun).toEqual(true);
|
||||
expect(secondSpecHasRun).toEqual(false);
|
||||
|
||||
fakeTimer.tick(500);
|
||||
|
||||
expect(firstSpecHasRun).toEqual(true);
|
||||
expect(runsBeforeAfter).toEqual(true);
|
||||
expect(afterHasRun).toEqual(true);
|
||||
expect(secondSpecHasRun).toEqual(true);
|
||||
});
|
||||
|
||||
it("handles waits", function () {
|
||||
var firstSpecHasRun = false;
|
||||
var secondSpecHasRun = false;
|
||||
var suiteWithAfter = env.describe('one suite with a before', function () {
|
||||
|
||||
env.it('should be the first spec', function () {
|
||||
this.waits(500);
|
||||
this.runs(function () {
|
||||
firstSpecHasRun = true;
|
||||
});
|
||||
});
|
||||
|
||||
env.it('should be a spec', function () {
|
||||
secondSpecHasRun = true;
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
expect(firstSpecHasRun).toEqual(false);
|
||||
expect(secondSpecHasRun).toEqual(false);
|
||||
|
||||
suiteWithAfter.execute();
|
||||
|
||||
expect(firstSpecHasRun).toEqual(false);
|
||||
expect(secondSpecHasRun).toEqual(false);
|
||||
|
||||
fakeTimer.tick(500);
|
||||
|
||||
expect(firstSpecHasRun).toEqual(true);
|
||||
expect(secondSpecHasRun).toEqual(true);
|
||||
});
|
||||
|
||||
it("testBeforeExecutesSafely", function() {
|
||||
var report = "";
|
||||
var suite = env.describe('before fails on first test, passes on second', function() {
|
||||
|
|
17
src/Spec.js
17
src/Spec.js
|
@ -97,9 +97,6 @@ jasmine.Spec.prototype.finishCallback = function() {
|
|||
};
|
||||
|
||||
jasmine.Spec.prototype.finish = function(onComplete) {
|
||||
for (var i = 0; i < this.afterCallbacks.length; i++) {
|
||||
this.afterCallbacks[i]();
|
||||
}
|
||||
this.removeAllSpies();
|
||||
this.finishCallback();
|
||||
if (onComplete) {
|
||||
|
@ -107,8 +104,13 @@ jasmine.Spec.prototype.finish = function(onComplete) {
|
|||
}
|
||||
};
|
||||
|
||||
jasmine.Spec.prototype.after = function(doAfter) {
|
||||
jasmine.Spec.prototype.after = function(doAfter, test) {
|
||||
|
||||
if (this.queue.isRunning()) {
|
||||
this.queue.add(new jasmine.Block(this.env, doAfter, this));
|
||||
} else {
|
||||
this.afterCallbacks.unshift(doAfter);
|
||||
}
|
||||
};
|
||||
|
||||
jasmine.Spec.prototype.execute = function(onComplete) {
|
||||
|
@ -137,7 +139,12 @@ jasmine.Spec.prototype.addBeforesAndAftersToQueue = function() {
|
|||
for (var i = 0; i < suite.beforeQueue.length; i++)
|
||||
this.queue.addBefore(new jasmine.Block(this.env, suite.beforeQueue[i], this));
|
||||
}
|
||||
if (suite.afterQueue) {
|
||||
}
|
||||
for (i = 0; i < this.afterCallbacks.length; i++) {
|
||||
this.queue.add(new jasmine.Block(this.env, this.afterCallbacks[i], this));
|
||||
}
|
||||
for (suite = this.suite; suite; suite = suite.parentSuite) {
|
||||
if (suite.afterQueue) {
|
||||
for (var j = 0; j < suite.afterQueue.length; j++)
|
||||
this.queue.add(new jasmine.Block(this.env, suite.afterQueue[j], this));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue