Merge branch 'main' into 3.99

This commit is contained in:
Steve Gravrock
2021-10-07 10:38:35 -07:00
7 changed files with 570 additions and 82 deletions

View File

@@ -141,6 +141,15 @@ getJasmineRequireObj().Env = function(j$) {
* property and always create native promises instead.
*/
Promise: undefined,
/**
* Clean closures when a suite is done running (done by clearing the stored function reference).
* This prevents memory leaks, but you won't be able to run jasmine multiple times.
* @name Configuration#autoCleanClosures
* @since 3.10.0
* @type boolean
* @default true
*/
autoCleanClosures: true,
/**
* Whether or not to issue warnings for certain deprecated functionality
* every time it's used. If not set or set to false, deprecation warnings
@@ -205,7 +214,8 @@ getJasmineRequireObj().Env = function(j$) {
var booleanProps = [
'random',
'failSpecWithNoExpectations',
'hideDisabled'
'hideDisabled',
'autoCleanClosures'
];
booleanProps.forEach(function(prop) {
@@ -573,10 +583,11 @@ getJasmineRequireObj().Env = function(j$) {
delete runnableResources[id];
};
var beforeAndAfterFns = function(suite) {
var beforeAndAfterFns = function(targetSuite) {
return function() {
var befores = [],
afters = [];
afters = [],
suite = targetSuite;
while (suite) {
befores = befores.concat(suite.beforeFns);
@@ -802,10 +813,10 @@ getJasmineRequireObj().Env = function(j$) {
description: 'Jasmine__TopLevel__Suite',
expectationFactory: expectationFactory,
asyncExpectationFactory: suiteAsyncExpectationFactory,
expectationResultFactory: expectationResultFactory
expectationResultFactory: expectationResultFactory,
autoCleanClosures: config.autoCleanClosures
});
var deprecator = new j$.Deprecator(topSuite);
defaultResourcesForRunnable(topSuite.id);
currentDeclarationSuite = topSuite;
/**
@@ -924,6 +935,11 @@ getJasmineRequireObj().Env = function(j$) {
* @return {Promise<undefined>}
*/
this.execute = function(runnablesToRun, onComplete) {
if (this._executedBefore) {
topSuite.reset();
}
this._executedBefore = true;
defaultResourcesForRunnable(topSuite.id);
installGlobalErrors();
if (!runnablesToRun) {
@@ -1210,7 +1226,8 @@ getJasmineRequireObj().Env = function(j$) {
expectationFactory: expectationFactory,
asyncExpectationFactory: suiteAsyncExpectationFactory,
expectationResultFactory: expectationResultFactory,
throwOnExpectationFailure: config.oneFailurePerSpec
throwOnExpectationFailure: config.oneFailurePerSpec,
autoCleanClosures: config.autoCleanClosures
});
return suite;
@@ -1223,8 +1240,8 @@ getJasmineRequireObj().Env = function(j$) {
if (specDefinitions.length > 0) {
throw new Error('describe does not expect any arguments');
}
if (currentDeclarationSuite.markedPending) {
suite.pend();
if (currentDeclarationSuite.markedExcluding) {
suite.exclude();
}
addSpecsToSuite(suite, specDefinitions);
if (suite.parentSuite && !suite.children.length) {
@@ -1241,7 +1258,7 @@ getJasmineRequireObj().Env = function(j$) {
ensureIsNotNested('xdescribe');
ensureIsFunction(specDefinitions, 'xdescribe');
var suite = suiteFactory(description);
suite.pend();
suite.exclude();
addSpecsToSuite(suite, specDefinitions);
return j$.deprecatingSuiteProxy(suite, suite.parentSuite, this);
};
@@ -1327,6 +1344,7 @@ getJasmineRequireObj().Env = function(j$) {
timeout: timeout || 0
},
throwOnExpectationFailure: config.oneFailurePerSpec,
autoCleanClosures: config.autoCleanClosures,
timer: new j$.Timer()
});
return spec;
@@ -1362,8 +1380,8 @@ getJasmineRequireObj().Env = function(j$) {
}
var spec = specFactory(description, fn, currentDeclarationSuite, timeout);
if (currentDeclarationSuite.markedPending) {
spec.pend();
if (currentDeclarationSuite.markedExcluding) {
spec.exclude();
}
currentDeclarationSuite.addChild(spec);
@@ -1383,7 +1401,7 @@ getJasmineRequireObj().Env = function(j$) {
ensureIsFunctionOrAsync(fn, 'xit');
}
var spec = this.it_.apply(this, arguments);
spec.pend('Temporarily disabled with xit');
spec.exclude('Temporarily disabled with xit');
return j$.deprecatingSpecProxy(spec, this);
};