Run afterAll fns after failure even if stopOnSpecFailure is true
[#160905297]
This commit is contained in:
@@ -3490,6 +3490,12 @@ getJasmineRequireObj().CompleteOnFirstErrorSkipPolicy = function(j$) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// firstCleanupIx_ isn't correct for suites with afterAll functions.
|
||||||
|
// Rely on the type for those.
|
||||||
|
if (this.queueableFns_[fnIx].type === 'afterAll') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
const candidateSuite = this.queueableFns_[fnIx].suite;
|
const candidateSuite = this.queueableFns_[fnIx].suite;
|
||||||
const errorSuite = this.queueableFns_[this.erroredFnIx_].suite;
|
const errorSuite = this.queueableFns_[this.erroredFnIx_].suite;
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -95,6 +95,23 @@ describe('CompleteOnFirstErrorSkipPolicy', function() {
|
|||||||
policy.fnErrored(0);
|
policy.fnErrored(0);
|
||||||
expect(policy.skipTo(0)).toEqual(1);
|
expect(policy.skipTo(0)).toEqual(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('does not skip afterAll fns, even if before the first cleanup fn index', function() {
|
||||||
|
const fns = [
|
||||||
|
{ fn: () => {} },
|
||||||
|
{
|
||||||
|
fn: () => {},
|
||||||
|
type: 'afterAll'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
const policy = new jasmineUnderTest.CompleteOnFirstErrorSkipPolicy(
|
||||||
|
fns,
|
||||||
|
2
|
||||||
|
);
|
||||||
|
|
||||||
|
policy.fnErrored(0);
|
||||||
|
expect(policy.skipTo(0)).toEqual(1);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1153,6 +1153,41 @@ describe('spec running', function() {
|
|||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('runs afterAll functions', async function() {
|
||||||
|
const actions = [];
|
||||||
|
|
||||||
|
env.describe('outer suite', function() {
|
||||||
|
env.describe('inner suite', function() {
|
||||||
|
env.it('fails', function() {
|
||||||
|
actions.push('fails');
|
||||||
|
env.expect(1).toBe(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
env.afterAll(function() {
|
||||||
|
actions.push('inner afterAll');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
env.afterAll(function() {
|
||||||
|
actions.push('outer afterAll');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
env.afterAll(function() {
|
||||||
|
actions.push('top afterAll');
|
||||||
|
});
|
||||||
|
|
||||||
|
env.configure({ stopOnSpecFailure: true });
|
||||||
|
await env.execute();
|
||||||
|
|
||||||
|
expect(actions).toEqual([
|
||||||
|
'fails',
|
||||||
|
'inner afterAll',
|
||||||
|
'outer afterAll',
|
||||||
|
'top afterAll'
|
||||||
|
]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('run multiple times', function() {
|
describe('run multiple times', function() {
|
||||||
|
|||||||
@@ -23,6 +23,12 @@ getJasmineRequireObj().CompleteOnFirstErrorSkipPolicy = function(j$) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// firstCleanupIx_ isn't correct for suites with afterAll functions.
|
||||||
|
// Rely on the type for those.
|
||||||
|
if (this.queueableFns_[fnIx].type === 'afterAll') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
const candidateSuite = this.queueableFns_[fnIx].suite;
|
const candidateSuite = this.queueableFns_[fnIx].suite;
|
||||||
const errorSuite = this.queueableFns_[this.erroredFnIx_].suite;
|
const errorSuite = this.queueableFns_[this.erroredFnIx_].suite;
|
||||||
return (
|
return (
|
||||||
|
|||||||
Reference in New Issue
Block a user