Introduce a configuration object to Env deprecating old single use functions
[finishes #159158038]
This commit is contained in:
@@ -73,24 +73,21 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||||||
|
|
||||||
var filterSpecs = !!queryString.getParam("spec");
|
var filterSpecs = !!queryString.getParam("spec");
|
||||||
|
|
||||||
var stoppingOnSpecFailure = queryString.getParam("failFast");
|
var config = {
|
||||||
env.stopOnSpecFailure(stoppingOnSpecFailure);
|
failFast: queryString.getParam("failFast"),
|
||||||
|
oneFailurePerSpec: queryString.getParam("oneFailurePerSpec"),
|
||||||
var throwingExpectationFailures = queryString.getParam("throwFailures");
|
hideDisabled: queryString.getParam("hideDisabled")
|
||||||
env.throwOnExpectationFailure(throwingExpectationFailures);
|
};
|
||||||
|
|
||||||
var hideDisabled = queryString.getParam("hideDisabled");
|
|
||||||
env.hideDisabled(hideDisabled);
|
|
||||||
|
|
||||||
var random = queryString.getParam("random");
|
var random = queryString.getParam("random");
|
||||||
|
|
||||||
if (random !== undefined && random !== "") {
|
if (random !== undefined && random !== "") {
|
||||||
env.randomizeTests(random);
|
config.random = random;
|
||||||
}
|
}
|
||||||
|
|
||||||
var seed = queryString.getParam("seed");
|
var seed = queryString.getParam("seed");
|
||||||
if (seed) {
|
if (seed) {
|
||||||
env.seed(seed);
|
config.seed = seed;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -121,10 +118,12 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||||||
filterString: function() { return queryString.getParam("spec"); }
|
filterString: function() { return queryString.getParam("spec"); }
|
||||||
});
|
});
|
||||||
|
|
||||||
env.specFilter = function(spec) {
|
config.specFilter = function(spec) {
|
||||||
return specFilter.matches(spec.getFullName());
|
return specFilter.matches(spec.getFullName());
|
||||||
};
|
};
|
||||||
|
|
||||||
|
env.configure(config);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setting up timing functions to be able to be overridden. Certain browsers (Safari, IE 8, phantomjs) require this hack.
|
* Setting up timing functions to be able to be overridden. Certain browsers (Safari, IE 8, phantomjs) require this hack.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -51,24 +51,21 @@
|
|||||||
|
|
||||||
var filterSpecs = !!queryString.getParam("spec");
|
var filterSpecs = !!queryString.getParam("spec");
|
||||||
|
|
||||||
var stoppingOnSpecFailure = queryString.getParam("failFast");
|
var config = {
|
||||||
env.stopOnSpecFailure(stoppingOnSpecFailure);
|
failFast: queryString.getParam("failFast"),
|
||||||
|
oneFailurePerSpec: queryString.getParam("oneFailurePerSpec"),
|
||||||
var throwingExpectationFailures = queryString.getParam("throwFailures");
|
hideDisabled: queryString.getParam("hideDisabled")
|
||||||
env.throwOnExpectationFailure(throwingExpectationFailures);
|
};
|
||||||
|
|
||||||
var hideDisabled = queryString.getParam("hideDisabled");
|
|
||||||
env.hideDisabled(hideDisabled);
|
|
||||||
|
|
||||||
var random = queryString.getParam("random");
|
var random = queryString.getParam("random");
|
||||||
|
|
||||||
if (random !== undefined && random !== "") {
|
if (random !== undefined && random !== "") {
|
||||||
env.randomizeTests(random);
|
config.random = random;
|
||||||
}
|
}
|
||||||
|
|
||||||
var seed = queryString.getParam("seed");
|
var seed = queryString.getParam("seed");
|
||||||
if (seed) {
|
if (seed) {
|
||||||
env.seed(seed);
|
config.seed = seed;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -99,10 +96,12 @@
|
|||||||
filterString: function() { return queryString.getParam("spec"); }
|
filterString: function() { return queryString.getParam("spec"); }
|
||||||
});
|
});
|
||||||
|
|
||||||
env.specFilter = function(spec) {
|
config.specFilter = function(spec) {
|
||||||
return specFilter.matches(spec.getFullName());
|
return specFilter.matches(spec.getFullName());
|
||||||
};
|
};
|
||||||
|
|
||||||
|
env.configure(config);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setting up timing functions to be able to be overridden. Certain browsers (Safari, IE 8, phantomjs) require this hack.
|
* Setting up timing functions to be able to be overridden. Certain browsers (Safari, IE 8, phantomjs) require this hack.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ jasmineRequire.HtmlReporter = function(j$) {
|
|||||||
|
|
||||||
|
|
||||||
function HtmlReporter(options) {
|
function HtmlReporter(options) {
|
||||||
var env = options.env || {},
|
var config = function() { return (options.env && options.env.configuration()) || {}; },
|
||||||
getContainer = options.getContainer,
|
getContainer = options.getContainer,
|
||||||
createElement = options.createElement,
|
createElement = options.createElement,
|
||||||
createTextNode = options.createTextNode,
|
createTextNode = options.createTextNode,
|
||||||
@@ -167,9 +167,9 @@ jasmineRequire.HtmlReporter = function(j$) {
|
|||||||
|
|
||||||
this.resultStatus = function(status) {
|
this.resultStatus = function(status) {
|
||||||
if(status === 'excluded') {
|
if(status === 'excluded') {
|
||||||
return env.hidingDisabled() ? 'jasmine-excluded-no-display' : 'jasmine-excluded';
|
return config().hideDisabled ? 'jasmine-excluded-no-display' : 'jasmine-excluded';
|
||||||
}
|
}
|
||||||
return 'jasmine-' + status;
|
return 'jasmine-' + status;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.jasmineDone = function(doneResult) {
|
this.jasmineDone = function(doneResult) {
|
||||||
@@ -179,7 +179,7 @@ jasmineRequire.HtmlReporter = function(j$) {
|
|||||||
var i;
|
var i;
|
||||||
alert.appendChild(createDom('span', {className: 'jasmine-duration'}, 'finished in ' + timer.elapsed() / 1000 + 's'));
|
alert.appendChild(createDom('span', {className: 'jasmine-duration'}, 'finished in ' + timer.elapsed() / 1000 + 's'));
|
||||||
|
|
||||||
banner.appendChild(optionsMenu(env));
|
banner.appendChild(optionsMenu(config()));
|
||||||
|
|
||||||
if (stateBuilder.specsExecuted < totalSpecsDefined) {
|
if (stateBuilder.specsExecuted < totalSpecsDefined) {
|
||||||
var skippedMessage = 'Ran ' + stateBuilder.specsExecuted + ' of ' + totalSpecsDefined + ' specs - run all';
|
var skippedMessage = 'Ran ' + stateBuilder.specsExecuted + ' of ' + totalSpecsDefined + ' specs - run all';
|
||||||
@@ -339,7 +339,7 @@ jasmineRequire.HtmlReporter = function(j$) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function optionsMenu(env) {
|
function optionsMenu(config) {
|
||||||
var optionsMenuDom = createDom('div', { className: 'jasmine-run-options' },
|
var optionsMenuDom = createDom('div', { className: 'jasmine-run-options' },
|
||||||
createDom('span', { className: 'jasmine-trigger' }, 'Options'),
|
createDom('span', { className: 'jasmine-trigger' }, 'Options'),
|
||||||
createDom('div', { className: 'jasmine-payload' },
|
createDom('div', { className: 'jasmine-payload' },
|
||||||
@@ -375,27 +375,27 @@ jasmineRequire.HtmlReporter = function(j$) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
var failFastCheckbox = optionsMenuDom.querySelector('#jasmine-fail-fast');
|
var failFastCheckbox = optionsMenuDom.querySelector('#jasmine-fail-fast');
|
||||||
failFastCheckbox.checked = env.stoppingOnSpecFailure();
|
failFastCheckbox.checked = config.failFast;
|
||||||
failFastCheckbox.onclick = function() {
|
failFastCheckbox.onclick = function() {
|
||||||
navigateWithNewParam('failFast', !env.stoppingOnSpecFailure());
|
navigateWithNewParam('failFast', !config.failFast);
|
||||||
};
|
};
|
||||||
|
|
||||||
var throwCheckbox = optionsMenuDom.querySelector('#jasmine-throw-failures');
|
var throwCheckbox = optionsMenuDom.querySelector('#jasmine-throw-failures');
|
||||||
throwCheckbox.checked = env.throwingExpectationFailures();
|
throwCheckbox.checked = config.oneFailurePerSpec;
|
||||||
throwCheckbox.onclick = function() {
|
throwCheckbox.onclick = function() {
|
||||||
navigateWithNewParam('throwFailures', !env.throwingExpectationFailures());
|
navigateWithNewParam('throwFailures', !config.oneFailurePerSpec);
|
||||||
};
|
};
|
||||||
|
|
||||||
var randomCheckbox = optionsMenuDom.querySelector('#jasmine-random-order');
|
var randomCheckbox = optionsMenuDom.querySelector('#jasmine-random-order');
|
||||||
randomCheckbox.checked = env.randomTests();
|
randomCheckbox.checked = config.random;
|
||||||
randomCheckbox.onclick = function() {
|
randomCheckbox.onclick = function() {
|
||||||
navigateWithNewParam('random', !env.randomTests());
|
navigateWithNewParam('random', !config.random);
|
||||||
};
|
};
|
||||||
|
|
||||||
var hideDisabled = optionsMenuDom.querySelector('#jasmine-hide-disabled');
|
var hideDisabled = optionsMenuDom.querySelector('#jasmine-hide-disabled');
|
||||||
hideDisabled.checked = env.hidingDisabled();
|
hideDisabled.checked = config.hideDisabled;
|
||||||
hideDisabled.onclick = function() {
|
hideDisabled.onclick = function() {
|
||||||
navigateWithNewParam('hideDisabled', !env.hidingDisabled());
|
navigateWithNewParam('hideDisabled', !config.hideDisabled);
|
||||||
};
|
};
|
||||||
|
|
||||||
var optionsTrigger = optionsMenuDom.querySelector('.jasmine-trigger'),
|
var optionsTrigger = optionsMenuDom.querySelector('.jasmine-trigger'),
|
||||||
|
|||||||
@@ -794,14 +794,62 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
var currentSpec = null;
|
var currentSpec = null;
|
||||||
var currentlyExecutingSuites = [];
|
var currentlyExecutingSuites = [];
|
||||||
var currentDeclarationSuite = null;
|
var currentDeclarationSuite = null;
|
||||||
var throwOnExpectationFailure = false;
|
|
||||||
var stopOnSpecFailure = false;
|
|
||||||
var random = true;
|
|
||||||
var hidingDisabled = false;
|
|
||||||
var seed = null;
|
|
||||||
var handlingLoadErrors = true;
|
|
||||||
var hasFailures = false;
|
var hasFailures = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This represents the available options to configure Jasmine.
|
||||||
|
* Options that are not provided will use their default values
|
||||||
|
* @interface Configuration
|
||||||
|
*/
|
||||||
|
var config = {
|
||||||
|
/**
|
||||||
|
* Whether to randomize spec execution order
|
||||||
|
* @name Configuration#random
|
||||||
|
* @type Boolean
|
||||||
|
* @default true
|
||||||
|
*/
|
||||||
|
random: true,
|
||||||
|
/**
|
||||||
|
* Seed to use as the basis of randomization.
|
||||||
|
* Null causes the seed to be determined randomly at the start of execution.
|
||||||
|
* @name Configuration#seed
|
||||||
|
* @type function
|
||||||
|
* @default null
|
||||||
|
*/
|
||||||
|
seed: null,
|
||||||
|
/**
|
||||||
|
* Whether to stop execution of the suite after the first spec failure
|
||||||
|
* @name Configuration#failFast
|
||||||
|
* @type Boolean
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
failFast: false,
|
||||||
|
/**
|
||||||
|
* Whether to cause specs to only have one expectation failure.
|
||||||
|
* @name Configuration#oneFailurePerSpec
|
||||||
|
* @type Boolean
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
oneFailurePerSpec: false,
|
||||||
|
/**
|
||||||
|
* Function to use to filter specs
|
||||||
|
* @name Configuration#specFilter
|
||||||
|
* @type function
|
||||||
|
* @default true
|
||||||
|
*/
|
||||||
|
specFilter: function() {
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* Whether or not reporters should hide disabled specs from their output.
|
||||||
|
* Currently only supported by Jasmine's HTMLReporter
|
||||||
|
* @name Configuration#hideDisabled
|
||||||
|
* @type Boolean
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
hideDisabled: false
|
||||||
|
};
|
||||||
|
|
||||||
var currentSuite = function() {
|
var currentSuite = function() {
|
||||||
return currentlyExecutingSuites[currentlyExecutingSuites.length - 1];
|
return currentlyExecutingSuites[currentlyExecutingSuites.length - 1];
|
||||||
};
|
};
|
||||||
@@ -834,10 +882,63 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
this.specFilter = function() {
|
/**
|
||||||
return true;
|
* Configure your jasmine environment
|
||||||
|
* @name Env#configure
|
||||||
|
* @argument {Configuration} configuration
|
||||||
|
* @function
|
||||||
|
*/
|
||||||
|
this.configure = function(configuration) {
|
||||||
|
if (configuration.specFilter) {
|
||||||
|
config.specFilter = configuration.specFilter;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.hasOwnProperty('random')) {
|
||||||
|
config.random = !!configuration.random;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.hasOwnProperty('seed')) {
|
||||||
|
config.seed = configuration.seed;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.hasOwnProperty('failFast')) {
|
||||||
|
config.failFast = configuration.failFast;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.hasOwnProperty('oneFailurePerSpec')) {
|
||||||
|
config.oneFailurePerSpec = configuration.oneFailurePerSpec;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.hasOwnProperty('hideDisabled')) {
|
||||||
|
config.hideDisabled = configuration.hideDisabled;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current configuration for your jasmine environment
|
||||||
|
* @name Env#configuration
|
||||||
|
* @function
|
||||||
|
* @returns {Configuration}
|
||||||
|
*/
|
||||||
|
this.configuration = function() {
|
||||||
|
var result = {};
|
||||||
|
for (var property in config) {
|
||||||
|
result[property] = config[property];
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
||||||
|
Object.defineProperty(this, 'specFilter', {
|
||||||
|
get: function() {
|
||||||
|
self.deprecated('Getting specFilter directly from Env is deprecated, please check the specFilter option from `configuration`');
|
||||||
|
return config.specFilter;
|
||||||
|
},
|
||||||
|
set: function(val) {
|
||||||
|
self.deprecated('Setting specFilter directly on Env is deprecated, please use the specFilter option in `configure`');
|
||||||
|
config.specFilter = val;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
this.addSpyStrategy = function(name, fn) {
|
this.addSpyStrategy = function(name, fn) {
|
||||||
if(!currentRunnable()) {
|
if(!currentRunnable()) {
|
||||||
throw new Error('Custom spy strategies must be added in a before function or a spec');
|
throw new Error('Custom spy strategies must be added in a before function or a spec');
|
||||||
@@ -965,13 +1066,16 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
* @name Env#throwOnExpectationFailure
|
* @name Env#throwOnExpectationFailure
|
||||||
* @function
|
* @function
|
||||||
* @param {Boolean} value Whether to throw when a expectation fails
|
* @param {Boolean} value Whether to throw when a expectation fails
|
||||||
|
* @deprecated Use the `oneFailurePerSpec` option with {@link Env#configure}
|
||||||
*/
|
*/
|
||||||
this.throwOnExpectationFailure = function(value) {
|
this.throwOnExpectationFailure = function(value) {
|
||||||
throwOnExpectationFailure = !!value;
|
this.deprecated('Setting throwOnExpectationFailure directly on Env is deprecated, please use the oneFailurePerSpec option in `configure`');
|
||||||
|
this.configure({oneFailurePerSpec: !!value});
|
||||||
};
|
};
|
||||||
|
|
||||||
this.throwingExpectationFailures = function() {
|
this.throwingExpectationFailures = function() {
|
||||||
return throwOnExpectationFailure;
|
this.deprecated('Getting throwingExpectationFailures directly from Env is deprecated, please check the oneFailurePerSpec option from `configuration`');
|
||||||
|
return config.oneFailurePerSpec;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -979,13 +1083,16 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
* @name Env#stopOnSpecFailure
|
* @name Env#stopOnSpecFailure
|
||||||
* @function
|
* @function
|
||||||
* @param {Boolean} value Whether to stop suite execution when a spec fails
|
* @param {Boolean} value Whether to stop suite execution when a spec fails
|
||||||
|
* @deprecated Use the `failFast` option with {@link Env#configure}
|
||||||
*/
|
*/
|
||||||
this.stopOnSpecFailure = function(value) {
|
this.stopOnSpecFailure = function(value) {
|
||||||
stopOnSpecFailure = !!value;
|
this.deprecated('Setting stopOnSpecFailure directly is deprecated, please use the failFast option in `configure`');
|
||||||
|
this.configure({failFast: !!value});
|
||||||
};
|
};
|
||||||
|
|
||||||
this.stoppingOnSpecFailure = function() {
|
this.stoppingOnSpecFailure = function() {
|
||||||
return stopOnSpecFailure;
|
this.deprecated('Getting stoppingOnSpecFailure directly from Env is deprecated, please check the failFast option from `configuration`');
|
||||||
|
return config.failFast;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -993,13 +1100,16 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
* @name Env#randomizeTests
|
* @name Env#randomizeTests
|
||||||
* @function
|
* @function
|
||||||
* @param {Boolean} value Whether to randomize execution order
|
* @param {Boolean} value Whether to randomize execution order
|
||||||
|
* @deprecated Use the `random` option with {@link Env#configure}
|
||||||
*/
|
*/
|
||||||
this.randomizeTests = function(value) {
|
this.randomizeTests = function(value) {
|
||||||
random = !!value;
|
this.deprecated('Setting randomizeTests directly is deprecated, please use the random option in `configure`');
|
||||||
|
config.random = !!value;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.randomTests = function() {
|
this.randomTests = function() {
|
||||||
return random;
|
this.deprecated('Getting randomTests directly from Env is deprecated, please check the random option from `configuration`');
|
||||||
|
return config.random;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1007,16 +1117,19 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
* @name Env#seed
|
* @name Env#seed
|
||||||
* @function
|
* @function
|
||||||
* @param {Number} value The seed value
|
* @param {Number} value The seed value
|
||||||
|
* @deprecated Use the `seed` option with {@link Env#configure}
|
||||||
*/
|
*/
|
||||||
this.seed = function(value) {
|
this.seed = function(value) {
|
||||||
|
this.deprecated('Setting seed directly is deprecated, please use the seed option in `configure`');
|
||||||
if (value) {
|
if (value) {
|
||||||
seed = value;
|
config.seed = value;
|
||||||
}
|
}
|
||||||
return seed;
|
return config.seed;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.hidingDisabled = function(value) {
|
this.hidingDisabled = function(value) {
|
||||||
return hidingDisabled;
|
this.deprecated('Getting hidingDisabled directly from Env is deprecated, please check the hideDisabled option from `configuration`');
|
||||||
|
return config.hideDisabled;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1024,7 +1137,8 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
* @function
|
* @function
|
||||||
*/
|
*/
|
||||||
this.hideDisabled = function(value) {
|
this.hideDisabled = function(value) {
|
||||||
hidingDisabled = !!value;
|
this.deprecated('Setting hideDisabled directly is deprecated, please use the hideDisabled option in `configure`');
|
||||||
|
config.hideDisabled = !!value;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.deprecated = function(deprecation) {
|
this.deprecated = function(deprecation) {
|
||||||
@@ -1038,9 +1152,9 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
var queueRunnerFactory = function(options, args) {
|
var queueRunnerFactory = function(options, args) {
|
||||||
var failFast = false;
|
var failFast = false;
|
||||||
if (options.isLeaf) {
|
if (options.isLeaf) {
|
||||||
failFast = throwOnExpectationFailure;
|
failFast = config.oneFailurePerSpec;
|
||||||
} else if (!options.isReporter) {
|
} else if (!options.isReporter) {
|
||||||
failFast = stopOnSpecFailure;
|
failFast = config.failFast;
|
||||||
}
|
}
|
||||||
options.clearStack = options.clearStack || clearStack;
|
options.clearStack = options.clearStack || clearStack;
|
||||||
options.timeout = {setTimeout: realSetTimeout, clearTimeout: realClearTimeout};
|
options.timeout = {setTimeout: realSetTimeout, clearTimeout: realClearTimeout};
|
||||||
@@ -1155,8 +1269,8 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var order = new j$.Order({
|
var order = new j$.Order({
|
||||||
random: random,
|
random: config.random,
|
||||||
seed: seed
|
seed: config.seed
|
||||||
});
|
});
|
||||||
|
|
||||||
var processor = new j$.TreeProcessor({
|
var processor = new j$.TreeProcessor({
|
||||||
@@ -1186,7 +1300,7 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
return order.sort(node.children);
|
return order.sort(node.children);
|
||||||
},
|
},
|
||||||
excludeNode: function(spec) {
|
excludeNode: function(spec) {
|
||||||
return !self.specFilter(spec);
|
return !config.specFilter(spec);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1353,7 +1467,7 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
expectationFactory: expectationFactory,
|
expectationFactory: expectationFactory,
|
||||||
asyncExpectationFactory: asyncExpectationFactory,
|
asyncExpectationFactory: asyncExpectationFactory,
|
||||||
expectationResultFactory: expectationResultFactory,
|
expectationResultFactory: expectationResultFactory,
|
||||||
throwOnExpectationFailure: throwOnExpectationFailure
|
throwOnExpectationFailure: config.oneFailurePerSpec
|
||||||
});
|
});
|
||||||
|
|
||||||
return suite;
|
return suite;
|
||||||
@@ -1459,7 +1573,7 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
fn: fn,
|
fn: fn,
|
||||||
timeout: timeout || 0
|
timeout: timeout || 0
|
||||||
},
|
},
|
||||||
throwOnExpectationFailure: throwOnExpectationFailure
|
throwOnExpectationFailure: config.oneFailurePerSpec
|
||||||
});
|
});
|
||||||
|
|
||||||
return spec;
|
return spec;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ describe("Env", function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('can configure specs to throw errors on expectation failures', function() {
|
it('can configure specs to throw errors on expectation failures', function() {
|
||||||
env.throwOnExpectationFailure(true);
|
env.configure({oneFailurePerSpec: true});
|
||||||
|
|
||||||
spyOn(jasmineUnderTest, 'Spec');
|
spyOn(jasmineUnderTest, 'Spec');
|
||||||
env.it('foo', function() {});
|
env.it('foo', function() {});
|
||||||
@@ -37,7 +37,7 @@ describe("Env", function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('can configure suites to throw errors on expectation failures', function() {
|
it('can configure suites to throw errors on expectation failures', function() {
|
||||||
env.throwOnExpectationFailure(true);
|
env.configure({oneFailurePerSpec: true});
|
||||||
|
|
||||||
spyOn(jasmineUnderTest, 'Suite');
|
spyOn(jasmineUnderTest, 'Suite');
|
||||||
env.describe('foo', function() {});
|
env.describe('foo', function() {});
|
||||||
@@ -46,6 +46,22 @@ describe("Env", function() {
|
|||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('defaults to multiple failures for specs', function() {
|
||||||
|
spyOn(jasmineUnderTest, 'Spec');
|
||||||
|
env.it('bar', function() {});
|
||||||
|
expect(jasmineUnderTest.Spec).toHaveBeenCalledWith(jasmine.objectContaining({
|
||||||
|
throwOnExpectationFailure: false
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('defaults to multiple failures for suites', function() {
|
||||||
|
spyOn(jasmineUnderTest, 'Suite');
|
||||||
|
env.describe('foo', function() {});
|
||||||
|
expect(jasmineUnderTest.Suite).toHaveBeenCalledWith(jasmine.objectContaining({
|
||||||
|
throwOnExpectationFailure: false
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
describe('#describe', function () {
|
describe('#describe', function () {
|
||||||
it("throws an error when given arguments", function() {
|
it("throws an error when given arguments", function() {
|
||||||
expect(function() {
|
expect(function() {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ describe("Custom Matchers (Integration)", function() {
|
|||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
env = new jasmineUnderTest.Env();
|
env = new jasmineUnderTest.Env();
|
||||||
env.randomizeTests(false);
|
env.configure({random: false});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("allows adding more matchers local to a spec", function(done) {
|
it("allows adding more matchers local to a spec", function(done) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ describe('Custom Spy Strategies (Integration)', function() {
|
|||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
env = new jasmineUnderTest.Env();
|
env = new jasmineUnderTest.Env();
|
||||||
env.randomizeTests(false);
|
env.configure({random: false});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('allows adding more strategies local to a suite', function(done) {
|
it('allows adding more strategies local to a suite', function(done) {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ describe("Env integration", function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
env.addReporter({ jasmineDone: assertions});
|
env.addReporter({ jasmineDone: assertions});
|
||||||
env.randomizeTests(false);
|
env.configure({random: false});
|
||||||
|
|
||||||
env.describe("A Suite", function() {
|
env.describe("A Suite", function() {
|
||||||
env.it("with a spec", function() {
|
env.it("with a spec", function() {
|
||||||
@@ -46,7 +46,7 @@ describe("Env integration", function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
env.addReporter({ jasmineDone: assertions });
|
env.addReporter({ jasmineDone: assertions });
|
||||||
env.randomizeTests(false);
|
env.configure({random: false});
|
||||||
|
|
||||||
env.describe("Outer suite", function() {
|
env.describe("Outer suite", function() {
|
||||||
env.it("an outer spec", function() {
|
env.it("an outer spec", function() {
|
||||||
@@ -81,7 +81,7 @@ describe("Env integration", function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
env.addReporter({ jasmineDone: assertions });
|
env.addReporter({ jasmineDone: assertions });
|
||||||
env.randomizeTests(false);
|
env.configure({random: false});
|
||||||
|
|
||||||
|
|
||||||
env.describe("Outer suite", function() {
|
env.describe("Outer suite", function() {
|
||||||
@@ -200,7 +200,7 @@ describe("Env integration", function() {
|
|||||||
var env = new jasmineUnderTest.Env();
|
var env = new jasmineUnderTest.Env();
|
||||||
|
|
||||||
env.addReporter({jasmineDone: done});
|
env.addReporter({jasmineDone: done});
|
||||||
env.randomizeTests(false);
|
env.configure({random: false});
|
||||||
env.describe("tests", function() {
|
env.describe("tests", function() {
|
||||||
var firstTimeThrough = true, firstSpecContext, secondSpecContext;
|
var firstTimeThrough = true, firstSpecContext, secondSpecContext;
|
||||||
|
|
||||||
@@ -783,9 +783,11 @@ describe("Env integration", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
env.specFilter = function(spec) {
|
env.configure({
|
||||||
return /^first suite/.test(spec.getFullName());
|
specFilter: function(spec) {
|
||||||
};
|
return /^first suite/.test(spec.getFullName());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
env.execute();
|
env.execute();
|
||||||
});
|
});
|
||||||
@@ -953,7 +955,7 @@ describe("Env integration", function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
env.addReporter({ jasmineDone: assertions });
|
env.addReporter({ jasmineDone: assertions });
|
||||||
env.randomizeTests(false);
|
env.configure({random: false});
|
||||||
|
|
||||||
env.describe("tests", function() {
|
env.describe("tests", function() {
|
||||||
env.it("test with mock clock", function() {
|
env.it("test with mock clock", function() {
|
||||||
@@ -1476,8 +1478,7 @@ describe("Env integration", function() {
|
|||||||
"specStarted",
|
"specStarted",
|
||||||
"specDone"
|
"specDone"
|
||||||
]);
|
]);
|
||||||
env.randomizeTests(true);
|
env.configure({random: true, seed: '123456'});
|
||||||
env.seed('123456');
|
|
||||||
|
|
||||||
reporter.jasmineDone.and.callFake(function(doneArg) {
|
reporter.jasmineDone.and.callFake(function(doneArg) {
|
||||||
expect(reporter.jasmineStarted).toHaveBeenCalled();
|
expect(reporter.jasmineStarted).toHaveBeenCalled();
|
||||||
@@ -1491,7 +1492,7 @@ describe("Env integration", function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
env.addReporter(reporter);
|
env.addReporter(reporter);
|
||||||
env.randomizeTests(true);
|
env.configure({random: true});
|
||||||
env.execute();
|
env.execute();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1662,7 +1663,7 @@ describe("Env integration", function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
env.addReporter(reporter);
|
env.addReporter(reporter);
|
||||||
env.randomizeTests(false);
|
env.configure({random: false});
|
||||||
|
|
||||||
env.describe("testing custom equality testers", function() {
|
env.describe("testing custom equality testers", function() {
|
||||||
env.it("with a custom tester", function() {
|
env.it("with a custom tester", function() {
|
||||||
@@ -1698,7 +1699,7 @@ describe("Env integration", function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
env.addReporter(reporter);
|
env.addReporter(reporter);
|
||||||
env.randomizeTests(false);
|
env.configure({random: false});
|
||||||
|
|
||||||
env.describe("testing custom equality testers", function() {
|
env.describe("testing custom equality testers", function() {
|
||||||
env.beforeAll(function() { env.addCustomEqualityTester(function(a, b) { return true; }); });
|
env.beforeAll(function() { env.addCustomEqualityTester(function(a, b) { return true; }); });
|
||||||
@@ -1739,7 +1740,7 @@ describe("Env integration", function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
env.addReporter(reporter);
|
env.addReporter(reporter);
|
||||||
env.randomizeTests(false);
|
env.configure({random: false});
|
||||||
|
|
||||||
env.describe("testing custom equality testers", function() {
|
env.describe("testing custom equality testers", function() {
|
||||||
env.it("with a custom tester", function() {
|
env.it("with a custom tester", function() {
|
||||||
@@ -1792,7 +1793,7 @@ describe("Env integration", function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
env.addReporter(reporter);
|
env.addReporter(reporter);
|
||||||
env.randomizeTests(false);
|
env.configure({random: false});
|
||||||
|
|
||||||
env.describe("testing custom equality testers", function() {
|
env.describe("testing custom equality testers", function() {
|
||||||
env.beforeAll(function() { env.addCustomEqualityTester(function(a, b) { return true; })});
|
env.beforeAll(function() { env.addCustomEqualityTester(function(a, b) { return true; })});
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ describe("spec running", function () {
|
|||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
jasmine.getEnv().registerIntegrationMatchers();
|
jasmine.getEnv().registerIntegrationMatchers();
|
||||||
env = new jasmineUnderTest.Env();
|
env = new jasmineUnderTest.Env();
|
||||||
env.randomizeTests(false);
|
env.configure({random: false});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should assign spec ids sequentially', function() {
|
it('should assign spec ids sequentially', function() {
|
||||||
@@ -740,8 +740,7 @@ describe("spec running", function () {
|
|||||||
|
|
||||||
it("should run the tests in a consistent order when a seed is supplied", function(done) {
|
it("should run the tests in a consistent order when a seed is supplied", function(done) {
|
||||||
var actions = [];
|
var actions = [];
|
||||||
env.seed('123456');
|
env.configure({random: true, seed: '123456'});
|
||||||
env.randomizeTests(true);
|
|
||||||
|
|
||||||
env.beforeEach(function () {
|
env.beforeEach(function () {
|
||||||
actions.push('topSuite beforeEach');
|
actions.push('topSuite beforeEach');
|
||||||
@@ -865,7 +864,7 @@ describe("spec running", function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
env.throwOnExpectationFailure(true);
|
env.configure({oneFailurePerSpec: true});
|
||||||
|
|
||||||
var assertions = function() {
|
var assertions = function() {
|
||||||
expect(actions).toEqual([
|
expect(actions).toEqual([
|
||||||
@@ -900,7 +899,7 @@ describe("spec running", function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
env.throwOnExpectationFailure(true);
|
env.configure({oneFailurePerSpec: true});
|
||||||
|
|
||||||
var assertions = function() {
|
var assertions = function() {
|
||||||
expect(actions).toEqual([
|
expect(actions).toEqual([
|
||||||
@@ -932,6 +931,89 @@ describe("spec running", function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
env.configure({oneFailurePerSpec: true});
|
||||||
|
|
||||||
|
var assertions = function() {
|
||||||
|
expect(actions).toEqual([
|
||||||
|
'beforeEach',
|
||||||
|
'afterEach'
|
||||||
|
]);
|
||||||
|
done();
|
||||||
|
};
|
||||||
|
|
||||||
|
env.addReporter({jasmineDone: assertions});
|
||||||
|
|
||||||
|
env.execute();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("skips to cleanup functions after an error with deprecations", function(done) {
|
||||||
|
var actions = [];
|
||||||
|
|
||||||
|
spyOn(env, 'deprecated');
|
||||||
|
|
||||||
|
env.describe('Something', function() {
|
||||||
|
env.beforeEach(function() {
|
||||||
|
actions.push('outer beforeEach');
|
||||||
|
throw new Error("error");
|
||||||
|
});
|
||||||
|
|
||||||
|
env.afterEach(function() {
|
||||||
|
actions.push('outer afterEach');
|
||||||
|
});
|
||||||
|
|
||||||
|
env.describe('Inner', function() {
|
||||||
|
env.beforeEach(function() {
|
||||||
|
actions.push('inner beforeEach');
|
||||||
|
});
|
||||||
|
|
||||||
|
env.afterEach(function() {
|
||||||
|
actions.push('inner afterEach');
|
||||||
|
});
|
||||||
|
|
||||||
|
env.it('does it' , function() {
|
||||||
|
actions.push('inner it');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
env.throwOnExpectationFailure(true);
|
||||||
|
|
||||||
|
var assertions = function() {
|
||||||
|
expect(actions).toEqual([
|
||||||
|
'outer beforeEach',
|
||||||
|
'inner afterEach',
|
||||||
|
'outer afterEach'
|
||||||
|
]);
|
||||||
|
expect(env.deprecated).toHaveBeenCalled();
|
||||||
|
done();
|
||||||
|
};
|
||||||
|
|
||||||
|
env.addReporter({jasmineDone: assertions});
|
||||||
|
|
||||||
|
env.execute();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("skips to cleanup functions after done.fail is called with deprecations", function(done) {
|
||||||
|
var actions = [];
|
||||||
|
|
||||||
|
spyOn(env, 'deprecated');
|
||||||
|
|
||||||
|
env.describe('Something', function() {
|
||||||
|
env.beforeEach(function(done) {
|
||||||
|
actions.push('beforeEach');
|
||||||
|
done.fail('error');
|
||||||
|
actions.push('after done.fail');
|
||||||
|
});
|
||||||
|
|
||||||
|
env.afterEach(function() {
|
||||||
|
actions.push('afterEach');
|
||||||
|
});
|
||||||
|
|
||||||
|
env.it('does it' , function() {
|
||||||
|
actions.push('it');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
env.throwOnExpectationFailure(true);
|
env.throwOnExpectationFailure(true);
|
||||||
|
|
||||||
var assertions = function() {
|
var assertions = function() {
|
||||||
@@ -939,6 +1021,42 @@ describe("spec running", function () {
|
|||||||
'beforeEach',
|
'beforeEach',
|
||||||
'afterEach'
|
'afterEach'
|
||||||
]);
|
]);
|
||||||
|
expect(env.deprecated).toHaveBeenCalled();
|
||||||
|
done();
|
||||||
|
};
|
||||||
|
|
||||||
|
env.addReporter({jasmineDone: assertions});
|
||||||
|
|
||||||
|
env.execute();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("skips to cleanup functions when an async function times out with deprecations", function(done) {
|
||||||
|
var actions = [];
|
||||||
|
|
||||||
|
spyOn(env, 'deprecated');
|
||||||
|
|
||||||
|
env.describe('Something', function() {
|
||||||
|
env.beforeEach(function(innerDone) {
|
||||||
|
actions.push('beforeEach');
|
||||||
|
}, 1);
|
||||||
|
|
||||||
|
env.afterEach(function() {
|
||||||
|
actions.push('afterEach');
|
||||||
|
});
|
||||||
|
|
||||||
|
env.it('does it' , function() {
|
||||||
|
actions.push('it');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
env.throwOnExpectationFailure(true);
|
||||||
|
|
||||||
|
var assertions = function() {
|
||||||
|
expect(actions).toEqual([
|
||||||
|
'beforeEach',
|
||||||
|
'afterEach'
|
||||||
|
]);
|
||||||
|
expect(env.deprecated).toHaveBeenCalled();
|
||||||
done();
|
done();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -965,8 +1083,7 @@ describe("spec running", function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
env.randomizeTests(false);
|
env.configure({random: false, failFast: true});
|
||||||
env.stopOnSpecFailure(true);
|
|
||||||
|
|
||||||
var assertions = function() {
|
var assertions = function() {
|
||||||
expect(actions).toEqual(['fails']);
|
expect(actions).toEqual(['fails']);
|
||||||
@@ -976,5 +1093,36 @@ describe("spec running", function () {
|
|||||||
env.addReporter({ jasmineDone: assertions });
|
env.addReporter({ jasmineDone: assertions });
|
||||||
env.execute();
|
env.execute();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("does not run further specs when one fails when configured with deprecated option", function(done) {
|
||||||
|
var actions = [];
|
||||||
|
|
||||||
|
spyOn(env, 'deprecated');
|
||||||
|
|
||||||
|
env.describe('wrapper', function() {
|
||||||
|
env.it('fails', function() {
|
||||||
|
actions.push('fails');
|
||||||
|
env.expect(1).toBe(2);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
env.describe('holder', function() {
|
||||||
|
env.it('does not run', function() {
|
||||||
|
actions.push('does not run');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
env.configure({random: false});
|
||||||
|
env.stopOnSpecFailure(true);
|
||||||
|
|
||||||
|
var assertions = function() {
|
||||||
|
expect(actions).toEqual(['fails']);
|
||||||
|
expect(env.deprecated).toHaveBeenCalled();
|
||||||
|
done();
|
||||||
|
};
|
||||||
|
|
||||||
|
env.addReporter({ jasmineDone: assertions });
|
||||||
|
env.execute();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -518,7 +518,7 @@ describe("HtmlReporter", function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
env.stopOnSpecFailure(true);
|
env.configure({failFast: true});
|
||||||
|
|
||||||
reporter.initialize();
|
reporter.initialize();
|
||||||
reporter.jasmineDone({});
|
reporter.jasmineDone({});
|
||||||
@@ -574,7 +574,7 @@ describe("HtmlReporter", function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
env.stopOnSpecFailure(true);
|
env.configure({failFast: true});
|
||||||
|
|
||||||
reporter.initialize();
|
reporter.initialize();
|
||||||
reporter.jasmineDone({});
|
reporter.jasmineDone({});
|
||||||
@@ -628,7 +628,7 @@ describe("HtmlReporter", function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
env.throwOnExpectationFailure(true);
|
env.configure({oneFailurePerSpec: true});
|
||||||
|
|
||||||
reporter.initialize();
|
reporter.initialize();
|
||||||
reporter.jasmineDone({});
|
reporter.jasmineDone({});
|
||||||
@@ -684,7 +684,7 @@ describe("HtmlReporter", function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
env.throwOnExpectationFailure(true);
|
env.configure({oneFailurePerSpec: true});
|
||||||
|
|
||||||
reporter.initialize();
|
reporter.initialize();
|
||||||
reporter.jasmineDone({});
|
reporter.jasmineDone({});
|
||||||
@@ -713,7 +713,7 @@ describe("HtmlReporter", function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
env.hideDisabled(false);
|
env.configure({hideDisabled: false});
|
||||||
reporter.initialize();
|
reporter.initialize();
|
||||||
reporter.jasmineDone({});
|
reporter.jasmineDone({});
|
||||||
|
|
||||||
@@ -738,7 +738,7 @@ describe("HtmlReporter", function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
env.hideDisabled(true);
|
env.configure({hideDisabled: true});
|
||||||
reporter.initialize();
|
reporter.initialize();
|
||||||
reporter.jasmineDone({});
|
reporter.jasmineDone({});
|
||||||
|
|
||||||
@@ -748,27 +748,24 @@ describe("HtmlReporter", function() {
|
|||||||
|
|
||||||
it("should not display specs that have been disabled", function() {
|
it("should not display specs that have been disabled", function() {
|
||||||
var env = new jasmineUnderTest.Env(),
|
var env = new jasmineUnderTest.Env(),
|
||||||
container = document.createElement('div'),
|
container = document.createElement('div'),
|
||||||
|
getContainer = function() {return container;},
|
||||||
getContainer = function() {return container;},
|
reporter = new jasmineUnderTest.HtmlReporter({
|
||||||
|
env: env,
|
||||||
reporter = new jasmineUnderTest.HtmlReporter({
|
getContainer: getContainer,
|
||||||
env: env,
|
createElement: function() { return document.createElement.apply(document, arguments); },
|
||||||
getContainer: getContainer,
|
createTextNode: function() { return document.createTextNode.apply(document, arguments); }
|
||||||
createElement: function() { return document.createElement.apply(document, arguments); },
|
|
||||||
createTextNode: function() { return document.createTextNode.apply(document, arguments); }
|
|
||||||
});
|
|
||||||
env.hideDisabled(true);
|
|
||||||
reporter.initialize();
|
|
||||||
reporter.specDone({
|
|
||||||
id: 789,
|
|
||||||
status: "excluded",
|
|
||||||
fullName: "symbols should have titles",
|
|
||||||
passedExpectations: [],
|
|
||||||
failedExpectations: []
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
env.configure({hideDisabled: true});
|
||||||
|
reporter.initialize();
|
||||||
|
reporter.specDone({
|
||||||
|
id: 789,
|
||||||
|
status: "excluded",
|
||||||
|
fullName: "symbols should have titles",
|
||||||
|
passedExpectations: [],
|
||||||
|
failedExpectations: []
|
||||||
|
});
|
||||||
|
|
||||||
var specEl = container.querySelector('.jasmine-symbol-summary li');
|
var specEl = container.querySelector('.jasmine-symbol-summary li');
|
||||||
expect(specEl.getAttribute("class")).toEqual("jasmine-excluded-no-display");
|
expect(specEl.getAttribute("class")).toEqual("jasmine-excluded-no-display");
|
||||||
@@ -792,7 +789,7 @@ describe("HtmlReporter", function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
env.randomizeTests(false);
|
env.configure({random: false});
|
||||||
reporter.initialize();
|
reporter.initialize();
|
||||||
reporter.jasmineDone({});
|
reporter.jasmineDone({});
|
||||||
|
|
||||||
@@ -817,7 +814,7 @@ describe("HtmlReporter", function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
env.randomizeTests(true);
|
env.configure({random: true});
|
||||||
reporter.initialize();
|
reporter.initialize();
|
||||||
reporter.jasmineDone({});
|
reporter.jasmineDone({});
|
||||||
|
|
||||||
@@ -844,7 +841,7 @@ describe("HtmlReporter", function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
env.randomizeTests(false);
|
env.configure({random: false});
|
||||||
reporter.initialize();
|
reporter.initialize();
|
||||||
reporter.jasmineDone({});
|
reporter.jasmineDone({});
|
||||||
|
|
||||||
@@ -873,7 +870,7 @@ describe("HtmlReporter", function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
env.randomizeTests(true);
|
env.configure({random: true});
|
||||||
reporter.initialize();
|
reporter.initialize();
|
||||||
reporter.jasmineDone({});
|
reporter.jasmineDone({});
|
||||||
|
|
||||||
|
|||||||
166
src/core/Env.js
166
src/core/Env.js
@@ -23,14 +23,62 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
var currentSpec = null;
|
var currentSpec = null;
|
||||||
var currentlyExecutingSuites = [];
|
var currentlyExecutingSuites = [];
|
||||||
var currentDeclarationSuite = null;
|
var currentDeclarationSuite = null;
|
||||||
var throwOnExpectationFailure = false;
|
|
||||||
var stopOnSpecFailure = false;
|
|
||||||
var random = true;
|
|
||||||
var hidingDisabled = false;
|
|
||||||
var seed = null;
|
|
||||||
var handlingLoadErrors = true;
|
|
||||||
var hasFailures = false;
|
var hasFailures = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This represents the available options to configure Jasmine.
|
||||||
|
* Options that are not provided will use their default values
|
||||||
|
* @interface Configuration
|
||||||
|
*/
|
||||||
|
var config = {
|
||||||
|
/**
|
||||||
|
* Whether to randomize spec execution order
|
||||||
|
* @name Configuration#random
|
||||||
|
* @type Boolean
|
||||||
|
* @default true
|
||||||
|
*/
|
||||||
|
random: true,
|
||||||
|
/**
|
||||||
|
* Seed to use as the basis of randomization.
|
||||||
|
* Null causes the seed to be determined randomly at the start of execution.
|
||||||
|
* @name Configuration#seed
|
||||||
|
* @type function
|
||||||
|
* @default null
|
||||||
|
*/
|
||||||
|
seed: null,
|
||||||
|
/**
|
||||||
|
* Whether to stop execution of the suite after the first spec failure
|
||||||
|
* @name Configuration#failFast
|
||||||
|
* @type Boolean
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
failFast: false,
|
||||||
|
/**
|
||||||
|
* Whether to cause specs to only have one expectation failure.
|
||||||
|
* @name Configuration#oneFailurePerSpec
|
||||||
|
* @type Boolean
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
oneFailurePerSpec: false,
|
||||||
|
/**
|
||||||
|
* Function to use to filter specs
|
||||||
|
* @name Configuration#specFilter
|
||||||
|
* @type function
|
||||||
|
* @default true
|
||||||
|
*/
|
||||||
|
specFilter: function() {
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* Whether or not reporters should hide disabled specs from their output.
|
||||||
|
* Currently only supported by Jasmine's HTMLReporter
|
||||||
|
* @name Configuration#hideDisabled
|
||||||
|
* @type Boolean
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
hideDisabled: false
|
||||||
|
};
|
||||||
|
|
||||||
var currentSuite = function() {
|
var currentSuite = function() {
|
||||||
return currentlyExecutingSuites[currentlyExecutingSuites.length - 1];
|
return currentlyExecutingSuites[currentlyExecutingSuites.length - 1];
|
||||||
};
|
};
|
||||||
@@ -63,10 +111,63 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
this.specFilter = function() {
|
/**
|
||||||
return true;
|
* Configure your jasmine environment
|
||||||
|
* @name Env#configure
|
||||||
|
* @argument {Configuration} configuration
|
||||||
|
* @function
|
||||||
|
*/
|
||||||
|
this.configure = function(configuration) {
|
||||||
|
if (configuration.specFilter) {
|
||||||
|
config.specFilter = configuration.specFilter;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.hasOwnProperty('random')) {
|
||||||
|
config.random = !!configuration.random;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.hasOwnProperty('seed')) {
|
||||||
|
config.seed = configuration.seed;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.hasOwnProperty('failFast')) {
|
||||||
|
config.failFast = configuration.failFast;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.hasOwnProperty('oneFailurePerSpec')) {
|
||||||
|
config.oneFailurePerSpec = configuration.oneFailurePerSpec;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configuration.hasOwnProperty('hideDisabled')) {
|
||||||
|
config.hideDisabled = configuration.hideDisabled;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current configuration for your jasmine environment
|
||||||
|
* @name Env#configuration
|
||||||
|
* @function
|
||||||
|
* @returns {Configuration}
|
||||||
|
*/
|
||||||
|
this.configuration = function() {
|
||||||
|
var result = {};
|
||||||
|
for (var property in config) {
|
||||||
|
result[property] = config[property];
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
||||||
|
Object.defineProperty(this, 'specFilter', {
|
||||||
|
get: function() {
|
||||||
|
self.deprecated('Getting specFilter directly from Env is deprecated, please check the specFilter option from `configuration`');
|
||||||
|
return config.specFilter;
|
||||||
|
},
|
||||||
|
set: function(val) {
|
||||||
|
self.deprecated('Setting specFilter directly on Env is deprecated, please use the specFilter option in `configure`');
|
||||||
|
config.specFilter = val;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
this.addSpyStrategy = function(name, fn) {
|
this.addSpyStrategy = function(name, fn) {
|
||||||
if(!currentRunnable()) {
|
if(!currentRunnable()) {
|
||||||
throw new Error('Custom spy strategies must be added in a before function or a spec');
|
throw new Error('Custom spy strategies must be added in a before function or a spec');
|
||||||
@@ -194,13 +295,16 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
* @name Env#throwOnExpectationFailure
|
* @name Env#throwOnExpectationFailure
|
||||||
* @function
|
* @function
|
||||||
* @param {Boolean} value Whether to throw when a expectation fails
|
* @param {Boolean} value Whether to throw when a expectation fails
|
||||||
|
* @deprecated Use the `oneFailurePerSpec` option with {@link Env#configure}
|
||||||
*/
|
*/
|
||||||
this.throwOnExpectationFailure = function(value) {
|
this.throwOnExpectationFailure = function(value) {
|
||||||
throwOnExpectationFailure = !!value;
|
this.deprecated('Setting throwOnExpectationFailure directly on Env is deprecated, please use the oneFailurePerSpec option in `configure`');
|
||||||
|
this.configure({oneFailurePerSpec: !!value});
|
||||||
};
|
};
|
||||||
|
|
||||||
this.throwingExpectationFailures = function() {
|
this.throwingExpectationFailures = function() {
|
||||||
return throwOnExpectationFailure;
|
this.deprecated('Getting throwingExpectationFailures directly from Env is deprecated, please check the oneFailurePerSpec option from `configuration`');
|
||||||
|
return config.oneFailurePerSpec;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -208,13 +312,16 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
* @name Env#stopOnSpecFailure
|
* @name Env#stopOnSpecFailure
|
||||||
* @function
|
* @function
|
||||||
* @param {Boolean} value Whether to stop suite execution when a spec fails
|
* @param {Boolean} value Whether to stop suite execution when a spec fails
|
||||||
|
* @deprecated Use the `failFast` option with {@link Env#configure}
|
||||||
*/
|
*/
|
||||||
this.stopOnSpecFailure = function(value) {
|
this.stopOnSpecFailure = function(value) {
|
||||||
stopOnSpecFailure = !!value;
|
this.deprecated('Setting stopOnSpecFailure directly is deprecated, please use the failFast option in `configure`');
|
||||||
|
this.configure({failFast: !!value});
|
||||||
};
|
};
|
||||||
|
|
||||||
this.stoppingOnSpecFailure = function() {
|
this.stoppingOnSpecFailure = function() {
|
||||||
return stopOnSpecFailure;
|
this.deprecated('Getting stoppingOnSpecFailure directly from Env is deprecated, please check the failFast option from `configuration`');
|
||||||
|
return config.failFast;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -222,13 +329,16 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
* @name Env#randomizeTests
|
* @name Env#randomizeTests
|
||||||
* @function
|
* @function
|
||||||
* @param {Boolean} value Whether to randomize execution order
|
* @param {Boolean} value Whether to randomize execution order
|
||||||
|
* @deprecated Use the `random` option with {@link Env#configure}
|
||||||
*/
|
*/
|
||||||
this.randomizeTests = function(value) {
|
this.randomizeTests = function(value) {
|
||||||
random = !!value;
|
this.deprecated('Setting randomizeTests directly is deprecated, please use the random option in `configure`');
|
||||||
|
config.random = !!value;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.randomTests = function() {
|
this.randomTests = function() {
|
||||||
return random;
|
this.deprecated('Getting randomTests directly from Env is deprecated, please check the random option from `configuration`');
|
||||||
|
return config.random;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -236,16 +346,19 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
* @name Env#seed
|
* @name Env#seed
|
||||||
* @function
|
* @function
|
||||||
* @param {Number} value The seed value
|
* @param {Number} value The seed value
|
||||||
|
* @deprecated Use the `seed` option with {@link Env#configure}
|
||||||
*/
|
*/
|
||||||
this.seed = function(value) {
|
this.seed = function(value) {
|
||||||
|
this.deprecated('Setting seed directly is deprecated, please use the seed option in `configure`');
|
||||||
if (value) {
|
if (value) {
|
||||||
seed = value;
|
config.seed = value;
|
||||||
}
|
}
|
||||||
return seed;
|
return config.seed;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.hidingDisabled = function(value) {
|
this.hidingDisabled = function(value) {
|
||||||
return hidingDisabled;
|
this.deprecated('Getting hidingDisabled directly from Env is deprecated, please check the hideDisabled option from `configuration`');
|
||||||
|
return config.hideDisabled;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -253,7 +366,8 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
* @function
|
* @function
|
||||||
*/
|
*/
|
||||||
this.hideDisabled = function(value) {
|
this.hideDisabled = function(value) {
|
||||||
hidingDisabled = !!value;
|
this.deprecated('Setting hideDisabled directly is deprecated, please use the hideDisabled option in `configure`');
|
||||||
|
config.hideDisabled = !!value;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.deprecated = function(deprecation) {
|
this.deprecated = function(deprecation) {
|
||||||
@@ -267,9 +381,9 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
var queueRunnerFactory = function(options, args) {
|
var queueRunnerFactory = function(options, args) {
|
||||||
var failFast = false;
|
var failFast = false;
|
||||||
if (options.isLeaf) {
|
if (options.isLeaf) {
|
||||||
failFast = throwOnExpectationFailure;
|
failFast = config.oneFailurePerSpec;
|
||||||
} else if (!options.isReporter) {
|
} else if (!options.isReporter) {
|
||||||
failFast = stopOnSpecFailure;
|
failFast = config.failFast;
|
||||||
}
|
}
|
||||||
options.clearStack = options.clearStack || clearStack;
|
options.clearStack = options.clearStack || clearStack;
|
||||||
options.timeout = {setTimeout: realSetTimeout, clearTimeout: realClearTimeout};
|
options.timeout = {setTimeout: realSetTimeout, clearTimeout: realClearTimeout};
|
||||||
@@ -384,8 +498,8 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var order = new j$.Order({
|
var order = new j$.Order({
|
||||||
random: random,
|
random: config.random,
|
||||||
seed: seed
|
seed: config.seed
|
||||||
});
|
});
|
||||||
|
|
||||||
var processor = new j$.TreeProcessor({
|
var processor = new j$.TreeProcessor({
|
||||||
@@ -415,7 +529,7 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
return order.sort(node.children);
|
return order.sort(node.children);
|
||||||
},
|
},
|
||||||
excludeNode: function(spec) {
|
excludeNode: function(spec) {
|
||||||
return !self.specFilter(spec);
|
return !config.specFilter(spec);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -582,7 +696,7 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
expectationFactory: expectationFactory,
|
expectationFactory: expectationFactory,
|
||||||
asyncExpectationFactory: asyncExpectationFactory,
|
asyncExpectationFactory: asyncExpectationFactory,
|
||||||
expectationResultFactory: expectationResultFactory,
|
expectationResultFactory: expectationResultFactory,
|
||||||
throwOnExpectationFailure: throwOnExpectationFailure
|
throwOnExpectationFailure: config.oneFailurePerSpec
|
||||||
});
|
});
|
||||||
|
|
||||||
return suite;
|
return suite;
|
||||||
@@ -688,7 +802,7 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
fn: fn,
|
fn: fn,
|
||||||
timeout: timeout || 0
|
timeout: timeout || 0
|
||||||
},
|
},
|
||||||
throwOnExpectationFailure: throwOnExpectationFailure
|
throwOnExpectationFailure: config.oneFailurePerSpec
|
||||||
});
|
});
|
||||||
|
|
||||||
return spec;
|
return spec;
|
||||||
@@ -836,7 +950,7 @@ getJasmineRequireObj().Env = function(j$) {
|
|||||||
error: error && error.message ? error : null
|
error: error && error.message ? error : null
|
||||||
});
|
});
|
||||||
|
|
||||||
if (self.throwingExpectationFailures()) {
|
if (config.oneFailurePerSpec) {
|
||||||
throw new Error(message);
|
throw new Error(message);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ jasmineRequire.HtmlReporter = function(j$) {
|
|||||||
|
|
||||||
|
|
||||||
function HtmlReporter(options) {
|
function HtmlReporter(options) {
|
||||||
var env = options.env || {},
|
var config = function() { return (options.env && options.env.configuration()) || {}; },
|
||||||
getContainer = options.getContainer,
|
getContainer = options.getContainer,
|
||||||
createElement = options.createElement,
|
createElement = options.createElement,
|
||||||
createTextNode = options.createTextNode,
|
createTextNode = options.createTextNode,
|
||||||
@@ -138,9 +138,9 @@ jasmineRequire.HtmlReporter = function(j$) {
|
|||||||
|
|
||||||
this.resultStatus = function(status) {
|
this.resultStatus = function(status) {
|
||||||
if(status === 'excluded') {
|
if(status === 'excluded') {
|
||||||
return env.hidingDisabled() ? 'jasmine-excluded-no-display' : 'jasmine-excluded';
|
return config().hideDisabled ? 'jasmine-excluded-no-display' : 'jasmine-excluded';
|
||||||
}
|
}
|
||||||
return 'jasmine-' + status;
|
return 'jasmine-' + status;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.jasmineDone = function(doneResult) {
|
this.jasmineDone = function(doneResult) {
|
||||||
@@ -150,7 +150,7 @@ jasmineRequire.HtmlReporter = function(j$) {
|
|||||||
var i;
|
var i;
|
||||||
alert.appendChild(createDom('span', {className: 'jasmine-duration'}, 'finished in ' + timer.elapsed() / 1000 + 's'));
|
alert.appendChild(createDom('span', {className: 'jasmine-duration'}, 'finished in ' + timer.elapsed() / 1000 + 's'));
|
||||||
|
|
||||||
banner.appendChild(optionsMenu(env));
|
banner.appendChild(optionsMenu(config()));
|
||||||
|
|
||||||
if (stateBuilder.specsExecuted < totalSpecsDefined) {
|
if (stateBuilder.specsExecuted < totalSpecsDefined) {
|
||||||
var skippedMessage = 'Ran ' + stateBuilder.specsExecuted + ' of ' + totalSpecsDefined + ' specs - run all';
|
var skippedMessage = 'Ran ' + stateBuilder.specsExecuted + ' of ' + totalSpecsDefined + ' specs - run all';
|
||||||
@@ -310,7 +310,7 @@ jasmineRequire.HtmlReporter = function(j$) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function optionsMenu(env) {
|
function optionsMenu(config) {
|
||||||
var optionsMenuDom = createDom('div', { className: 'jasmine-run-options' },
|
var optionsMenuDom = createDom('div', { className: 'jasmine-run-options' },
|
||||||
createDom('span', { className: 'jasmine-trigger' }, 'Options'),
|
createDom('span', { className: 'jasmine-trigger' }, 'Options'),
|
||||||
createDom('div', { className: 'jasmine-payload' },
|
createDom('div', { className: 'jasmine-payload' },
|
||||||
@@ -346,27 +346,27 @@ jasmineRequire.HtmlReporter = function(j$) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
var failFastCheckbox = optionsMenuDom.querySelector('#jasmine-fail-fast');
|
var failFastCheckbox = optionsMenuDom.querySelector('#jasmine-fail-fast');
|
||||||
failFastCheckbox.checked = env.stoppingOnSpecFailure();
|
failFastCheckbox.checked = config.failFast;
|
||||||
failFastCheckbox.onclick = function() {
|
failFastCheckbox.onclick = function() {
|
||||||
navigateWithNewParam('failFast', !env.stoppingOnSpecFailure());
|
navigateWithNewParam('failFast', !config.failFast);
|
||||||
};
|
};
|
||||||
|
|
||||||
var throwCheckbox = optionsMenuDom.querySelector('#jasmine-throw-failures');
|
var throwCheckbox = optionsMenuDom.querySelector('#jasmine-throw-failures');
|
||||||
throwCheckbox.checked = env.throwingExpectationFailures();
|
throwCheckbox.checked = config.oneFailurePerSpec;
|
||||||
throwCheckbox.onclick = function() {
|
throwCheckbox.onclick = function() {
|
||||||
navigateWithNewParam('throwFailures', !env.throwingExpectationFailures());
|
navigateWithNewParam('throwFailures', !config.oneFailurePerSpec);
|
||||||
};
|
};
|
||||||
|
|
||||||
var randomCheckbox = optionsMenuDom.querySelector('#jasmine-random-order');
|
var randomCheckbox = optionsMenuDom.querySelector('#jasmine-random-order');
|
||||||
randomCheckbox.checked = env.randomTests();
|
randomCheckbox.checked = config.random;
|
||||||
randomCheckbox.onclick = function() {
|
randomCheckbox.onclick = function() {
|
||||||
navigateWithNewParam('random', !env.randomTests());
|
navigateWithNewParam('random', !config.random);
|
||||||
};
|
};
|
||||||
|
|
||||||
var hideDisabled = optionsMenuDom.querySelector('#jasmine-hide-disabled');
|
var hideDisabled = optionsMenuDom.querySelector('#jasmine-hide-disabled');
|
||||||
hideDisabled.checked = env.hidingDisabled();
|
hideDisabled.checked = config.hideDisabled;
|
||||||
hideDisabled.onclick = function() {
|
hideDisabled.onclick = function() {
|
||||||
navigateWithNewParam('hideDisabled', !env.hidingDisabled());
|
navigateWithNewParam('hideDisabled', !config.hideDisabled);
|
||||||
};
|
};
|
||||||
|
|
||||||
var optionsTrigger = optionsMenuDom.querySelector('.jasmine-trigger'),
|
var optionsTrigger = optionsMenuDom.querySelector('.jasmine-trigger'),
|
||||||
|
|||||||
Reference in New Issue
Block a user