Replaced uses of var with const/let

This commit is contained in:
Steve Gravrock
2022-06-08 19:07:43 -07:00
parent 4af86f5398
commit 135ff20123
73 changed files with 1384 additions and 1391 deletions

View File

@@ -37,16 +37,16 @@ module.exports.noGlobals = (function() {
}; };
}()); }());
var path = require('path'), const path = require('path'),
fs = require('fs'); fs = require('fs');
var rootPath = path.join(__dirname, "jasmine-core"), const rootPath = path.join(__dirname, 'jasmine-core'),
bootFiles = ['boot0.js', 'boot1.js'], bootFiles = ['boot0.js', 'boot1.js'],
legacyBootFiles = ['boot.js'], legacyBootFiles = ['boot.js'],
nodeBootFiles = ['node_boot.js'], nodeBootFiles = ['node_boot.js'],
cssFiles = [], cssFiles = [],
jsFiles = [], jsFiles = [],
jsFilesToSkip = ['jasmine.js'].concat(bootFiles, legacyBootFiles, nodeBootFiles); jsFilesToSkip = ['jasmine.js'].concat(bootFiles, legacyBootFiles, nodeBootFiles);
fs.readdirSync(rootPath).forEach(function(file) { fs.readdirSync(rootPath).forEach(function(file) {
if(fs.statSync(path.join(rootPath, file)).isFile()) { if(fs.statSync(path.join(rootPath, file)).isFile()) {

View File

@@ -27,14 +27,14 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
source files or spec files are loaded. source files or spec files are loaded.
*/ */
(function() { (function() {
var jasmineRequire = window.jasmineRequire || require('./jasmine.js'); const jasmineRequire = window.jasmineRequire || require('./jasmine.js');
/** /**
* ## Require & Instantiate * ## Require & Instantiate
* *
* Require Jasmine's core files. Specifically, this requires and attaches all of Jasmine's code to the `jasmine` reference. * Require Jasmine's core files. Specifically, this requires and attaches all of Jasmine's code to the `jasmine` reference.
*/ */
var jasmine = jasmineRequire.core(jasmineRequire), const jasmine = jasmineRequire.core(jasmineRequire),
global = jasmine.getGlobal(); global = jasmine.getGlobal();
global.jasmine = jasmine; global.jasmine = jasmine;
@@ -46,19 +46,19 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
/** /**
* Create the Jasmine environment. This is used to run all specs in a project. * Create the Jasmine environment. This is used to run all specs in a project.
*/ */
var env = jasmine.getEnv(); const env = jasmine.getEnv();
/** /**
* ## The Global Interface * ## The Global Interface
* *
* Build up the functions that will be exposed as the Jasmine public interface. A project can customize, rename or alias any of these functions as desired, provided the implementation remains unchanged. * Build up the functions that will be exposed as the Jasmine public interface. A project can customize, rename or alias any of these functions as desired, provided the implementation remains unchanged.
*/ */
var jasmineInterface = jasmineRequire.interface(jasmine, env); const jasmineInterface = jasmineRequire.interface(jasmine, env);
/** /**
* Add all of the Jasmine global/public interface to the global scope, so a project can use the public interface directly. For example, calling `describe` in specs instead of `jasmine.getEnv().describe`. * Add all of the Jasmine global/public interface to the global scope, so a project can use the public interface directly. For example, calling `describe` in specs instead of `jasmine.getEnv().describe`.
*/ */
for (var property in jasmineInterface) { for (const property in jasmineInterface) {
global[property] = jasmineInterface[property]; global[property] = jasmineInterface[property];
} }
})(); })();

View File

@@ -34,7 +34,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
(function() { (function() {
var env = jasmine.getEnv(); const env = jasmine.getEnv();
/** /**
* ## Runner Parameters * ## Runner Parameters
@@ -42,15 +42,15 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* More browser specific code - wrap the query string in an object and to allow for getting/setting parameters from the runner user interface. * More browser specific code - wrap the query string in an object and to allow for getting/setting parameters from the runner user interface.
*/ */
var queryString = new jasmine.QueryString({ const queryString = new jasmine.QueryString({
getWindowLocation: function() { getWindowLocation: function() {
return window.location; return window.location;
} }
}); });
var filterSpecs = !!queryString.getParam('spec'); const filterSpecs = !!queryString.getParam('spec');
var config = { const config = {
stopOnSpecFailure: queryString.getParam('stopOnSpecFailure'), stopOnSpecFailure: queryString.getParam('stopOnSpecFailure'),
stopSpecOnExpectationFailure: queryString.getParam( stopSpecOnExpectationFailure: queryString.getParam(
'stopSpecOnExpectationFailure' 'stopSpecOnExpectationFailure'
@@ -58,13 +58,13 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
hideDisabled: queryString.getParam('hideDisabled') hideDisabled: queryString.getParam('hideDisabled')
}; };
var random = queryString.getParam('random'); const random = queryString.getParam('random');
if (random !== undefined && random !== '') { if (random !== undefined && random !== '') {
config.random = random; config.random = random;
} }
var seed = queryString.getParam('seed'); const seed = queryString.getParam('seed');
if (seed) { if (seed) {
config.seed = seed; config.seed = seed;
} }
@@ -73,7 +73,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* ## Reporters * ## Reporters
* The `HtmlReporter` builds all of the HTML UI for the runner page. This reporter paints the dots, stars, and x's for specs, as well as all spec names and all failures (if any). * The `HtmlReporter` builds all of the HTML UI for the runner page. This reporter paints the dots, stars, and x's for specs, as well as all spec names and all failures (if any).
*/ */
var htmlReporter = new jasmine.HtmlReporter({ const htmlReporter = new jasmine.HtmlReporter({
env: env, env: env,
navigateWithNewParam: function(key, value) { navigateWithNewParam: function(key, value) {
return queryString.navigateWithNewParam(key, value); return queryString.navigateWithNewParam(key, value);
@@ -103,7 +103,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
/** /**
* Filter which specs will be run by matching the start of the full name against the `spec` query param. * Filter which specs will be run by matching the start of the full name against the `spec` query param.
*/ */
var specFilter = new jasmine.HtmlSpecFilter({ const specFilter = new jasmine.HtmlSpecFilter({
filterString: function() { filterString: function() {
return queryString.getParam('spec'); return queryString.getParam('spec');
} }
@@ -120,7 +120,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* *
* Replace the browser window's `onload`, ensure it's called, and then run all of the loaded specs. This includes initializing the `HtmlReporter` instance and then executing the loaded Jasmine environment. All of this will happen after all of the specs are loaded. * Replace the browser window's `onload`, ensure it's called, and then run all of the loaded specs. This includes initializing the `HtmlReporter` instance and then executing the loaded Jasmine environment. All of this will happen after all of the specs are loaded.
*/ */
var currentWindowOnload = window.onload; const currentWindowOnload = window.onload;
window.onload = function() { window.onload = function() {
if (currentWindowOnload) { if (currentWindowOnload) {

View File

@@ -20,6 +20,7 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
// eslint-disable-next-line no-var
var jasmineRequire = window.jasmineRequire || require('./jasmine.js'); var jasmineRequire = window.jasmineRequire || require('./jasmine.js');
jasmineRequire.html = function(j$) { jasmineRequire.html = function(j$) {
@@ -79,19 +80,21 @@ jasmineRequire.HtmlReporter = function(j$) {
}; };
function HtmlReporter(options) { function HtmlReporter(options) {
var config = function() { function config() {
return (options.env && options.env.configuration()) || {}; return (options.env && options.env.configuration()) || {};
}, }
getContainer = options.getContainer,
createElement = options.createElement, const getContainer = options.getContainer;
createTextNode = options.createTextNode, const createElement = options.createElement;
navigateWithNewParam = options.navigateWithNewParam || function() {}, const createTextNode = options.createTextNode;
addToExistingQueryString = const navigateWithNewParam = options.navigateWithNewParam || function() {};
options.addToExistingQueryString || defaultQueryString, const addToExistingQueryString =
filterSpecs = options.filterSpecs, options.addToExistingQueryString || defaultQueryString;
htmlReporterMain, const filterSpecs = options.filterSpecs;
symbols, let htmlReporterMain;
deprecationWarnings = []; let symbols;
const deprecationWarnings = [];
const failures = [];
this.initialize = function() { this.initialize = function() {
clearPrior(); clearPrior();
@@ -119,14 +122,14 @@ jasmineRequire.HtmlReporter = function(j$) {
getContainer().appendChild(htmlReporterMain); getContainer().appendChild(htmlReporterMain);
}; };
var totalSpecsDefined; let totalSpecsDefined;
this.jasmineStarted = function(options) { this.jasmineStarted = function(options) {
totalSpecsDefined = options.totalSpecsDefined || 0; totalSpecsDefined = options.totalSpecsDefined || 0;
}; };
var summary = createDom('div', { className: 'jasmine-summary' }); const summary = createDom('div', { className: 'jasmine-summary' });
var stateBuilder = new ResultsStateBuilder(); const stateBuilder = new ResultsStateBuilder();
this.suiteStarted = function(result) { this.suiteStarted = function(result) {
stateBuilder.suiteStarted(result); stateBuilder.suiteStarted(result);
@@ -145,12 +148,11 @@ jasmineRequire.HtmlReporter = function(j$) {
stateBuilder.specStarted(result); stateBuilder.specStarted(result);
}; };
var failures = [];
this.specDone = function(result) { this.specDone = function(result) {
stateBuilder.specDone(result); stateBuilder.specDone(result);
if (noExpectations(result)) { if (noExpectations(result)) {
var noSpecMsg = "Spec '" + result.fullName + "' has no expectations."; const noSpecMsg = "Spec '" + result.fullName + "' has no expectations.";
if (result.status === 'failed') { if (result.status === 'failed') {
console.error(noSpecMsg); console.error(noSpecMsg);
} else { } else {
@@ -194,10 +196,10 @@ jasmineRequire.HtmlReporter = function(j$) {
this.jasmineDone = function(doneResult) { this.jasmineDone = function(doneResult) {
stateBuilder.jasmineDone(doneResult); stateBuilder.jasmineDone(doneResult);
var banner = find('.jasmine-banner'); const banner = find('.jasmine-banner');
var alert = find('.jasmine-alert'); const alert = find('.jasmine-alert');
var order = doneResult && doneResult.order; const order = doneResult && doneResult.order;
var i;
alert.appendChild( alert.appendChild(
createDom( createDom(
'span', 'span',
@@ -209,14 +211,14 @@ jasmineRequire.HtmlReporter = function(j$) {
banner.appendChild(optionsMenu(config())); banner.appendChild(optionsMenu(config()));
if (stateBuilder.specsExecuted < totalSpecsDefined) { if (stateBuilder.specsExecuted < totalSpecsDefined) {
var skippedMessage = const skippedMessage =
'Ran ' + 'Ran ' +
stateBuilder.specsExecuted + stateBuilder.specsExecuted +
' of ' + ' of ' +
totalSpecsDefined + totalSpecsDefined +
' specs - run all'; ' specs - run all';
// include window.location.pathname to fix issue with karma-jasmine-html-reporter in angular: see https://github.com/jasmine/jasmine/issues/1906 // include window.location.pathname to fix issue with karma-jasmine-html-reporter in angular: see https://github.com/jasmine/jasmine/issues/1906
var skippedLink = const skippedLink =
(window.location.pathname || '') + (window.location.pathname || '') +
addToExistingQueryString('spec', ''); addToExistingQueryString('spec', '');
alert.appendChild( alert.appendChild(
@@ -231,10 +233,11 @@ jasmineRequire.HtmlReporter = function(j$) {
) )
); );
} }
var statusBarMessage = ''; let statusBarMessage = '';
var statusBarClassName = 'jasmine-overall-result jasmine-bar '; let statusBarClassName = 'jasmine-overall-result jasmine-bar ';
var globalFailures = (doneResult && doneResult.failedExpectations) || []; const globalFailures =
var failed = stateBuilder.failureCount + globalFailures.length > 0; (doneResult && doneResult.failedExpectations) || [];
const failed = stateBuilder.failureCount + globalFailures.length > 0;
if (totalSpecsDefined > 0 || failed) { if (totalSpecsDefined > 0 || failed) {
statusBarMessage += statusBarMessage +=
@@ -260,7 +263,7 @@ jasmineRequire.HtmlReporter = function(j$) {
statusBarClassName += ' jasmine-failed '; statusBarClassName += ' jasmine-failed ';
} }
var seedBar; let seedBar;
if (order && order.random) { if (order && order.random) {
seedBar = createDom( seedBar = createDom(
'span', 'span',
@@ -286,10 +289,10 @@ jasmineRequire.HtmlReporter = function(j$) {
) )
); );
var errorBarClassName = 'jasmine-bar jasmine-errored'; const errorBarClassName = 'jasmine-bar jasmine-errored';
var afterAllMessagePrefix = 'AfterAll '; const afterAllMessagePrefix = 'AfterAll ';
for (i = 0; i < globalFailures.length; i++) { for (let i = 0; i < globalFailures.length; i++) {
alert.appendChild( alert.appendChild(
createDom( createDom(
'span', 'span',
@@ -301,7 +304,7 @@ jasmineRequire.HtmlReporter = function(j$) {
function globalFailureMessage(failure) { function globalFailureMessage(failure) {
if (failure.globalErrorType === 'load') { if (failure.globalErrorType === 'load') {
var prefix = 'Error during loading: ' + failure.message; const prefix = 'Error during loading: ' + failure.message;
if (failure.filename) { if (failure.filename) {
return ( return (
@@ -319,9 +322,9 @@ jasmineRequire.HtmlReporter = function(j$) {
addDeprecationWarnings(doneResult); addDeprecationWarnings(doneResult);
for (i = 0; i < deprecationWarnings.length; i++) { for (let i = 0; i < deprecationWarnings.length; i++) {
var children = [], const children = [];
context; let context;
switch (deprecationWarnings[i].runnableType) { switch (deprecationWarnings[i].runnableType) {
case 'spec': case 'spec':
@@ -355,7 +358,7 @@ jasmineRequire.HtmlReporter = function(j$) {
); );
} }
var results = find('.jasmine-results'); const results = find('.jasmine-results');
results.appendChild(summary); results.appendChild(summary);
summaryList(stateBuilder.topResults, summary); summaryList(stateBuilder.topResults, summary);
@@ -397,8 +400,8 @@ jasmineRequire.HtmlReporter = function(j$) {
setMenuModeTo('jasmine-failure-list'); setMenuModeTo('jasmine-failure-list');
var failureNode = find('.jasmine-failures'); const failureNode = find('.jasmine-failures');
for (i = 0; i < failures.length; i++) { for (let i = 0; i < failures.length; i++) {
failureNode.appendChild(failures[i]); failureNode.appendChild(failures[i]);
} }
} }
@@ -407,16 +410,16 @@ jasmineRequire.HtmlReporter = function(j$) {
return this; return this;
function failureDom(result) { function failureDom(result) {
var failure = createDom( const failure = createDom(
'div', 'div',
{ className: 'jasmine-spec-detail jasmine-failed' }, { className: 'jasmine-spec-detail jasmine-failed' },
failureDescription(result, stateBuilder.currentParent), failureDescription(result, stateBuilder.currentParent),
createDom('div', { className: 'jasmine-messages' }) createDom('div', { className: 'jasmine-messages' })
); );
var messages = failure.childNodes[1]; const messages = failure.childNodes[1];
for (var i = 0; i < result.failedExpectations.length; i++) { for (let i = 0; i < result.failedExpectations.length; i++) {
var expectation = result.failedExpectations[i]; const expectation = result.failedExpectations[i];
messages.appendChild( messages.appendChild(
createDom( createDom(
'div', 'div',
@@ -451,7 +454,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function debugLogTable(debugLogs) { function debugLogTable(debugLogs) {
var tbody = createDom('tbody'); const tbody = createDom('tbody');
debugLogs.forEach(function(entry) { debugLogs.forEach(function(entry) {
tbody.appendChild( tbody.appendChild(
@@ -491,14 +494,14 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function summaryList(resultsTree, domParent) { function summaryList(resultsTree, domParent) {
var specListNode; let specListNode;
for (var i = 0; i < resultsTree.children.length; i++) { for (let i = 0; i < resultsTree.children.length; i++) {
var resultNode = resultsTree.children[i]; const resultNode = resultsTree.children[i];
if (filterSpecs && !hasActiveSpec(resultNode)) { if (filterSpecs && !hasActiveSpec(resultNode)) {
continue; continue;
} }
if (resultNode.type === 'suite') { if (resultNode.type === 'suite') {
var suiteListNode = createDom( const suiteListNode = createDom(
'ul', 'ul',
{ className: 'jasmine-suite', id: 'suite-' + resultNode.result.id }, { className: 'jasmine-suite', id: 'suite-' + resultNode.result.id },
createDom( createDom(
@@ -523,7 +526,7 @@ jasmineRequire.HtmlReporter = function(j$) {
specListNode = createDom('ul', { className: 'jasmine-specs' }); specListNode = createDom('ul', { className: 'jasmine-specs' });
domParent.appendChild(specListNode); domParent.appendChild(specListNode);
} }
var specDescription = resultNode.result.description; let specDescription = resultNode.result.description;
if (noExpectations(resultNode.result)) { if (noExpectations(resultNode.result)) {
specDescription = 'SPEC HAS NO EXPECTATIONS ' + specDescription; specDescription = 'SPEC HAS NO EXPECTATIONS ' + specDescription;
} }
@@ -555,7 +558,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function optionsMenu(config) { function optionsMenu(config) {
var optionsMenuDom = createDom( const optionsMenuDom = createDom(
'div', 'div',
{ className: 'jasmine-run-options' }, { className: 'jasmine-run-options' },
createDom('span', { className: 'jasmine-trigger' }, 'Options'), createDom('span', { className: 'jasmine-trigger' }, 'Options'),
@@ -621,13 +624,15 @@ jasmineRequire.HtmlReporter = function(j$) {
) )
); );
var failFastCheckbox = optionsMenuDom.querySelector('#jasmine-fail-fast'); const failFastCheckbox = optionsMenuDom.querySelector(
'#jasmine-fail-fast'
);
failFastCheckbox.checked = config.stopOnSpecFailure; failFastCheckbox.checked = config.stopOnSpecFailure;
failFastCheckbox.onclick = function() { failFastCheckbox.onclick = function() {
navigateWithNewParam('stopOnSpecFailure', !config.stopOnSpecFailure); navigateWithNewParam('stopOnSpecFailure', !config.stopOnSpecFailure);
}; };
var throwCheckbox = optionsMenuDom.querySelector( const throwCheckbox = optionsMenuDom.querySelector(
'#jasmine-throw-failures' '#jasmine-throw-failures'
); );
throwCheckbox.checked = config.stopSpecOnExpectationFailure; throwCheckbox.checked = config.stopSpecOnExpectationFailure;
@@ -638,7 +643,7 @@ jasmineRequire.HtmlReporter = function(j$) {
); );
}; };
var randomCheckbox = optionsMenuDom.querySelector( const randomCheckbox = optionsMenuDom.querySelector(
'#jasmine-random-order' '#jasmine-random-order'
); );
randomCheckbox.checked = config.random; randomCheckbox.checked = config.random;
@@ -646,13 +651,15 @@ jasmineRequire.HtmlReporter = function(j$) {
navigateWithNewParam('random', !config.random); navigateWithNewParam('random', !config.random);
}; };
var hideDisabled = optionsMenuDom.querySelector('#jasmine-hide-disabled'); const hideDisabled = optionsMenuDom.querySelector(
'#jasmine-hide-disabled'
);
hideDisabled.checked = config.hideDisabled; hideDisabled.checked = config.hideDisabled;
hideDisabled.onclick = function() { hideDisabled.onclick = function() {
navigateWithNewParam('hideDisabled', !config.hideDisabled); navigateWithNewParam('hideDisabled', !config.hideDisabled);
}; };
var optionsTrigger = optionsMenuDom.querySelector('.jasmine-trigger'), const optionsTrigger = optionsMenuDom.querySelector('.jasmine-trigger'),
optionsPayload = optionsMenuDom.querySelector('.jasmine-payload'), optionsPayload = optionsMenuDom.querySelector('.jasmine-payload'),
isOpen = /\bjasmine-open\b/; isOpen = /\bjasmine-open\b/;
@@ -671,7 +678,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function failureDescription(result, suite) { function failureDescription(result, suite) {
var wrapper = createDom( const wrapper = createDom(
'div', 'div',
{ className: 'jasmine-description' }, { className: 'jasmine-description' },
createDom( createDom(
@@ -680,7 +687,7 @@ jasmineRequire.HtmlReporter = function(j$) {
result.description result.description
) )
); );
var suiteLink; let suiteLink;
while (suite && suite.parent) { while (suite && suite.parent) {
wrapper.insertBefore(createTextNode(' > '), wrapper.firstChild); wrapper.insertBefore(createTextNode(' > '), wrapper.firstChild);
@@ -698,7 +705,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function suiteHref(suite) { function suiteHref(suite) {
var els = []; const els = [];
while (suite && suite.parent) { while (suite && suite.parent) {
els.unshift(suite.result.description); els.unshift(suite.result.description);
@@ -714,8 +721,8 @@ jasmineRequire.HtmlReporter = function(j$) {
function addDeprecationWarnings(result, runnableType) { function addDeprecationWarnings(result, runnableType) {
if (result && result.deprecationWarnings) { if (result && result.deprecationWarnings) {
for (var i = 0; i < result.deprecationWarnings.length; i++) { for (let i = 0; i < result.deprecationWarnings.length; i++) {
var warning = result.deprecationWarnings[i].message; const warning = result.deprecationWarnings[i].message;
deprecationWarnings.push({ deprecationWarnings.push({
message: warning, message: warning,
stack: result.deprecationWarnings[i].stack, stack: result.deprecationWarnings[i].stack,
@@ -727,8 +734,8 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function createExpander(stackTrace) { function createExpander(stackTrace) {
var expandLink = createDom('a', { href: '#' }, 'Show stack trace'); const expandLink = createDom('a', { href: '#' }, 'Show stack trace');
var root = createDom( const root = createDom(
'div', 'div',
{ className: 'jasmine-expander' }, { className: 'jasmine-expander' },
expandLink, expandLink,
@@ -759,8 +766,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function clearPrior() { function clearPrior() {
// return the reporter const oldReporter = find('');
var oldReporter = find('');
if (oldReporter) { if (oldReporter) {
getContainer().removeChild(oldReporter); getContainer().removeChild(oldReporter);
@@ -768,22 +774,21 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function createDom(type, attrs, childrenArrayOrVarArgs) { function createDom(type, attrs, childrenArrayOrVarArgs) {
var el = createElement(type), const el = createElement(type);
children, let children;
i;
if (j$.isArray_(childrenArrayOrVarArgs)) { if (j$.isArray_(childrenArrayOrVarArgs)) {
children = childrenArrayOrVarArgs; children = childrenArrayOrVarArgs;
} else { } else {
children = []; children = [];
for (i = 2; i < arguments.length; i++) { for (let i = 2; i < arguments.length; i++) {
children.push(arguments[i]); children.push(arguments[i]);
} }
} }
for (i = 0; i < children.length; i++) { for (let i = 0; i < children.length; i++) {
var child = children[i]; const child = children[i];
if (typeof child === 'string') { if (typeof child === 'string') {
el.appendChild(createTextNode(child)); el.appendChild(createTextNode(child));
@@ -794,7 +799,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
} }
for (var attr in attrs) { for (const attr in attrs) {
if (attr == 'className') { if (attr == 'className') {
el[attr] = attrs[attr]; el[attr] = attrs[attr];
} else { } else {
@@ -806,7 +811,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function pluralize(singular, count) { function pluralize(singular, count) {
var word = count == 1 ? singular : singular + 's'; const word = count == 1 ? singular : singular + 's';
return '' + count + ' ' + word; return '' + count + ' ' + word;
} }
@@ -836,7 +841,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function noExpectations(result) { function noExpectations(result) {
var allExpectations = const allExpectations =
result.failedExpectations.length + result.passedExpectations.length; result.failedExpectations.length + result.passedExpectations.length;
return ( return (
@@ -851,7 +856,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
if (resultNode.type == 'suite') { if (resultNode.type == 'suite') {
for (var i = 0, j = resultNode.children.length; i < j; i++) { for (let i = 0, j = resultNode.children.length; i < j; i++) {
if (hasActiveSpec(resultNode.children[i])) { if (hasActiveSpec(resultNode.children[i])) {
return true; return true;
} }
@@ -865,11 +870,11 @@ jasmineRequire.HtmlReporter = function(j$) {
jasmineRequire.HtmlSpecFilter = function() { jasmineRequire.HtmlSpecFilter = function() {
function HtmlSpecFilter(options) { function HtmlSpecFilter(options) {
var filterString = const filterString =
options && options &&
options.filterString() && options.filterString() &&
options.filterString().replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); options.filterString().replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
var filterPattern = new RegExp(filterString); const filterPattern = new RegExp(filterString);
this.matches = function(specName) { this.matches = function(specName) {
return filterPattern.test(specName); return filterPattern.test(specName);
@@ -913,7 +918,7 @@ jasmineRequire.QueryString = function() {
}; };
this.fullStringWithNewParam = function(key, value) { this.fullStringWithNewParam = function(key, value) {
var paramMap = queryStringToParamMap(); const paramMap = queryStringToParamMap();
paramMap[key] = value; paramMap[key] = value;
return toQueryString(paramMap); return toQueryString(paramMap);
}; };
@@ -925,8 +930,8 @@ jasmineRequire.QueryString = function() {
return this; return this;
function toQueryString(paramMap) { function toQueryString(paramMap) {
var qStrPairs = []; const qStrPairs = [];
for (var prop in paramMap) { for (const prop in paramMap) {
qStrPairs.push( qStrPairs.push(
encodeURIComponent(prop) + '=' + encodeURIComponent(paramMap[prop]) encodeURIComponent(prop) + '=' + encodeURIComponent(paramMap[prop])
); );
@@ -935,15 +940,15 @@ jasmineRequire.QueryString = function() {
} }
function queryStringToParamMap() { function queryStringToParamMap() {
var paramStr = options.getWindowLocation().search.substring(1), const paramStr = options.getWindowLocation().search.substring(1);
params = [], let params = [];
paramMap = {}; const paramMap = {};
if (paramStr.length > 0) { if (paramStr.length > 0) {
params = paramStr.split('&'); params = paramStr.split('&');
for (var i = 0; i < params.length; i++) { for (let i = 0; i < params.length; i++) {
var p = params[i].split('='); const p = params[i].split('=');
var value = decodeURIComponent(p[1]); let value = decodeURIComponent(p[1]);
if (value === 'true' || value === 'false') { if (value === 'true' || value === 'false') {
value = JSON.parse(value); value = JSON.parse(value);
} }

File diff suppressed because it is too large Load Diff

View File

@@ -21,16 +21,16 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
module.exports = function(jasmineRequire) { module.exports = function(jasmineRequire) {
var jasmine = jasmineRequire.core(jasmineRequire); const jasmine = jasmineRequire.core(jasmineRequire);
var env = jasmine.getEnv({ suppressLoadErrors: true }); const env = jasmine.getEnv({ suppressLoadErrors: true });
var jasmineInterface = jasmineRequire.interface(jasmine, env); const jasmineInterface = jasmineRequire.interface(jasmine, env);
extend(global, jasmineInterface); extend(global, jasmineInterface);
function extend(destination, source) { function extend(destination, source) {
for (var property in source) destination[property] = source[property]; for (const property in source) destination[property] = source[property];
return destination; return destination;
} }

View File

@@ -96,7 +96,8 @@
"always" "always"
], ],
"space-before-blocks": "error", "space-before-blocks": "error",
"no-eval": "error" "no-eval": "error",
"no-var": "error"
} }
}, },
"browserslist": [ "browserslist": [

View File

@@ -14,8 +14,6 @@ module.exports = {
// TODO: consider doing this in src files as well as specs // TODO: consider doing this in src files as well as specs
'no-unused-vars': ['error', { args: 'after-used' }], 'no-unused-vars': ['error', { args: 'after-used' }],
'no-var': 'error',
// Since linting is done at the end of the process and doesn't stop us // Since linting is done at the end of the process and doesn't stop us
// from running tests, it makes sense to fail if debugger statements // from running tests, it makes sense to fail if debugger statements
// or console references are present. // or console references are present.

View File

@@ -3,7 +3,7 @@ const path = require('path'),
jasmineBrowser = require('jasmine-browser-runner'), jasmineBrowser = require('jasmine-browser-runner'),
jasmineCore = require('../../lib/jasmine-core'); jasmineCore = require('../../lib/jasmine-core');
var config = require(path.resolve('spec/support/jasmine-browser.js')); const config = require(path.resolve('spec/support/jasmine-browser.js'));
config.clearReporters = true; config.clearReporters = true;
config.jasmineCore = jasmineCore; config.jasmineCore = jasmineCore;

View File

@@ -5,14 +5,14 @@
source files or spec files are loaded. source files or spec files are loaded.
*/ */
(function() { (function() {
var jasmineRequire = window.jasmineRequire || require('./jasmine.js'); const jasmineRequire = window.jasmineRequire || require('./jasmine.js');
/** /**
* ## Require &amp; Instantiate * ## Require &amp; Instantiate
* *
* Require Jasmine's core files. Specifically, this requires and attaches all of Jasmine's code to the `jasmine` reference. * Require Jasmine's core files. Specifically, this requires and attaches all of Jasmine's code to the `jasmine` reference.
*/ */
var jasmine = jasmineRequire.core(jasmineRequire), const jasmine = jasmineRequire.core(jasmineRequire),
global = jasmine.getGlobal(); global = jasmine.getGlobal();
global.jasmine = jasmine; global.jasmine = jasmine;
@@ -24,19 +24,19 @@
/** /**
* Create the Jasmine environment. This is used to run all specs in a project. * Create the Jasmine environment. This is used to run all specs in a project.
*/ */
var env = jasmine.getEnv(); const env = jasmine.getEnv();
/** /**
* ## The Global Interface * ## The Global Interface
* *
* Build up the functions that will be exposed as the Jasmine public interface. A project can customize, rename or alias any of these functions as desired, provided the implementation remains unchanged. * Build up the functions that will be exposed as the Jasmine public interface. A project can customize, rename or alias any of these functions as desired, provided the implementation remains unchanged.
*/ */
var jasmineInterface = jasmineRequire.interface(jasmine, env); const jasmineInterface = jasmineRequire.interface(jasmine, env);
/** /**
* Add all of the Jasmine global/public interface to the global scope, so a project can use the public interface directly. For example, calling `describe` in specs instead of `jasmine.getEnv().describe`. * Add all of the Jasmine global/public interface to the global scope, so a project can use the public interface directly. For example, calling `describe` in specs instead of `jasmine.getEnv().describe`.
*/ */
for (var property in jasmineInterface) { for (const property in jasmineInterface) {
global[property] = jasmineInterface[property]; global[property] = jasmineInterface[property];
} }
})(); })();

View File

@@ -12,7 +12,7 @@
*/ */
(function() { (function() {
var env = jasmine.getEnv(); const env = jasmine.getEnv();
/** /**
* ## Runner Parameters * ## Runner Parameters
@@ -20,15 +20,15 @@
* More browser specific code - wrap the query string in an object and to allow for getting/setting parameters from the runner user interface. * More browser specific code - wrap the query string in an object and to allow for getting/setting parameters from the runner user interface.
*/ */
var queryString = new jasmine.QueryString({ const queryString = new jasmine.QueryString({
getWindowLocation: function() { getWindowLocation: function() {
return window.location; return window.location;
} }
}); });
var filterSpecs = !!queryString.getParam('spec'); const filterSpecs = !!queryString.getParam('spec');
var config = { const config = {
stopOnSpecFailure: queryString.getParam('stopOnSpecFailure'), stopOnSpecFailure: queryString.getParam('stopOnSpecFailure'),
stopSpecOnExpectationFailure: queryString.getParam( stopSpecOnExpectationFailure: queryString.getParam(
'stopSpecOnExpectationFailure' 'stopSpecOnExpectationFailure'
@@ -36,13 +36,13 @@
hideDisabled: queryString.getParam('hideDisabled') hideDisabled: queryString.getParam('hideDisabled')
}; };
var random = queryString.getParam('random'); const random = queryString.getParam('random');
if (random !== undefined && random !== '') { if (random !== undefined && random !== '') {
config.random = random; config.random = random;
} }
var seed = queryString.getParam('seed'); const seed = queryString.getParam('seed');
if (seed) { if (seed) {
config.seed = seed; config.seed = seed;
} }
@@ -51,7 +51,7 @@
* ## Reporters * ## Reporters
* The `HtmlReporter` builds all of the HTML UI for the runner page. This reporter paints the dots, stars, and x's for specs, as well as all spec names and all failures (if any). * The `HtmlReporter` builds all of the HTML UI for the runner page. This reporter paints the dots, stars, and x's for specs, as well as all spec names and all failures (if any).
*/ */
var htmlReporter = new jasmine.HtmlReporter({ const htmlReporter = new jasmine.HtmlReporter({
env: env, env: env,
navigateWithNewParam: function(key, value) { navigateWithNewParam: function(key, value) {
return queryString.navigateWithNewParam(key, value); return queryString.navigateWithNewParam(key, value);
@@ -81,7 +81,7 @@
/** /**
* Filter which specs will be run by matching the start of the full name against the `spec` query param. * Filter which specs will be run by matching the start of the full name against the `spec` query param.
*/ */
var specFilter = new jasmine.HtmlSpecFilter({ const specFilter = new jasmine.HtmlSpecFilter({
filterString: function() { filterString: function() {
return queryString.getParam('spec'); return queryString.getParam('spec');
} }
@@ -98,7 +98,7 @@
* *
* Replace the browser window's `onload`, ensure it's called, and then run all of the loaded specs. This includes initializing the `HtmlReporter` instance and then executing the loaded Jasmine environment. All of this will happen after all of the specs are loaded. * Replace the browser window's `onload`, ensure it's called, and then run all of the loaded specs. This includes initializing the `HtmlReporter` instance and then executing the loaded Jasmine environment. All of this will happen after all of the specs are loaded.
*/ */
var currentWindowOnload = window.onload; const currentWindowOnload = window.onload;
window.onload = function() { window.onload = function() {
if (currentWindowOnload) { if (currentWindowOnload) {

View File

@@ -1,14 +1,14 @@
module.exports = function(jasmineRequire) { module.exports = function(jasmineRequire) {
var jasmine = jasmineRequire.core(jasmineRequire); const jasmine = jasmineRequire.core(jasmineRequire);
var env = jasmine.getEnv({ suppressLoadErrors: true }); const env = jasmine.getEnv({ suppressLoadErrors: true });
var jasmineInterface = jasmineRequire.interface(jasmine, env); const jasmineInterface = jasmineRequire.interface(jasmine, env);
extend(global, jasmineInterface); extend(global, jasmineInterface);
function extend(destination, source) { function extend(destination, source) {
for (var property in source) destination[property] = source[property]; for (const property in source) destination[property] = source[property];
return destination; return destination;
} }

View File

@@ -4,8 +4,8 @@ getJasmineRequireObj().CallTracker = function(j$) {
* @since 2.0.0 * @since 2.0.0
*/ */
function CallTracker() { function CallTracker() {
var calls = []; let calls = [];
var opts = {}; const opts = {};
this.track = function(context) { this.track = function(context) {
if (opts.cloneArgs) { if (opts.cloneArgs) {
@@ -45,7 +45,7 @@ getJasmineRequireObj().CallTracker = function(j$) {
* @return {Array} * @return {Array}
*/ */
this.argsFor = function(index) { this.argsFor = function(index) {
var call = calls[index]; const call = calls[index];
return call ? call.args : []; return call ? call.args : [];
}; };
@@ -58,7 +58,7 @@ getJasmineRequireObj().CallTracker = function(j$) {
* @return {Object?} * @return {Object?}
*/ */
this.thisFor = function(index) { this.thisFor = function(index) {
var call = calls[index]; const call = calls[index];
return call ? call.object : undefined; return call ? call.object : undefined;
}; };
@@ -81,12 +81,7 @@ getJasmineRequireObj().CallTracker = function(j$) {
* @return {Array} * @return {Array}
*/ */
this.allArgs = function() { this.allArgs = function() {
var callArgs = []; return calls.map(c => c.args);
for (var i = 0; i < calls.length; i++) {
callArgs.push(calls[i].args);
}
return callArgs;
}; };
/** /**

View File

@@ -1,15 +1,15 @@
getJasmineRequireObj().clearStack = function(j$) { getJasmineRequireObj().clearStack = function(j$) {
var maxInlineCallCount = 10; const maxInlineCallCount = 10;
function messageChannelImpl(global, setTimeout) { function messageChannelImpl(global, setTimeout) {
var channel = new global.MessageChannel(), const channel = new global.MessageChannel();
head = {}, let head = {};
tail = head; let tail = head;
var taskRunning = false; let taskRunning = false;
channel.port1.onmessage = function() { channel.port1.onmessage = function() {
head = head.next; head = head.next;
var task = head.task; const task = head.task;
delete head.task; delete head.task;
if (taskRunning) { if (taskRunning) {
@@ -24,7 +24,7 @@ getJasmineRequireObj().clearStack = function(j$) {
} }
}; };
var currentCallCount = 0; let currentCallCount = 0;
return function clearStack(fn) { return function clearStack(fn) {
currentCallCount++; currentCallCount++;
@@ -39,14 +39,14 @@ getJasmineRequireObj().clearStack = function(j$) {
} }
function getClearStack(global) { function getClearStack(global) {
var currentCallCount = 0; let currentCallCount = 0;
var realSetTimeout = global.setTimeout; const realSetTimeout = global.setTimeout;
var setTimeoutImpl = function clearStack(fn) { const setTimeoutImpl = function clearStack(fn) {
Function.prototype.apply.apply(realSetTimeout, [global, [fn, 0]]); Function.prototype.apply.apply(realSetTimeout, [global, [fn, 0]]);
}; };
if (j$.isFunction_(global.setImmediate)) { if (j$.isFunction_(global.setImmediate)) {
var realSetImmediate = global.setImmediate; const realSetImmediate = global.setImmediate;
return function(fn) { return function(fn) {
currentCallCount++; currentCallCount++;

View File

@@ -1,6 +1,6 @@
getJasmineRequireObj().Clock = function() { getJasmineRequireObj().Clock = function() {
/* global process */ /* global process */
var NODE_JS = const NODE_JS =
typeof process !== 'undefined' && typeof process !== 'undefined' &&
process.versions && process.versions &&
typeof process.versions.node === 'string'; typeof process.versions.node === 'string';
@@ -14,7 +14,7 @@ getJasmineRequireObj().Clock = function() {
* @hideconstructor * @hideconstructor
*/ */
function Clock(global, delayedFunctionSchedulerFactory, mockDate) { function Clock(global, delayedFunctionSchedulerFactory, mockDate) {
var self = this, const self = this,
realTimingFunctions = { realTimingFunctions = {
setTimeout: global.setTimeout, setTimeout: global.setTimeout,
clearTimeout: global.clearTimeout, clearTimeout: global.clearTimeout,
@@ -26,10 +26,10 @@ getJasmineRequireObj().Clock = function() {
clearTimeout: clearTimeout, clearTimeout: clearTimeout,
setInterval: setInterval, setInterval: setInterval,
clearInterval: clearInterval clearInterval: clearInterval
}, };
installed = false, let installed = false;
delayedFunctionScheduler, let delayedFunctionScheduler;
timer; let timer;
self.FakeTimeout = FakeTimeout; self.FakeTimeout = FakeTimeout;
@@ -151,7 +151,7 @@ getJasmineRequireObj().Clock = function() {
} }
function replace(dest, source) { function replace(dest, source) {
for (var prop in source) { for (const prop in source) {
dest[prop] = source[prop]; dest[prop] = source[prop];
} }
} }
@@ -165,7 +165,7 @@ getJasmineRequireObj().Clock = function() {
); );
} }
var timeout = new FakeTimeout(); const timeout = new FakeTimeout();
delayedFunctionScheduler.scheduleFunction( delayedFunctionScheduler.scheduleFunction(
fn, fn,
@@ -192,7 +192,7 @@ getJasmineRequireObj().Clock = function() {
); );
} }
var timeout = new FakeTimeout(); const timeout = new FakeTimeout();
delayedFunctionScheduler.scheduleFunction( delayedFunctionScheduler.scheduleFunction(
fn, fn,

View File

@@ -1,15 +1,15 @@
getJasmineRequireObj().DelayedFunctionScheduler = function(j$) { getJasmineRequireObj().DelayedFunctionScheduler = function(j$) {
function DelayedFunctionScheduler() { function DelayedFunctionScheduler() {
var self = this; const self = this;
var scheduledLookup = []; const scheduledLookup = [];
var scheduledFunctions = {}; const scheduledFunctions = {};
var currentTime = 0; let currentTime = 0;
var delayedFnCount = 0; let delayedFnCount = 0;
var deletedKeys = []; let deletedKeys = [];
self.tick = function(millis, tickDate) { self.tick = function(millis, tickDate) {
millis = millis || 0; millis = millis || 0;
var endTime = currentTime + millis; const endTime = currentTime + millis;
runScheduledFunctions(endTime, tickDate); runScheduledFunctions(endTime, tickDate);
}; };
@@ -22,7 +22,7 @@ getJasmineRequireObj().DelayedFunctionScheduler = function(j$) {
timeoutKey, timeoutKey,
runAtMillis runAtMillis
) { ) {
var f; let f;
if (typeof funcToCall === 'string') { if (typeof funcToCall === 'string') {
f = function() { f = function() {
// eslint-disable-next-line no-eval // eslint-disable-next-line no-eval
@@ -36,7 +36,7 @@ getJasmineRequireObj().DelayedFunctionScheduler = function(j$) {
timeoutKey = timeoutKey || ++delayedFnCount; timeoutKey = timeoutKey || ++delayedFnCount;
runAtMillis = runAtMillis || currentTime + millis; runAtMillis = runAtMillis || currentTime + millis;
var funcToSchedule = { const funcToSchedule = {
runAtMillis: runAtMillis, runAtMillis: runAtMillis,
funcToCall: f, funcToCall: f,
recurring: recurring, recurring: recurring,
@@ -61,9 +61,9 @@ getJasmineRequireObj().DelayedFunctionScheduler = function(j$) {
self.removeFunctionWithId = function(timeoutKey) { self.removeFunctionWithId = function(timeoutKey) {
deletedKeys.push(timeoutKey); deletedKeys.push(timeoutKey);
for (var runAtMillis in scheduledFunctions) { for (const runAtMillis in scheduledFunctions) {
var funcs = scheduledFunctions[runAtMillis]; const funcs = scheduledFunctions[runAtMillis];
var i = indexOfFirstToPass(funcs, function(func) { const i = indexOfFirstToPass(funcs, function(func) {
return func.timeoutKey === timeoutKey; return func.timeoutKey === timeoutKey;
}); });
@@ -85,9 +85,9 @@ getJasmineRequireObj().DelayedFunctionScheduler = function(j$) {
return self; return self;
function indexOfFirstToPass(array, testFn) { function indexOfFirstToPass(array, testFn) {
var index = -1; let index = -1;
for (var i = 0; i < array.length; ++i) { for (let i = 0; i < array.length; ++i) {
if (testFn(array[i])) { if (testFn(array[i])) {
index = i; index = i;
break; break;
@@ -98,8 +98,8 @@ getJasmineRequireObj().DelayedFunctionScheduler = function(j$) {
} }
function deleteFromLookup(key) { function deleteFromLookup(key) {
var value = Number(key); const value = Number(key);
var i = indexOfFirstToPass(scheduledLookup, function(millis) { const i = indexOfFirstToPass(scheduledLookup, function(millis) {
return millis === value; return millis === value;
}); });
@@ -120,8 +120,8 @@ getJasmineRequireObj().DelayedFunctionScheduler = function(j$) {
} }
function forEachFunction(funcsToRun, callback) { function forEachFunction(funcsToRun, callback) {
for (var i = 0; i < funcsToRun.length; ++i) { for (const f of funcsToRun) {
callback(funcsToRun[i]); callback(f);
} }
} }
@@ -137,13 +137,13 @@ getJasmineRequireObj().DelayedFunctionScheduler = function(j$) {
do { do {
deletedKeys = []; deletedKeys = [];
var newCurrentTime = scheduledLookup.shift(); const newCurrentTime = scheduledLookup.shift();
if (newCurrentTime >= currentTime) { if (newCurrentTime >= currentTime) {
tickDate(newCurrentTime - currentTime); tickDate(newCurrentTime - currentTime);
currentTime = newCurrentTime; currentTime = newCurrentTime;
} }
var funcsToRun = scheduledFunctions[currentTime]; const funcsToRun = scheduledFunctions[currentTime];
delete scheduledFunctions[currentTime]; delete scheduledFunctions[currentTime];

View File

@@ -5,7 +5,7 @@ getJasmineRequireObj().Deprecator = function(j$) {
this.toSuppress_ = []; this.toSuppress_ = [];
} }
var verboseNote = const verboseNote =
'Note: This message will be shown only once. Set the verboseDeprecations ' + 'Note: This message will be shown only once. Set the verboseDeprecations ' +
'config property to true to see every occurrence.'; 'config property to true to see every occurrence.';
@@ -35,13 +35,13 @@ getJasmineRequireObj().Deprecator = function(j$) {
}; };
Deprecator.prototype.log_ = function(runnable, deprecation, options) { Deprecator.prototype.log_ = function(runnable, deprecation, options) {
var context;
if (j$.isError_(deprecation)) { if (j$.isError_(deprecation)) {
console.error(deprecation); console.error(deprecation);
return; return;
} }
let context;
if (runnable === this.topSuite_ || options.ignoreRunnable) { if (runnable === this.topSuite_ || options.ignoreRunnable) {
context = ''; context = '';
} else if (runnable.children) { } else if (runnable.children) {
@@ -62,7 +62,7 @@ getJasmineRequireObj().Deprecator = function(j$) {
}; };
Deprecator.prototype.stackTrace_ = function() { Deprecator.prototype.stackTrace_ = function() {
var formatter = new j$.ExceptionFormatter(); const formatter = new j$.ExceptionFormatter();
return formatter.stack(j$.util.errorWithStack()).replace(/^Error\n/m, ''); return formatter.stack(j$.util.errorWithStack()).replace(/^Error\n/m, '');
}; };

View File

@@ -10,14 +10,14 @@ getJasmineRequireObj().Env = function(j$) {
function Env(options) { function Env(options) {
options = options || {}; options = options || {};
var self = this; const self = this;
var global = options.global || j$.getGlobal(); const global = options.global || j$.getGlobal();
var totalSpecsDefined = 0; let totalSpecsDefined = 0;
var realSetTimeout = global.setTimeout; const realSetTimeout = global.setTimeout;
var realClearTimeout = global.clearTimeout; const realClearTimeout = global.clearTimeout;
var clearStack = j$.getClearStack(global); const clearStack = j$.getClearStack(global);
this.clock = new j$.Clock( this.clock = new j$.Clock(
global, global,
function() { function() {
@@ -26,12 +26,17 @@ getJasmineRequireObj().Env = function(j$) {
new j$.MockDate(global) new j$.MockDate(global)
); );
var runnableResources = {}; const runnableResources = {};
var currentSpec = null; let topSuite;
var currentlyExecutingSuites = []; let currentSpec = null;
var currentDeclarationSuite = null; const currentlyExecutingSuites = [];
var hasFailures = false; const focusedRunnables = [];
let currentDeclarationSuite = null;
let hasFailures = false;
let deprecator;
let reporter;
let spyRegistry;
/** /**
* This represents the available options to configure Jasmine. * This represents the available options to configure Jasmine.
@@ -40,7 +45,7 @@ getJasmineRequireObj().Env = function(j$) {
* @interface Configuration * @interface Configuration
* @since 3.3.0 * @since 3.3.0
*/ */
var config = { const config = {
/** /**
* Whether to randomize spec execution order * Whether to randomize spec execution order
* @name Configuration#random * @name Configuration#random
@@ -133,24 +138,24 @@ getJasmineRequireObj().Env = function(j$) {
verboseDeprecations: false verboseDeprecations: false
}; };
var currentSuite = function() { function currentSuite() {
return currentlyExecutingSuites[currentlyExecutingSuites.length - 1]; return currentlyExecutingSuites[currentlyExecutingSuites.length - 1];
}; }
var currentRunnable = function() { function currentRunnable() {
return currentSpec || currentSuite(); return currentSpec || currentSuite();
}; }
var globalErrors = null; let globalErrors = null;
var installGlobalErrors = function() { function installGlobalErrors() {
if (globalErrors) { if (globalErrors) {
return; return;
} }
globalErrors = new j$.GlobalErrors(); globalErrors = new j$.GlobalErrors();
globalErrors.install(); globalErrors.install();
}; }
if (!options.suppressLoadErrors) { if (!options.suppressLoadErrors) {
installGlobalErrors(); installGlobalErrors();
@@ -180,7 +185,7 @@ getJasmineRequireObj().Env = function(j$) {
* @function * @function
*/ */
this.configure = function(configuration) { this.configure = function(configuration) {
var booleanProps = [ const booleanProps = [
'random', 'random',
'failSpecWithNoExpectations', 'failSpecWithNoExpectations',
'hideDisabled', 'hideDisabled',
@@ -217,8 +222,8 @@ getJasmineRequireObj().Env = function(j$) {
* @returns {Configuration} * @returns {Configuration}
*/ */
this.configuration = function() { this.configuration = function() {
var result = {}; const result = {};
for (var property in config) { for (const property in config) {
result[property] = config[property]; result[property] = config[property];
} }
return result; return result;
@@ -261,10 +266,10 @@ getJasmineRequireObj().Env = function(j$) {
'Matchers must be added in a before function or a spec' 'Matchers must be added in a before function or a spec'
); );
} }
var customMatchers = const customMatchers =
runnableResources[currentRunnable().id].customMatchers; runnableResources[currentRunnable().id].customMatchers;
for (var matcherName in matchersToAdd) { for (const matcherName in matchersToAdd) {
customMatchers[matcherName] = matchersToAdd[matcherName]; customMatchers[matcherName] = matchersToAdd[matcherName];
} }
}; };
@@ -275,10 +280,10 @@ getJasmineRequireObj().Env = function(j$) {
'Async Matchers must be added in a before function or a spec' 'Async Matchers must be added in a before function or a spec'
); );
} }
var customAsyncMatchers = const customAsyncMatchers =
runnableResources[currentRunnable().id].customAsyncMatchers; runnableResources[currentRunnable().id].customAsyncMatchers;
for (var matcherName in matchersToAdd) { for (const matcherName in matchersToAdd) {
customAsyncMatchers[matcherName] = matchersToAdd[matcherName]; customAsyncMatchers[matcherName] = matchersToAdd[matcherName];
} }
}; };
@@ -298,23 +303,25 @@ getJasmineRequireObj().Env = function(j$) {
j$.Expectation.addCoreMatchers(j$.matchers); j$.Expectation.addCoreMatchers(j$.matchers);
j$.Expectation.addAsyncCoreMatchers(j$.asyncMatchers); j$.Expectation.addAsyncCoreMatchers(j$.asyncMatchers);
var nextSpecId = 0; let nextSpecId = 0;
var getNextSpecId = function() {
function getNextSpecId() {
return 'spec' + nextSpecId++; return 'spec' + nextSpecId++;
}; }
var nextSuiteId = 0; let nextSuiteId = 0;
var getNextSuiteId = function() {
function getNextSuiteId() {
return 'suite' + nextSuiteId++; return 'suite' + nextSuiteId++;
}; }
var makePrettyPrinter = function() { function makePrettyPrinter() {
var customObjectFormatters = const customObjectFormatters =
runnableResources[currentRunnable().id].customObjectFormatters; runnableResources[currentRunnable().id].customObjectFormatters;
return j$.makePrettyPrinter(customObjectFormatters); return j$.makePrettyPrinter(customObjectFormatters);
}; }
var makeMatchersUtil = function() { function makeMatchersUtil() {
const cr = currentRunnable(); const cr = currentRunnable();
if (cr) { if (cr) {
@@ -327,7 +334,7 @@ getJasmineRequireObj().Env = function(j$) {
} else { } else {
return new j$.MatchersUtil({ pp: j$.basicPrettyPrinter_ }); return new j$.MatchersUtil({ pp: j$.basicPrettyPrinter_ });
} }
}; }
const expectationFactory = function(actual, spec) { const expectationFactory = function(actual, spec) {
return j$.Expectation.factory({ return j$.Expectation.factory({
@@ -360,7 +367,7 @@ getJasmineRequireObj().Env = function(j$) {
} }
function recordLateExpectation(runable, runableType, result) { function recordLateExpectation(runable, runableType, result) {
var delayedExpectationResult = {}; const delayedExpectationResult = {};
Object.keys(result).forEach(function(k) { Object.keys(result).forEach(function(k) {
delayedExpectationResult[k] = result[k]; delayedExpectationResult[k] = result[k];
}); });
@@ -430,8 +437,8 @@ getJasmineRequireObj().Env = function(j$) {
return asyncExpectationFactory(actual, suite, 'Spec'); return asyncExpectationFactory(actual, suite, 'Spec');
}; };
var defaultResourcesForRunnable = function(id, parentRunnableId) { function defaultResourcesForRunnable(id, parentRunnableId) {
var resources = { const resources = {
spies: [], spies: [],
customEqualityTesters: [], customEqualityTesters: [],
customMatchers: {}, customMatchers: {},
@@ -462,16 +469,16 @@ getJasmineRequireObj().Env = function(j$) {
} }
runnableResources[id] = resources; runnableResources[id] = resources;
}; }
var clearResourcesForRunnable = function(id) { function clearResourcesForRunnable(id) {
spyRegistry.clearSpies(); spyRegistry.clearSpies();
delete runnableResources[id]; delete runnableResources[id];
}; }
var beforeAndAfterFns = function(targetSuite) { function beforeAndAfterFns(targetSuite) {
return function() { return function() {
var befores = [], let befores = [],
afters = [], afters = [],
suite = targetSuite; suite = targetSuite;
@@ -487,17 +494,17 @@ getJasmineRequireObj().Env = function(j$) {
afters: afters afters: afters
}; };
}; };
}; }
var getSpecName = function(spec, suite) { function getSpecName(spec, suite) {
var fullName = [spec.description], const fullName = [spec.description],
suiteFullName = suite.getFullName(); suiteFullName = suite.getFullName();
if (suiteFullName !== '') { if (suiteFullName !== '') {
fullName.unshift(suiteFullName); fullName.unshift(suiteFullName);
} }
return fullName.join(' '); return fullName.join(' ');
}; }
/** /**
* Causes a deprecation warning to be logged to the console and reported to * Causes a deprecation warning to be logged to the console and reported to
@@ -522,11 +529,11 @@ getJasmineRequireObj().Env = function(j$) {
* @param {Object} [options] Optional extra options, as described above * @param {Object} [options] Optional extra options, as described above
*/ */
this.deprecated = function(deprecation, options) { this.deprecated = function(deprecation, options) {
var runnable = currentRunnable() || topSuite; const runnable = currentRunnable() || topSuite;
deprecator.addDeprecationWarning(runnable, deprecation, options); deprecator.addDeprecationWarning(runnable, deprecation, options);
}; };
var queueRunnerFactory = function(options, args) { function queueRunnerFactory(options, args) {
if (options.isLeaf) { if (options.isLeaf) {
// A spec // A spec
options.SkipPolicy = j$.CompleteOnFirstErrorSkipPolicy; options.SkipPolicy = j$.CompleteOnFirstErrorSkipPolicy;
@@ -557,9 +564,9 @@ getJasmineRequireObj().Env = function(j$) {
options.deprecated = self.deprecated; options.deprecated = self.deprecated;
new j$.QueueRunner(options).execute(args); new j$.QueueRunner(options).execute(args);
}; }
var topSuite = new j$.Suite({ topSuite = new j$.Suite({
id: getNextSuiteId(), id: getNextSuiteId(),
description: 'Jasmine__TopLevel__Suite', description: 'Jasmine__TopLevel__Suite',
expectationFactory: expectationFactory, expectationFactory: expectationFactory,
@@ -567,7 +574,7 @@ getJasmineRequireObj().Env = function(j$) {
autoCleanClosures: config.autoCleanClosures, autoCleanClosures: config.autoCleanClosures,
onLateError: recordLateError onLateError: recordLateError
}); });
var deprecator = new j$.Deprecator(topSuite); deprecator = new j$.Deprecator(topSuite);
currentDeclarationSuite = topSuite; currentDeclarationSuite = topSuite;
/** /**
@@ -587,7 +594,7 @@ getJasmineRequireObj().Env = function(j$) {
* @interface Reporter * @interface Reporter
* @see custom_reporter * @see custom_reporter
*/ */
var reporter = new j$.ReportDispatcher( reporter = new j$.ReportDispatcher(
[ [
/** /**
* `jasmineStarted` is called after all of the specs have been loaded, but just before execution starts. * `jasmineStarted` is called after all of the specs have been loaded, but just before execution starts.
@@ -705,12 +712,12 @@ getJasmineRequireObj().Env = function(j$) {
} }
} }
var order = new j$.Order({ const order = new j$.Order({
random: config.random, random: config.random,
seed: config.seed seed: config.seed
}); });
var processor = new j$.TreeProcessor({ const processor = new j$.TreeProcessor({
tree: topSuite, tree: topSuite,
runnableIds: runnablesToRun, runnableIds: runnablesToRun,
queueRunnerFactory: queueRunnerFactory, queueRunnerFactory: queueRunnerFactory,
@@ -756,7 +763,7 @@ getJasmineRequireObj().Env = function(j$) {
); );
} }
var jasmineTimer = new j$.Timer(); const jasmineTimer = new j$.Timer();
jasmineTimer.start(); jasmineTimer.start();
return new Promise(function(resolve) { return new Promise(function(resolve) {
@@ -793,7 +800,7 @@ getJasmineRequireObj().Env = function(j$) {
clearResourcesForRunnable(topSuite.id); clearResourcesForRunnable(topSuite.id);
currentlyExecutingSuites.pop(); currentlyExecutingSuites.pop();
var overallStatus, incompleteReason; let overallStatus, incompleteReason;
if ( if (
hasFailures || hasFailures ||
@@ -915,9 +922,9 @@ getJasmineRequireObj().Env = function(j$) {
reporter.clearReporters(); reporter.clearReporters();
}; };
var spyFactory = new j$.SpyFactory( const spyFactory = new j$.SpyFactory(
function getCustomStrategies() { function getCustomStrategies() {
var runnable = currentRunnable(); const runnable = currentRunnable();
if (runnable) { if (runnable) {
return runnableResources[runnable.id].customSpyStrategies; return runnableResources[runnable.id].customSpyStrategies;
@@ -926,7 +933,7 @@ getJasmineRequireObj().Env = function(j$) {
return {}; return {};
}, },
function getDefaultStrategyFn() { function getDefaultStrategyFn() {
var runnable = currentRunnable(); const runnable = currentRunnable();
if (runnable) { if (runnable) {
return runnableResources[runnable.id].defaultStrategyFn; return runnableResources[runnable.id].defaultStrategyFn;
@@ -937,7 +944,7 @@ getJasmineRequireObj().Env = function(j$) {
makeMatchersUtil makeMatchersUtil
); );
var spyRegistry = new j$.SpyRegistry({ spyRegistry = new j$.SpyRegistry({
currentSpies: function() { currentSpies: function() {
if (!currentRunnable()) { if (!currentRunnable()) {
throw new Error( throw new Error(
@@ -989,24 +996,24 @@ getJasmineRequireObj().Env = function(j$) {
return spyFactory.createSpyObj(baseName, methodNames, propertyNames); return spyFactory.createSpyObj(baseName, methodNames, propertyNames);
}; };
var ensureIsFunction = function(fn, caller) { function ensureIsFunction(fn, caller) {
if (!j$.isFunction_(fn)) { if (!j$.isFunction_(fn)) {
throw new Error( throw new Error(
caller + ' expects a function argument; received ' + j$.getType_(fn) caller + ' expects a function argument; received ' + j$.getType_(fn)
); );
} }
}; }
var ensureIsFunctionOrAsync = function(fn, caller) { function ensureIsFunctionOrAsync(fn, caller) {
if (!j$.isFunction_(fn) && !j$.isAsyncFunction_(fn)) { if (!j$.isFunction_(fn) && !j$.isAsyncFunction_(fn)) {
throw new Error( throw new Error(
caller + ' expects a function argument; received ' + j$.getType_(fn) caller + ' expects a function argument; received ' + j$.getType_(fn)
); );
} }
}; }
function ensureIsNotNested(method) { function ensureIsNotNested(method) {
var runnable = currentRunnable(); const runnable = currentRunnable();
if (runnable !== null && runnable !== undefined) { if (runnable !== null && runnable !== undefined) {
throw new Error( throw new Error(
"'" + method + "' should only be used in 'describe' function" "'" + method + "' should only be used in 'describe' function"
@@ -1014,8 +1021,8 @@ getJasmineRequireObj().Env = function(j$) {
} }
} }
var suiteFactory = function(description) { function suiteFactory(description) {
var suite = new j$.Suite({ return new j$.Suite({
id: getNextSuiteId(), id: getNextSuiteId(),
description: description, description: description,
parentSuite: currentDeclarationSuite, parentSuite: currentDeclarationSuite,
@@ -1026,14 +1033,12 @@ getJasmineRequireObj().Env = function(j$) {
autoCleanClosures: config.autoCleanClosures, autoCleanClosures: config.autoCleanClosures,
onLateError: recordLateError onLateError: recordLateError
}); });
}
return suite;
};
this.describe = function(description, specDefinitions) { this.describe = function(description, specDefinitions) {
ensureIsNotNested('describe'); ensureIsNotNested('describe');
ensureIsFunction(specDefinitions, 'describe'); ensureIsFunction(specDefinitions, 'describe');
var suite = suiteFactory(description); const suite = suiteFactory(description);
if (specDefinitions.length > 0) { if (specDefinitions.length > 0) {
throw new Error('describe does not expect any arguments'); throw new Error('describe does not expect any arguments');
} }
@@ -1053,18 +1058,16 @@ getJasmineRequireObj().Env = function(j$) {
this.xdescribe = function(description, specDefinitions) { this.xdescribe = function(description, specDefinitions) {
ensureIsNotNested('xdescribe'); ensureIsNotNested('xdescribe');
ensureIsFunction(specDefinitions, 'xdescribe'); ensureIsFunction(specDefinitions, 'xdescribe');
var suite = suiteFactory(description); const suite = suiteFactory(description);
suite.exclude(); suite.exclude();
addSpecsToSuite(suite, specDefinitions); addSpecsToSuite(suite, specDefinitions);
return suite.metadata; return suite.metadata;
}; };
var focusedRunnables = [];
this.fdescribe = function(description, specDefinitions) { this.fdescribe = function(description, specDefinitions) {
ensureIsNotNested('fdescribe'); ensureIsNotNested('fdescribe');
ensureIsFunction(specDefinitions, 'fdescribe'); ensureIsFunction(specDefinitions, 'fdescribe');
var suite = suiteFactory(description); const suite = suiteFactory(description);
suite.isFocused = true; suite.isFocused = true;
focusedRunnables.push(suite.id); focusedRunnables.push(suite.id);
@@ -1075,11 +1078,11 @@ getJasmineRequireObj().Env = function(j$) {
}; };
function addSpecsToSuite(suite, specDefinitions) { function addSpecsToSuite(suite, specDefinitions) {
var parentSuite = currentDeclarationSuite; const parentSuite = currentDeclarationSuite;
parentSuite.addChild(suite); parentSuite.addChild(suite);
currentDeclarationSuite = suite; currentDeclarationSuite = suite;
var declarationError = null; let declarationError = null;
try { try {
specDefinitions(); specDefinitions();
} catch (e) { } catch (e) {
@@ -1105,9 +1108,9 @@ getJasmineRequireObj().Env = function(j$) {
} }
function unfocusAncestor() { function unfocusAncestor() {
var focusedAncestor = findFocusedAncestor(currentDeclarationSuite); const focusedAncestor = findFocusedAncestor(currentDeclarationSuite);
if (focusedAncestor) { if (focusedAncestor) {
for (var i = 0; i < focusedRunnables.length; i++) { for (let i = 0; i < focusedRunnables.length; i++) {
if (focusedRunnables[i] === focusedAncestor) { if (focusedRunnables[i] === focusedAncestor) {
focusedRunnables.splice(i, 1); focusedRunnables.splice(i, 1);
break; break;
@@ -1116,9 +1119,9 @@ getJasmineRequireObj().Env = function(j$) {
} }
} }
var specFactory = function(description, fn, suite, timeout) { const specFactory = function(description, fn, suite, timeout) {
totalSpecsDefined++; totalSpecsDefined++;
var spec = new j$.Spec({ const spec = new j$.Spec({
id: getNextSpecId(), id: getNextSpecId(),
beforeAndAfterFns: beforeAndAfterFns(suite), beforeAndAfterFns: beforeAndAfterFns(suite),
expectationFactory: expectationFactory, expectationFactory: expectationFactory,
@@ -1184,7 +1187,12 @@ getJasmineRequireObj().Env = function(j$) {
j$.util.validateTimeout(timeout); j$.util.validateTimeout(timeout);
} }
var spec = specFactory(description, fn, currentDeclarationSuite, timeout); const spec = specFactory(
description,
fn,
currentDeclarationSuite,
timeout
);
if (currentDeclarationSuite.markedExcluding) { if (currentDeclarationSuite.markedExcluding) {
spec.exclude(); spec.exclude();
} }
@@ -1205,7 +1213,7 @@ getJasmineRequireObj().Env = function(j$) {
if (arguments.length > 1 && typeof fn !== 'undefined') { if (arguments.length > 1 && typeof fn !== 'undefined') {
ensureIsFunctionOrAsync(fn, 'xit'); ensureIsFunctionOrAsync(fn, 'xit');
} }
var spec = this.it_.apply(this, arguments); const spec = this.it_.apply(this, arguments);
spec.exclude('Temporarily disabled with xit'); spec.exclude('Temporarily disabled with xit');
return spec.metadata; return spec.metadata;
}; };
@@ -1217,7 +1225,12 @@ getJasmineRequireObj().Env = function(j$) {
if (timeout) { if (timeout) {
j$.util.validateTimeout(timeout); j$.util.validateTimeout(timeout);
} }
var spec = specFactory(description, fn, currentDeclarationSuite, timeout); const spec = specFactory(
description,
fn,
currentDeclarationSuite,
timeout
);
currentDeclarationSuite.addChild(spec); currentDeclarationSuite.addChild(spec);
focusedRunnables.push(spec.id); focusedRunnables.push(spec.id);
unfocusAncestor(); unfocusAncestor();
@@ -1259,7 +1272,7 @@ getJasmineRequireObj().Env = function(j$) {
}; };
this.debugLog = function(msg) { this.debugLog = function(msg) {
var maybeSpec = currentRunnable(); const maybeSpec = currentRunnable();
if (!maybeSpec || !maybeSpec.debugLog) { if (!maybeSpec || !maybeSpec.debugLog) {
throw new Error("'debugLog' was called when there was no current spec"); throw new Error("'debugLog' was called when there was no current spec");
@@ -1346,7 +1359,7 @@ getJasmineRequireObj().Env = function(j$) {
}; };
this.pending = function(message) { this.pending = function(message) {
var fullMessage = j$.Spec.pendingSpecExceptionMessage; let fullMessage = j$.Spec.pendingSpecExceptionMessage;
if (message) { if (message) {
fullMessage += message; fullMessage += message;
} }
@@ -1360,7 +1373,7 @@ getJasmineRequireObj().Env = function(j$) {
); );
} }
var message = 'Failed'; let message = 'Failed';
if (error) { if (error) {
message += ': '; message += ': ';
if (error.message) { if (error.message) {

View File

@@ -22,15 +22,13 @@ getJasmineRequireObj().ExpectationFilterChain = function() {
}; };
ExpectationFilterChain.prototype.modifyFailureMessage = function(msg) { ExpectationFilterChain.prototype.modifyFailureMessage = function(msg) {
var result = this.callFirst_('modifyFailureMessage', arguments).result; const result = this.callFirst_('modifyFailureMessage', arguments).result;
return result || msg; return result || msg;
}; };
ExpectationFilterChain.prototype.callFirst_ = function(fname, args) { ExpectationFilterChain.prototype.callFirst_ = function(fname, args) {
var prevResult;
if (this.prev_) { if (this.prev_) {
prevResult = this.prev_.callFirst_(fname, args); const prevResult = this.prev_.callFirst_(fname, args);
if (prevResult.found) { if (prevResult.found) {
return prevResult; return prevResult;

View File

@@ -19,20 +19,20 @@ getJasmineRequireObj().Expector = function(j$) {
this.args.unshift(this.actual); this.args.unshift(this.actual);
var matcher = matcherFactory(this.matchersUtil); const matcher = matcherFactory(this.matchersUtil);
var comparisonFunc = this.filters.selectComparisonFunc(matcher); const comparisonFunc = this.filters.selectComparisonFunc(matcher);
return comparisonFunc || matcher.compare; return comparisonFunc || matcher.compare;
}; };
Expector.prototype.buildMessage = function(result) { Expector.prototype.buildMessage = function(result) {
var self = this; const self = this;
if (result.pass) { if (result.pass) {
return ''; return '';
} }
var msg = this.filters.buildFailureMessage( const msg = this.filters.buildFailureMessage(
result, result,
this.matcherName, this.matcherName,
this.args, this.args,
@@ -43,7 +43,7 @@ getJasmineRequireObj().Expector = function(j$) {
function defaultMessage() { function defaultMessage() {
if (!result.message) { if (!result.message) {
var args = self.args.slice(); const args = self.args.slice();
args.unshift(false); args.unshift(false);
args.unshift(self.matcherName); args.unshift(self.matcherName);
return self.matchersUtil.buildFailureMessage.apply( return self.matchersUtil.buildFailureMessage.apply(
@@ -59,7 +59,7 @@ getJasmineRequireObj().Expector = function(j$) {
}; };
Expector.prototype.compare = function(matcherName, matcherFactory, args) { Expector.prototype.compare = function(matcherName, matcherFactory, args) {
var matcherCompare = this.instantiateMatcher( const matcherCompare = this.instantiateMatcher(
matcherName, matcherName,
matcherFactory, matcherFactory,
args args
@@ -68,13 +68,13 @@ getJasmineRequireObj().Expector = function(j$) {
}; };
Expector.prototype.addFilter = function(filter) { Expector.prototype.addFilter = function(filter) {
var result = Object.create(this); const result = Object.create(this);
result.filters = this.filters.addFilter(filter); result.filters = this.filters.addFilter(filter);
return result; return result;
}; };
Expector.prototype.processResult = function(result, errorForStack) { Expector.prototype.processResult = function(result, errorForStack) {
var message = this.buildMessage(result); const message = this.buildMessage(result);
if (this.expected.length === 1) { if (this.expected.length === 1) {
this.expected = this.expected[0]; this.expected = this.expected[0];

View File

@@ -1,10 +1,10 @@
getJasmineRequireObj().GlobalErrors = function(j$) { getJasmineRequireObj().GlobalErrors = function(j$) {
function GlobalErrors(global) { function GlobalErrors(global) {
var handlers = []; const handlers = [];
global = global || j$.getGlobal(); global = global || j$.getGlobal();
var onerror = function onerror() { const onerror = function onerror() {
var handler = handlers[handlers.length - 1]; const handler = handlers[handlers.length - 1];
if (handler) { if (handler) {
handler.apply(null, Array.prototype.slice.call(arguments, 0)); handler.apply(null, Array.prototype.slice.call(arguments, 0));
@@ -17,11 +17,11 @@ getJasmineRequireObj().GlobalErrors = function(j$) {
this.jasmineHandlers = {}; this.jasmineHandlers = {};
this.installOne_ = function installOne_(errorType, jasmineMessage) { this.installOne_ = function installOne_(errorType, jasmineMessage) {
function taggedOnError(error) { function taggedOnError(error) {
var substituteMsg;
if (j$.isError_(error)) { if (j$.isError_(error)) {
error.jasmineMessage = jasmineMessage + ': ' + error; error.jasmineMessage = jasmineMessage + ': ' + error;
} else { } else {
let substituteMsg;
if (error) { if (error) {
substituteMsg = jasmineMessage + ': ' + error; substituteMsg = jasmineMessage + ': ' + error;
} else { } else {
@@ -40,7 +40,7 @@ getJasmineRequireObj().GlobalErrors = function(j$) {
error = new Error(substituteMsg); error = new Error(substituteMsg);
} }
var handler = handlers[handlers.length - 1]; const handler = handlers[handlers.length - 1];
if (handler) { if (handler) {
handler(error); handler(error);
@@ -56,14 +56,14 @@ getJasmineRequireObj().GlobalErrors = function(j$) {
global.process.on(errorType, taggedOnError); global.process.on(errorType, taggedOnError);
this.uninstall = function uninstall() { this.uninstall = function uninstall() {
var errorTypes = Object.keys(this.originalHandlers); const errorTypes = Object.keys(this.originalHandlers);
for (var iType = 0; iType < errorTypes.length; iType++) { for (const errorType of errorTypes) {
var errorType = errorTypes[iType];
global.process.removeListener( global.process.removeListener(
errorType, errorType,
this.jasmineHandlers[errorType] this.jasmineHandlers[errorType]
); );
for (var i = 0; i < this.originalHandlers[errorType].length; i++) {
for (let i = 0; i < this.originalHandlers[errorType].length; i++) {
global.process.on(errorType, this.originalHandlers[errorType][i]); global.process.on(errorType, this.originalHandlers[errorType][i]);
} }
delete this.originalHandlers[errorType]; delete this.originalHandlers[errorType];
@@ -81,10 +81,12 @@ getJasmineRequireObj().GlobalErrors = function(j$) {
this.installOne_('uncaughtException', 'Uncaught exception'); this.installOne_('uncaughtException', 'Uncaught exception');
this.installOne_('unhandledRejection', 'Unhandled promise rejection'); this.installOne_('unhandledRejection', 'Unhandled promise rejection');
} else { } else {
var originalHandler = global.onerror; const originalHandler = global.onerror;
global.onerror = onerror; global.onerror = onerror;
var browserRejectionHandler = function browserRejectionHandler(event) { const browserRejectionHandler = function browserRejectionHandler(
event
) {
if (j$.isError_(event.reason)) { if (j$.isError_(event.reason)) {
event.reason.jasmineMessage = event.reason.jasmineMessage =
'Unhandled promise rejection: ' + event.reason; 'Unhandled promise rejection: ' + event.reason;

View File

@@ -6,8 +6,8 @@ getJasmineRequireObj().JsApiReporter = function(j$) {
* @hideconstructor * @hideconstructor
*/ */
function JsApiReporter(options) { function JsApiReporter(options) {
var timer = options.timer || new j$.Timer(), const timer = options.timer || new j$.Timer();
status = 'loaded'; let status = 'loaded';
this.started = false; this.started = false;
this.finished = false; this.finished = false;
@@ -19,7 +19,7 @@ getJasmineRequireObj().JsApiReporter = function(j$) {
timer.start(); timer.start();
}; };
var executionTime; let executionTime;
this.jasmineDone = function(runDetails) { this.jasmineDone = function(runDetails) {
this.finished = true; this.finished = true;
@@ -39,7 +39,7 @@ getJasmineRequireObj().JsApiReporter = function(j$) {
return status; return status;
}; };
var suites = [], const suites = [],
suites_hash = {}; suites_hash = {};
this.suiteStarted = function(result) { this.suiteStarted = function(result) {
@@ -81,7 +81,7 @@ getJasmineRequireObj().JsApiReporter = function(j$) {
return suites_hash; return suites_hash;
}; };
var specs = []; const specs = [];
this.specDone = function(result) { this.specDone = function(result) {
specs.push(result); specs.push(result);

View File

@@ -1,7 +1,7 @@
getJasmineRequireObj().MockDate = function(j$) { getJasmineRequireObj().MockDate = function(j$) {
function MockDate(global) { function MockDate(global) {
var self = this; const self = this;
var currentTime = 0; let currentTime = 0;
if (!global || !global.Date) { if (!global || !global.Date) {
self.install = function() {}; self.install = function() {};
@@ -10,7 +10,7 @@ getJasmineRequireObj().MockDate = function(j$) {
return self; return self;
} }
var GlobalDate = global.Date; const GlobalDate = global.Date;
self.install = function(mockDate) { self.install = function(mockDate) {
if (mockDate instanceof GlobalDate) { if (mockDate instanceof GlobalDate) {

View File

@@ -1,7 +1,7 @@
getJasmineRequireObj().Order = function() { getJasmineRequireObj().Order = function() {
function Order(options) { function Order(options) {
this.random = 'random' in options ? options.random : true; this.random = 'random' in options ? options.random : true;
var seed = (this.seed = options.seed || generateSeed()); const seed = (this.seed = options.seed || generateSeed());
this.sort = this.random ? randomOrder : naturalOrder; this.sort = this.random ? randomOrder : naturalOrder;
function naturalOrder(items) { function naturalOrder(items) {
@@ -9,7 +9,7 @@ getJasmineRequireObj().Order = function() {
} }
function randomOrder(items) { function randomOrder(items) {
var copy = items.slice(); const copy = items.slice();
copy.sort(function(a, b) { copy.sort(function(a, b) {
return jenkinsHash(seed + a.id) - jenkinsHash(seed + b.id); return jenkinsHash(seed + a.id) - jenkinsHash(seed + b.id);
}); });
@@ -26,7 +26,7 @@ getJasmineRequireObj().Order = function() {
// used in conjunction with a seed // used in conjunction with a seed
function jenkinsHash(key) { function jenkinsHash(key) {
var hash, i; let hash, i;
for (hash = i = 0; i < key.length; ++i) { for (hash = i = 0; i < key.length; ++i) {
hash += key.charCodeAt(i); hash += key.charCodeAt(i);
hash += hash << 10; hash += hash << 10;

View File

@@ -1,12 +1,12 @@
getJasmineRequireObj().QueueRunner = function(j$) { getJasmineRequireObj().QueueRunner = function(j$) {
var nextid = 1; let nextid = 1;
function StopExecutionError() {} function StopExecutionError() {}
StopExecutionError.prototype = new Error(); StopExecutionError.prototype = new Error();
j$.StopExecutionError = StopExecutionError; j$.StopExecutionError = StopExecutionError;
function once(fn, onTwice) { function once(fn, onTwice) {
var called = false; let called = false;
return function(arg) { return function(arg) {
if (called) { if (called) {
if (onTwice) { if (onTwice) {
@@ -66,7 +66,7 @@ getJasmineRequireObj().QueueRunner = function(j$) {
} }
QueueRunner.prototype.execute = function() { QueueRunner.prototype.execute = function() {
var self = this; const self = this;
this.handleFinalError = function(message, source, lineno, colno, error) { this.handleFinalError = function(message, source, lineno, colno, error) {
// Older browsers would send the error as the first parameter. HTML5 // Older browsers would send the error as the first parameter. HTML5
// specifies the the five parameters above. The error instance should // specifies the the five parameters above. The error instance should
@@ -92,57 +92,57 @@ getJasmineRequireObj().QueueRunner = function(j$) {
}; };
QueueRunner.prototype.attempt = function attempt(iterativeIndex) { QueueRunner.prototype.attempt = function attempt(iterativeIndex) {
var self = this, let timeoutId;
completedSynchronously = true, let timedOut;
handleError = function handleError(error) { const self = this;
// TODO probably shouldn't next() right away here. let completedSynchronously = true;
// That makes debugging async failures much more confusing. function handleError(error) {
onException(error); // TODO probably shouldn't next() right away here.
// That makes debugging async failures much more confusing.
onException(error);
}
const cleanup = once(function cleanup() {
if (timeoutId !== void 0) {
self.clearTimeout(timeoutId);
}
self.globalErrors.popListener(handleError);
});
const next = once(
function next(err) {
cleanup();
if (typeof err !== 'undefined') {
if (!(err instanceof StopExecutionError) && !err.jasmineMessage) {
self.fail(err);
}
self.recordError_(iterativeIndex);
}
function runNext() {
self.run(self.nextFnIx_(iterativeIndex));
}
if (completedSynchronously) {
self.setTimeout(runNext);
} else {
runNext();
}
}, },
cleanup = once(function cleanup() { function() {
if (timeoutId !== void 0) { try {
self.clearTimeout(timeoutId); if (!timedOut) {
self.onMultipleDone();
}
} catch (error) {
// Any error we catch here is probably due to a bug in Jasmine,
// and it's not likely to end up anywhere useful if we let it
// propagate. Log it so it can at least show up when debugging.
console.error(error);
} }
self.globalErrors.popListener(handleError); }
}), );
next = once( timedOut = false;
function next(err) { const queueableFn = self.queueableFns[iterativeIndex];
cleanup();
if (typeof err !== 'undefined') {
if (!(err instanceof StopExecutionError) && !err.jasmineMessage) {
self.fail(err);
}
self.recordError_(iterativeIndex);
}
function runNext() {
self.run(self.nextFnIx_(iterativeIndex));
}
if (completedSynchronously) {
self.setTimeout(runNext);
} else {
runNext();
}
},
function() {
try {
if (!timedOut) {
self.onMultipleDone();
}
} catch (error) {
// Any error we catch here is probably due to a bug in Jasmine,
// and it's not likely to end up anywhere useful if we let it
// propagate. Log it so it can at least show up when debugging.
console.error(error);
}
}
),
timedOut = false,
queueableFn = self.queueableFns[iterativeIndex],
timeoutId,
maybeThenable;
next.fail = function nextFail() { next.fail = function nextFail() {
self.fail.apply(null, arguments); self.fail.apply(null, arguments);
@@ -153,10 +153,11 @@ getJasmineRequireObj().QueueRunner = function(j$) {
self.globalErrors.pushListener(handleError); self.globalErrors.pushListener(handleError);
if (queueableFn.timeout !== undefined) { if (queueableFn.timeout !== undefined) {
var timeoutInterval = queueableFn.timeout || j$.DEFAULT_TIMEOUT_INTERVAL; const timeoutInterval =
queueableFn.timeout || j$.DEFAULT_TIMEOUT_INTERVAL;
timeoutId = self.setTimeout(function() { timeoutId = self.setTimeout(function() {
timedOut = true; timedOut = true;
var error = new Error( const error = new Error(
'Timeout - Async function did not complete within ' + 'Timeout - Async function did not complete within ' +
timeoutInterval + timeoutInterval +
'ms ' + 'ms ' +
@@ -173,6 +174,8 @@ getJasmineRequireObj().QueueRunner = function(j$) {
} }
try { try {
let maybeThenable;
if (queueableFn.fn.length === 0) { if (queueableFn.fn.length === 0) {
maybeThenable = queueableFn.fn.call(self.userContext); maybeThenable = queueableFn.fn.call(self.userContext);
@@ -210,16 +213,15 @@ getJasmineRequireObj().QueueRunner = function(j$) {
}; };
QueueRunner.prototype.run = function(recursiveIndex) { QueueRunner.prototype.run = function(recursiveIndex) {
var length = this.queueableFns.length, const length = this.queueableFns.length;
self = this, const self = this;
iterativeIndex;
for ( for (
iterativeIndex = recursiveIndex; let iterativeIndex = recursiveIndex;
iterativeIndex < length; iterativeIndex < length;
iterativeIndex = this.nextFnIx_(iterativeIndex) iterativeIndex = this.nextFnIx_(iterativeIndex)
) { ) {
var result = this.attempt(iterativeIndex); const result = this.attempt(iterativeIndex);
if (!result.completedSynchronously) { if (!result.completedSynchronously) {
return; return;

View File

@@ -1,9 +1,8 @@
getJasmineRequireObj().ReportDispatcher = function(j$) { getJasmineRequireObj().ReportDispatcher = function(j$) {
function ReportDispatcher(methods, queueRunnerFactory, onLateError) { function ReportDispatcher(methods, queueRunnerFactory, onLateError) {
var dispatchedMethods = methods || []; const dispatchedMethods = methods || [];
for (var i = 0; i < dispatchedMethods.length; i++) { for (const method of dispatchedMethods) {
var method = dispatchedMethods[i];
this[method] = (function(m) { this[method] = (function(m) {
return function() { return function() {
dispatch(m, arguments); dispatch(m, arguments);
@@ -11,8 +10,8 @@ getJasmineRequireObj().ReportDispatcher = function(j$) {
})(method); })(method);
} }
var reporters = []; let reporters = [];
var fallbackReporter = null; let fallbackReporter = null;
this.addReporter = function(reporter) { this.addReporter = function(reporter) {
reporters.push(reporter); reporters.push(reporter);
@@ -32,11 +31,10 @@ getJasmineRequireObj().ReportDispatcher = function(j$) {
if (reporters.length === 0 && fallbackReporter !== null) { if (reporters.length === 0 && fallbackReporter !== null) {
reporters.push(fallbackReporter); reporters.push(fallbackReporter);
} }
var onComplete = args[args.length - 1]; const onComplete = args[args.length - 1];
args = j$.util.argsToArray(args).splice(0, args.length - 1); args = j$.util.argsToArray(args).splice(0, args.length - 1);
var fns = []; const fns = [];
for (var i = 0; i < reporters.length; i++) { for (const reporter of reporters) {
var reporter = reporters[i];
addFn(fns, reporter, method, args); addFn(fns, reporter, method, args);
} }
@@ -56,12 +54,12 @@ getJasmineRequireObj().ReportDispatcher = function(j$) {
} }
function addFn(fns, reporter, method, args) { function addFn(fns, reporter, method, args) {
var fn = reporter[method]; const fn = reporter[method];
if (!fn) { if (!fn) {
return; return;
} }
var thisArgs = j$.util.cloneArgs(args); const thisArgs = j$.util.cloneArgs(args);
if (fn.length <= 1) { if (fn.length <= 1) {
fns.push({ fns.push({
fn: function() { fn: function() {

View File

@@ -100,16 +100,16 @@ getJasmineRequireObj().Spec = function(j$) {
}; };
Spec.prototype.execute = function(onComplete, excluded, failSpecWithNoExp) { Spec.prototype.execute = function(onComplete, excluded, failSpecWithNoExp) {
var self = this; const self = this;
var onStart = { const onStart = {
fn: function(done) { fn: function(done) {
self.timer.start(); self.timer.start();
self.onStart(self, done); self.onStart(self, done);
} }
}; };
var complete = { const complete = {
fn: function(done) { fn: function(done) {
if (self.autoCleanClosures) { if (self.autoCleanClosures) {
self.queueableFn.fn = null; self.queueableFn.fn = null;
@@ -126,9 +126,9 @@ getJasmineRequireObj().Spec = function(j$) {
type: 'specCleanup' type: 'specCleanup'
}; };
var fns = this.beforeAndAfterFns(); const fns = this.beforeAndAfterFns();
var runnerConfig = { const runnerConfig = {
isLeaf: true, isLeaf: true,
queueableFns: [...fns.befores, this.queueableFn, ...fns.afters], queueableFns: [...fns.befores, this.queueableFn, ...fns.afters],
onException: function() { onException: function() {
@@ -289,8 +289,8 @@ getJasmineRequireObj().Spec = function(j$) {
}); });
}; };
var extractCustomPendingMessage = function(e) { const extractCustomPendingMessage = function(e) {
var fullMessage = e.toString(), const fullMessage = e.toString(),
boilerplateStart = fullMessage.indexOf(Spec.pendingSpecExceptionMessage), boilerplateStart = fullMessage.indexOf(Spec.pendingSpecExceptionMessage),
boilerplateEnd = boilerplateEnd =
boilerplateStart + Spec.pendingSpecExceptionMessage.length; boilerplateStart + Spec.pendingSpecExceptionMessage.length;

View File

@@ -1,6 +1,6 @@
getJasmineRequireObj().Spy = function(j$) { getJasmineRequireObj().Spy = function(j$) {
var nextOrder = (function() { const nextOrder = (function() {
var order = 0; let order = 0;
return function() { return function() {
return order++; return order++;
@@ -15,9 +15,29 @@ getJasmineRequireObj().Spy = function(j$) {
* @hideconstructor * @hideconstructor
*/ */
function Spy(name, matchersUtil, optionals) { function Spy(name, matchersUtil, optionals) {
const spy = function(context, args, invokeNew) {
/**
* @name Spy.callData
* @property {object} object - `this` context for the invocation.
* @property {number} invocationOrder - Order of the invocation.
* @property {Array} args - The arguments passed for this invocation.
* @property returnValue - The value that was returned from this invocation.
*/
const callData = {
object: context,
invocationOrder: nextOrder(),
args: Array.prototype.slice.apply(args)
};
callTracker.track(callData);
const returnValue = strategyDispatcher.exec(context, args, invokeNew);
callData.returnValue = returnValue;
return returnValue;
};
const { originalFn, customStrategies, defaultStrategyFn } = optionals || {}; const { originalFn, customStrategies, defaultStrategyFn } = optionals || {};
var numArgs = typeof originalFn === 'function' ? originalFn.length : 0, const numArgs = typeof originalFn === 'function' ? originalFn.length : 0,
wrapper = makeFunc(numArgs, function(context, args, invokeNew) { wrapper = makeFunc(numArgs, function(context, args, invokeNew) {
return spy(context, args, invokeNew); return spy(context, args, invokeNew);
}), }),
@@ -32,27 +52,7 @@ getJasmineRequireObj().Spy = function(j$) {
}, },
matchersUtil matchersUtil
), ),
callTracker = new j$.CallTracker(), callTracker = new j$.CallTracker();
spy = function(context, args, invokeNew) {
/**
* @name Spy.callData
* @property {object} object - `this` context for the invocation.
* @property {number} invocationOrder - Order of the invocation.
* @property {Array} args - The arguments passed for this invocation.
* @property returnValue - The value that was returned from this invocation.
*/
var callData = {
object: context,
invocationOrder: nextOrder(),
args: Array.prototype.slice.apply(args)
};
callTracker.track(callData);
var returnValue = strategyDispatcher.exec(context, args, invokeNew);
callData.returnValue = returnValue;
return returnValue;
};
function makeFunc(length, fn) { function makeFunc(length, fn) {
switch (length) { switch (length) {
@@ -99,7 +99,7 @@ getJasmineRequireObj().Spy = function(j$) {
} }
} }
for (var prop in originalFn) { for (const prop in originalFn) {
if (prop === 'and' || prop === 'calls') { if (prop === 'and' || prop === 'calls') {
throw new Error( throw new Error(
"Jasmine spies would overwrite the 'and' and 'calls' properties on the object being spied upon" "Jasmine spies would overwrite the 'and' and 'calls' properties on the object being spied upon"
@@ -144,15 +144,15 @@ getJasmineRequireObj().Spy = function(j$) {
} }
function SpyStrategyDispatcher(strategyArgs, matchersUtil) { function SpyStrategyDispatcher(strategyArgs, matchersUtil) {
var baseStrategy = new j$.SpyStrategy(strategyArgs); const baseStrategy = new j$.SpyStrategy(strategyArgs);
var argsStrategies = new StrategyDict(function() { const argsStrategies = new StrategyDict(function() {
return new j$.SpyStrategy(strategyArgs); return new j$.SpyStrategy(strategyArgs);
}, matchersUtil); }, matchersUtil);
this.and = baseStrategy; this.and = baseStrategy;
this.exec = function(spy, args, invokeNew) { this.exec = function(spy, args, invokeNew) {
var strategy = argsStrategies.get(args); let strategy = argsStrategies.get(args);
if (!strategy) { if (!strategy) {
if (argsStrategies.any() && !baseStrategy.isConfigured()) { if (argsStrategies.any() && !baseStrategy.isConfigured()) {
@@ -187,7 +187,7 @@ getJasmineRequireObj().Spy = function(j$) {
}; };
StrategyDict.prototype.getOrCreate = function(args) { StrategyDict.prototype.getOrCreate = function(args) {
var strategy = this.get(args); let strategy = this.get(args);
if (!strategy) { if (!strategy) {
strategy = this.strategyFactory(); strategy = this.strategyFactory();
@@ -201,9 +201,7 @@ getJasmineRequireObj().Spy = function(j$) {
}; };
StrategyDict.prototype.get = function(args) { StrategyDict.prototype.get = function(args) {
var i; for (let i = 0; i < this.strategies.length; i++) {
for (i = 0; i < this.strategies.length; i++) {
if (this.matchersUtil.equals(args, this.strategies[i].args)) { if (this.matchersUtil.equals(args, this.strategies[i].args)) {
return this.strategies[i].strategy; return this.strategies[i].strategy;
} }

View File

@@ -4,7 +4,7 @@ getJasmineRequireObj().SpyFactory = function(j$) {
getDefaultStrategyFn, getDefaultStrategyFn,
getMatchersUtil getMatchersUtil
) { ) {
var self = this; const self = this;
this.createSpy = function(name, originalFn) { this.createSpy = function(name, originalFn) {
return j$.Spy(name, getMatchersUtil(), { return j$.Spy(name, getMatchersUtil(), {
@@ -15,7 +15,7 @@ getJasmineRequireObj().SpyFactory = function(j$) {
}; };
this.createSpyObj = function(baseName, methodNames, propertyNames) { this.createSpyObj = function(baseName, methodNames, propertyNames) {
var baseNameIsCollection = const baseNameIsCollection =
j$.isObject_(baseName) || j$.isArray_(baseName); j$.isObject_(baseName) || j$.isArray_(baseName);
if (baseNameIsCollection) { if (baseNameIsCollection) {
@@ -24,22 +24,21 @@ getJasmineRequireObj().SpyFactory = function(j$) {
baseName = 'unknown'; baseName = 'unknown';
} }
var obj = {}; const obj = {};
var spy, descriptor;
var methods = normalizeKeyValues(methodNames); const methods = normalizeKeyValues(methodNames);
for (var i = 0; i < methods.length; i++) { for (let i = 0; i < methods.length; i++) {
spy = obj[methods[i][0]] = self.createSpy( const spy = (obj[methods[i][0]] = self.createSpy(
baseName + '.' + methods[i][0] baseName + '.' + methods[i][0]
); ));
if (methods[i].length > 1) { if (methods[i].length > 1) {
spy.and.returnValue(methods[i][1]); spy.and.returnValue(methods[i][1]);
} }
} }
var properties = normalizeKeyValues(propertyNames); const properties = normalizeKeyValues(propertyNames);
for (var i = 0; i < properties.length; i++) { for (let i = 0; i < properties.length; i++) {
descriptor = { const descriptor = {
enumerable: true, enumerable: true,
get: self.createSpy(baseName + '.' + properties[i][0] + '.get'), get: self.createSpy(baseName + '.' + properties[i][0] + '.get'),
set: self.createSpy(baseName + '.' + properties[i][0] + '.set') set: self.createSpy(baseName + '.' + properties[i][0] + '.set')
@@ -60,13 +59,13 @@ getJasmineRequireObj().SpyFactory = function(j$) {
} }
function normalizeKeyValues(object) { function normalizeKeyValues(object) {
var result = []; const result = [];
if (j$.isArray_(object)) { if (j$.isArray_(object)) {
for (var i = 0; i < object.length; i++) { for (let i = 0; i < object.length; i++) {
result.push([object[i]]); result.push([object[i]]);
} }
} else if (j$.isObject_(object)) { } else if (j$.isObject_(object)) {
for (var key in object) { for (const key in object) {
if (object.hasOwnProperty(key)) { if (object.hasOwnProperty(key)) {
result.push([key, object[key]]); result.push([key, object[key]]);
} }

View File

@@ -1,15 +1,18 @@
getJasmineRequireObj().SpyRegistry = function(j$) { getJasmineRequireObj().SpyRegistry = function(j$) {
var spyOnMsg = j$.formatErrorMsg('<spyOn>', 'spyOn(<object>, <methodName>)'); const spyOnMsg = j$.formatErrorMsg(
var spyOnPropertyMsg = j$.formatErrorMsg( '<spyOn>',
'spyOn(<object>, <methodName>)'
);
const spyOnPropertyMsg = j$.formatErrorMsg(
'<spyOnProperty>', '<spyOnProperty>',
'spyOnProperty(<object>, <propName>, [accessType])' 'spyOnProperty(<object>, <propName>, [accessType])'
); );
function SpyRegistry(options) { function SpyRegistry(options) {
options = options || {}; options = options || {};
var global = options.global || j$.getGlobal(); const global = options.global || j$.getGlobal();
var createSpy = options.createSpy; const createSpy = options.createSpy;
var currentSpies = const currentSpies =
options.currentSpies || options.currentSpies ||
function() { function() {
return []; return [];
@@ -20,7 +23,7 @@ getJasmineRequireObj().SpyRegistry = function(j$) {
}; };
this.spyOn = function(obj, methodName) { this.spyOn = function(obj, methodName) {
var getErrorMsg = spyOnMsg; const getErrorMsg = spyOnMsg;
if (j$.util.isUndefined(obj) || obj === null) { if (j$.util.isUndefined(obj) || obj === null) {
throw new Error( throw new Error(
@@ -48,7 +51,7 @@ getJasmineRequireObj().SpyRegistry = function(j$) {
} }
} }
var descriptor = Object.getOwnPropertyDescriptor(obj, methodName); const descriptor = Object.getOwnPropertyDescriptor(obj, methodName);
if (descriptor && !(descriptor.writable || descriptor.set)) { if (descriptor && !(descriptor.writable || descriptor.set)) {
throw new Error( throw new Error(
@@ -56,9 +59,9 @@ getJasmineRequireObj().SpyRegistry = function(j$) {
); );
} }
var originalMethod = obj[methodName], const originalMethod = obj[methodName];
spiedMethod = createSpy(methodName, originalMethod), const spiedMethod = createSpy(methodName, originalMethod);
restoreStrategy; let restoreStrategy;
if ( if (
Object.prototype.hasOwnProperty.call(obj, methodName) || Object.prototype.hasOwnProperty.call(obj, methodName) ||
@@ -85,7 +88,7 @@ getJasmineRequireObj().SpyRegistry = function(j$) {
}; };
this.spyOnProperty = function(obj, propertyName, accessType) { this.spyOnProperty = function(obj, propertyName, accessType) {
var getErrorMsg = spyOnPropertyMsg; const getErrorMsg = spyOnPropertyMsg;
accessType = accessType || 'get'; accessType = accessType || 'get';
@@ -103,7 +106,7 @@ getJasmineRequireObj().SpyRegistry = function(j$) {
throw new Error(getErrorMsg('No property name supplied')); throw new Error(getErrorMsg('No property name supplied'));
} }
var descriptor = j$.util.getPropertyDescriptor(obj, propertyName); const descriptor = j$.util.getPropertyDescriptor(obj, propertyName);
if (!descriptor) { if (!descriptor) {
throw new Error(getErrorMsg(propertyName + ' property does not exist')); throw new Error(getErrorMsg(propertyName + ' property does not exist'));
@@ -138,9 +141,9 @@ getJasmineRequireObj().SpyRegistry = function(j$) {
} }
} }
var originalDescriptor = j$.util.clone(descriptor), const originalDescriptor = j$.util.clone(descriptor);
spy = createSpy(propertyName, descriptor[accessType]), const spy = createSpy(propertyName, descriptor[accessType]);
restoreStrategy; let restoreStrategy;
if (Object.prototype.hasOwnProperty.call(obj, propertyName)) { if (Object.prototype.hasOwnProperty.call(obj, propertyName)) {
restoreStrategy = function() { restoreStrategy = function() {
@@ -170,7 +173,7 @@ getJasmineRequireObj().SpyRegistry = function(j$) {
); );
} }
var pointer = obj, let pointer = obj,
propsToSpyOn = [], propsToSpyOn = [],
properties, properties,
propertiesToSkip = []; propertiesToSkip = [];
@@ -190,24 +193,24 @@ getJasmineRequireObj().SpyRegistry = function(j$) {
pointer = Object.getPrototypeOf(pointer); pointer = Object.getPrototypeOf(pointer);
} }
for (var i = 0; i < propsToSpyOn.length; i++) { for (const prop of propsToSpyOn) {
this.spyOn(obj, propsToSpyOn[i]); this.spyOn(obj, prop);
} }
return obj; return obj;
}; };
this.clearSpies = function() { this.clearSpies = function() {
var spies = currentSpies(); const spies = currentSpies();
for (var i = spies.length - 1; i >= 0; i--) { for (let i = spies.length - 1; i >= 0; i--) {
var spyEntry = spies[i]; const spyEntry = spies[i];
spyEntry.restoreObjectToOriginalState(); spyEntry.restoreObjectToOriginalState();
} }
}; };
} }
function getProps(obj, includeNonEnumerable) { function getProps(obj, includeNonEnumerable) {
var enumerableProperties = Object.keys(obj); const enumerableProperties = Object.keys(obj);
if (!includeNonEnumerable) { if (!includeNonEnumerable) {
return enumerableProperties; return enumerableProperties;
@@ -222,10 +225,9 @@ getJasmineRequireObj().SpyRegistry = function(j$) {
} }
function getSpyableFunctionProps(obj, propertiesToCheck) { function getSpyableFunctionProps(obj, propertiesToCheck) {
var props = [], const props = [];
prop;
for (var i = 0; i < propertiesToCheck.length; i++) { for (const prop of propertiesToCheck) {
prop = propertiesToCheck[i];
if ( if (
Object.prototype.hasOwnProperty.call(obj, prop) && Object.prototype.hasOwnProperty.call(obj, prop) &&
isSpyableProp(obj, prop) isSpyableProp(obj, prop)
@@ -237,14 +239,15 @@ getJasmineRequireObj().SpyRegistry = function(j$) {
} }
function isSpyableProp(obj, prop) { function isSpyableProp(obj, prop) {
var value, descriptor; let value;
try { try {
value = obj[prop]; value = obj[prop];
} catch (e) { } catch (e) {
return false; return false;
} }
if (value instanceof Function) { if (value instanceof Function) {
descriptor = Object.getOwnPropertyDescriptor(obj, prop); const descriptor = Object.getOwnPropertyDescriptor(obj, prop);
return (descriptor.writable || descriptor.set) && descriptor.configurable; return (descriptor.writable || descriptor.set) && descriptor.configurable;
} }
return false; return false;

View File

@@ -5,7 +5,7 @@ getJasmineRequireObj().SpyStrategy = function(j$) {
function SpyStrategy(options) { function SpyStrategy(options) {
options = options || {}; options = options || {};
var self = this; const self = this;
/** /**
* Get the identifying information for the spy. * Get the identifying information for the spy.
@@ -19,9 +19,8 @@ getJasmineRequireObj().SpyStrategy = function(j$) {
this.getSpy = options.getSpy || function() {}; this.getSpy = options.getSpy || function() {};
this.plan = this._defaultPlan = function() {}; this.plan = this._defaultPlan = function() {};
var k, const cs = options.customStrategies || {};
cs = options.customStrategies || {}; for (const k in cs) {
for (k in cs) {
if (j$.util.has(cs, k) && !this[k]) { if (j$.util.has(cs, k) && !this[k]) {
this[k] = createCustomPlan(cs[k]); this[k] = createCustomPlan(cs[k]);
} }
@@ -58,7 +57,7 @@ getJasmineRequireObj().SpyStrategy = function(j$) {
function createCustomPlan(factory) { function createCustomPlan(factory) {
return function() { return function() {
var plan = factory.apply(null, arguments); const plan = factory.apply(null, arguments);
if (!j$.isFunction_(plan)) { if (!j$.isFunction_(plan)) {
throw new Error('Spy strategy must return a function'); throw new Error('Spy strategy must return a function');
@@ -76,10 +75,10 @@ getJasmineRequireObj().SpyStrategy = function(j$) {
* @function * @function
*/ */
SpyStrategy.prototype.exec = function(context, args, invokeNew) { SpyStrategy.prototype.exec = function(context, args, invokeNew) {
var contextArgs = [context].concat( const contextArgs = [context].concat(
args ? Array.prototype.slice.call(args) : [] args ? Array.prototype.slice.call(args) : []
); );
var target = this.plan.bind.apply(this.plan, contextArgs); const target = this.plan.bind.apply(this.plan, contextArgs);
return invokeNew ? new target() : target(); return invokeNew ? new target() : target();
}; };
@@ -117,7 +116,7 @@ getJasmineRequireObj().SpyStrategy = function(j$) {
* @param {...*} values - Values to be returned on subsequent calls to the spy. * @param {...*} values - Values to be returned on subsequent calls to the spy.
*/ */
SpyStrategy.prototype.returnValues = function() { SpyStrategy.prototype.returnValues = function() {
var values = Array.prototype.slice.call(arguments); const values = Array.prototype.slice.call(arguments);
this.plan = function() { this.plan = function() {
return values.shift(); return values.shift();
}; };
@@ -132,7 +131,7 @@ getJasmineRequireObj().SpyStrategy = function(j$) {
* @param {Error|Object|String} something Thing to throw * @param {Error|Object|String} something Thing to throw
*/ */
SpyStrategy.prototype.throwError = function(something) { SpyStrategy.prototype.throwError = function(something) {
var error = j$.isString_(something) ? new Error(something) : something; const error = j$.isString_(something) ? new Error(something) : something;
this.plan = function() { this.plan = function() {
throw error; throw error;
}; };

View File

@@ -1,22 +1,22 @@
getJasmineRequireObj().StackTrace = function(j$) { getJasmineRequireObj().StackTrace = function(j$) {
function StackTrace(error) { function StackTrace(error) {
var lines = error.stack.split('\n').filter(function(line) { let lines = error.stack.split('\n').filter(function(line) {
return line !== ''; return line !== '';
}); });
var extractResult = extractMessage(error.message, lines); const extractResult = extractMessage(error.message, lines);
if (extractResult) { if (extractResult) {
this.message = extractResult.message; this.message = extractResult.message;
lines = extractResult.remainder; lines = extractResult.remainder;
} }
var parseResult = tryParseFrames(lines); const parseResult = tryParseFrames(lines);
this.frames = parseResult.frames; this.frames = parseResult.frames;
this.style = parseResult.style; this.style = parseResult.style;
} }
var framePatterns = [ const framePatterns = [
// Node, Chrome, Edge // Node, Chrome, Edge
// e.g. " at QueueRunner.run (http://localhost:8888/__jasmine__/jasmine.js:4320:20)" // e.g. " at QueueRunner.run (http://localhost:8888/__jasmine__/jasmine.js:4320:20)"
// Note that the "function name" can include a surprisingly large set of // Note that the "function name" can include a surprisingly large set of
@@ -46,16 +46,15 @@ getJasmineRequireObj().StackTrace = function(j$) {
// regexes should capture the function name (if any) as group 1 // regexes should capture the function name (if any) as group 1
// and the file, line, and column as group 2. // and the file, line, and column as group 2.
function tryParseFrames(lines) { function tryParseFrames(lines) {
var style = null; let style = null;
var frames = lines.map(function(line) { const frames = lines.map(function(line) {
var convertedLine = first(framePatterns, function(pattern) { const convertedLine = first(framePatterns, function(pattern) {
var overallMatch = line.match(pattern.re), const overallMatch = line.match(pattern.re);
fileLineColMatch;
if (!overallMatch) { if (!overallMatch) {
return null; return null;
} }
fileLineColMatch = overallMatch[pattern.fileLineColIx].match( const fileLineColMatch = overallMatch[pattern.fileLineColIx].match(
/^(.*):(\d+):\d+$/ /^(.*):(\d+):\d+$/
); );
if (!fileLineColMatch) { if (!fileLineColMatch) {
@@ -81,10 +80,8 @@ getJasmineRequireObj().StackTrace = function(j$) {
} }
function first(items, fn) { function first(items, fn) {
var i, result; for (const item of items) {
const result = fn(item);
for (i = 0; i < items.length; i++) {
result = fn(items[i]);
if (result) { if (result) {
return result; return result;
@@ -93,7 +90,7 @@ getJasmineRequireObj().StackTrace = function(j$) {
} }
function extractMessage(message, stackLines) { function extractMessage(message, stackLines) {
var len = messagePrefixLength(message, stackLines); const len = messagePrefixLength(message, stackLines);
if (len > 0) { if (len > 0) {
return { return {
@@ -108,10 +105,9 @@ getJasmineRequireObj().StackTrace = function(j$) {
return 0; return 0;
} }
var messageLines = message.split('\n'); const messageLines = message.split('\n');
var i;
for (i = 1; i < messageLines.length; i++) { for (let i = 1; i < messageLines.length; i++) {
if (messageLines[i] !== stackLines[i]) { if (messageLines[i] !== stackLines[i]) {
return 0; return 0;
} }

View File

@@ -35,9 +35,9 @@ getJasmineRequireObj().Suite = function(j$) {
}; };
Suite.prototype.getFullName = function() { Suite.prototype.getFullName = function() {
var fullName = []; const fullName = [];
for ( for (
var parentSuite = this; let parentSuite = this;
parentSuite; parentSuite;
parentSuite = parentSuite.parentSuite parentSuite = parentSuite.parentSuite
) { ) {
@@ -89,8 +89,8 @@ getJasmineRequireObj().Suite = function(j$) {
}; };
function removeFns(queueableFns) { function removeFns(queueableFns) {
for (var i = 0; i < queueableFns.length; i++) { for (const qf of queueableFns) {
queueableFns[i].fn = null; qf.fn = null;
} }
} }

View File

@@ -1,5 +1,5 @@
getJasmineRequireObj().Timer = function() { getJasmineRequireObj().Timer = function() {
var defaultNow = (function(Date) { const defaultNow = (function(Date) {
return function() { return function() {
return new Date().getTime(); return new Date().getTime();
}; };
@@ -8,8 +8,8 @@ getJasmineRequireObj().Timer = function() {
function Timer(options) { function Timer(options) {
options = options || {}; options = options || {};
var now = options.now || defaultNow, const now = options.now || defaultNow;
startTime; let startTime;
this.start = function() { this.start = function() {
startTime = now(); startTime = now();

View File

@@ -1,25 +1,25 @@
getJasmineRequireObj().TreeProcessor = function() { getJasmineRequireObj().TreeProcessor = function() {
function TreeProcessor(attrs) { function TreeProcessor(attrs) {
var tree = attrs.tree, const tree = attrs.tree;
runnableIds = attrs.runnableIds, const runnableIds = attrs.runnableIds;
queueRunnerFactory = attrs.queueRunnerFactory, const queueRunnerFactory = attrs.queueRunnerFactory;
nodeStart = attrs.nodeStart || function() {}, const nodeStart = attrs.nodeStart || function() {};
nodeComplete = attrs.nodeComplete || function() {}, const nodeComplete = attrs.nodeComplete || function() {};
failSpecWithNoExpectations = !!attrs.failSpecWithNoExpectations, const failSpecWithNoExpectations = !!attrs.failSpecWithNoExpectations;
orderChildren = const orderChildren =
attrs.orderChildren || attrs.orderChildren ||
function(node) { function(node) {
return node.children; return node.children;
}, };
excludeNode = const excludeNode =
attrs.excludeNode || attrs.excludeNode ||
function(node) { function(node) {
return false; return false;
}, };
stats = { valid: true }, let stats = { valid: true };
processed = false, let processed = false;
defaultMin = Infinity, const defaultMin = Infinity;
defaultMax = 1 - Infinity; const defaultMax = 1 - Infinity;
this.processTree = function() { this.processTree = function() {
processNode(tree, true); processNode(tree, true);
@@ -36,7 +36,7 @@ getJasmineRequireObj().TreeProcessor = function() {
throw 'invalid order'; throw 'invalid order';
} }
var childFns = wrapChildren(tree, 0); const childFns = wrapChildren(tree, 0);
queueRunnerFactory({ queueRunnerFactory({
queueableFns: childFns, queueableFns: childFns,
@@ -52,7 +52,7 @@ getJasmineRequireObj().TreeProcessor = function() {
}; };
function runnableIndex(id) { function runnableIndex(id) {
for (var i = 0; i < runnableIds.length; i++) { for (let i = 0; i < runnableIds.length; i++) {
if (runnableIds[i] === id) { if (runnableIds[i] === id) {
return i; return i;
} }
@@ -60,14 +60,14 @@ getJasmineRequireObj().TreeProcessor = function() {
} }
function processNode(node, parentExcluded) { function processNode(node, parentExcluded) {
var executableIndex = runnableIndex(node.id); const executableIndex = runnableIndex(node.id);
if (executableIndex !== undefined) { if (executableIndex !== undefined) {
parentExcluded = false; parentExcluded = false;
} }
if (!node.children) { if (!node.children) {
var excluded = parentExcluded || excludeNode(node); const excluded = parentExcluded || excludeNode(node);
stats[node.id] = { stats[node.id] = {
excluded: excluded, excluded: excluded,
willExecute: !excluded && !node.markedPending, willExecute: !excluded && !node.markedPending,
@@ -82,12 +82,12 @@ getJasmineRequireObj().TreeProcessor = function() {
] ]
}; };
} else { } else {
var hasExecutableChild = false; let hasExecutableChild = false;
var orderedChildren = orderChildren(node); const orderedChildren = orderChildren(node);
for (var i = 0; i < orderedChildren.length; i++) { for (let i = 0; i < orderedChildren.length; i++) {
var child = orderedChildren[i]; const child = orderedChildren[i];
processNode(child, parentExcluded); processNode(child, parentExcluded);
@@ -95,7 +95,7 @@ getJasmineRequireObj().TreeProcessor = function() {
return; return;
} }
var childStats = stats[child.id]; const childStats = stats[child.id];
hasExecutableChild = hasExecutableChild || childStats.willExecute; hasExecutableChild = hasExecutableChild || childStats.willExecute;
} }
@@ -127,7 +127,7 @@ getJasmineRequireObj().TreeProcessor = function() {
nodeStats, nodeStats,
executableIndex executableIndex
) { ) {
var currentSegment = { let currentSegment = {
index: 0, index: 0,
owner: node, owner: node,
nodes: [], nodes: [],
@@ -146,8 +146,8 @@ getJasmineRequireObj().TreeProcessor = function() {
); );
} }
for (var i = 0; i < orderedChildSegments.length; i++) { for (let i = 0; i < orderedChildSegments.length; i++) {
var childSegment = orderedChildSegments[i], const childSegment = orderedChildSegments[i],
maxIndex = childSegment.max, maxIndex = childSegment.max,
minIndex = childSegment.min; minIndex = childSegment.min;
@@ -172,15 +172,15 @@ getJasmineRequireObj().TreeProcessor = function() {
} }
function orderChildSegments(children) { function orderChildSegments(children) {
var specifiedOrder = [], const specifiedOrder = [],
unspecifiedOrder = []; unspecifiedOrder = [];
for (var i = 0; i < children.length; i++) { for (let i = 0; i < children.length; i++) {
var child = children[i], const child = children[i],
segments = stats[child.id].segments; segments = stats[child.id].segments;
for (var j = 0; j < segments.length; j++) { for (let j = 0; j < segments.length; j++) {
var seg = segments[j]; const seg = segments[j];
if (seg.min === defaultMin) { if (seg.min === defaultMin) {
unspecifiedOrder.push(seg); unspecifiedOrder.push(seg);
@@ -201,7 +201,7 @@ getJasmineRequireObj().TreeProcessor = function() {
if (node.children) { if (node.children) {
return { return {
fn: function(done) { fn: function(done) {
var onStart = { const onStart = {
fn: function(next) { fn: function(next) {
nodeStart(node, next); nodeStart(node, next);
} }
@@ -209,7 +209,7 @@ getJasmineRequireObj().TreeProcessor = function() {
queueRunnerFactory({ queueRunnerFactory({
onComplete: function() { onComplete: function() {
var args = Array.prototype.slice.call(arguments, [0]); const args = Array.prototype.slice.call(arguments, [0]);
node.cleanupBeforeAfter(); node.cleanupBeforeAfter();
nodeComplete(node, node.getResult(), function() { nodeComplete(node, node.getResult(), function() {
done.apply(undefined, args); done.apply(undefined, args);
@@ -240,10 +240,10 @@ getJasmineRequireObj().TreeProcessor = function() {
} }
function wrapChildren(node, segmentNumber) { function wrapChildren(node, segmentNumber) {
var result = [], const result = [],
segmentChildren = stats[node.id].segments[segmentNumber].nodes; segmentChildren = stats[node.id].segments[segmentNumber].nodes;
for (var i = 0; i < segmentChildren.length; i++) { for (let i = 0; i < segmentChildren.length; i++) {
result.push( result.push(
executeNode(segmentChildren[i].owner, segmentChildren[i].index) executeNode(segmentChildren[i].owner, segmentChildren[i].index)
); );

View File

@@ -2,9 +2,9 @@ getJasmineRequireObj().UserContext = function(j$) {
function UserContext() {} function UserContext() {}
UserContext.fromExisting = function(oldContext) { UserContext.fromExisting = function(oldContext) {
var context = new UserContext(); const context = new UserContext();
for (var prop in oldContext) { for (const prop in oldContext) {
if (oldContext.hasOwnProperty(prop)) { if (oldContext.hasOwnProperty(prop)) {
context[prop] = oldContext[prop]; context[prop] = oldContext[prop];
} }

View File

@@ -19,8 +19,7 @@ getJasmineRequireObj().ArrayContaining = function(j$) {
return false; return false;
} }
for (var i = 0; i < this.sample.length; i++) { for (const item of this.sample) {
var item = this.sample[i];
if (!matchersUtil.contains(other, item)) { if (!matchersUtil.contains(other, item)) {
return false; return false;
} }

View File

@@ -19,8 +19,7 @@ getJasmineRequireObj().ArrayWithExactContents = function(j$) {
return false; return false;
} }
for (var i = 0; i < this.sample.length; i++) { for (const item of this.sample) {
var item = this.sample[i];
if (!matchersUtil.contains(other, item)) { if (!matchersUtil.contains(other, item)) {
return false; return false;
} }

View File

@@ -16,7 +16,7 @@ getJasmineRequireObj().MapContaining = function(j$) {
for (const [key, value] of this.sample) { for (const [key, value] of this.sample) {
// for each key/value pair in `sample` // for each key/value pair in `sample`
// there should be at least one pair in `other` whose key and value both match // there should be at least one pair in `other` whose key and value both match
var hasMatch = false; let hasMatch = false;
for (const [oKey, oValue] of other) { for (const [oKey, oValue] of other) {
if ( if (
matchersUtil.equals(oKey, key) && matchersUtil.equals(oKey, key) &&

View File

@@ -27,7 +27,7 @@ getJasmineRequireObj().ObjectContaining = function(j$) {
return false; return false;
} }
for (var property in this.sample) { for (const property in this.sample) {
if ( if (
!hasProperty(other, property) || !hasProperty(other, property) ||
!matchersUtil.equals(this.sample[property], other[property]) !matchersUtil.equals(this.sample[property], other[property])
@@ -47,7 +47,7 @@ getJasmineRequireObj().ObjectContaining = function(j$) {
}; };
} }
var filteredOther = {}; const filteredOther = {};
Object.keys(this.sample).forEach(function(k) { Object.keys(this.sample).forEach(function(k) {
// eq short-circuits comparison of objects that have different key sets, // eq short-circuits comparison of objects that have different key sets,
// so include all keys even if undefined. // so include all keys even if undefined.

View File

@@ -17,7 +17,7 @@ getJasmineRequireObj().SetContaining = function(j$) {
// for each item in `sample` there should be at least one matching item in `other` // for each item in `sample` there should be at least one matching item in `other`
// (not using `matchersUtil.contains` because it compares set members by reference, // (not using `matchersUtil.contains` because it compares set members by reference,
// not by deep value equality) // not by deep value equality)
var hasMatch = false; let hasMatch = false;
for (const oItem of other) { for (const oItem of other) {
if (matchersUtil.equals(oItem, item)) { if (matchersUtil.equals(oItem, item)) {
hasMatch = true; hasMatch = true;

View File

@@ -43,7 +43,7 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) {
* @default 5000 * @default 5000
* @since 1.3.0 * @since 1.3.0
*/ */
var DEFAULT_TIMEOUT_INTERVAL = 5000; let DEFAULT_TIMEOUT_INTERVAL = 5000;
Object.defineProperty(j$, 'DEFAULT_TIMEOUT_INTERVAL', { Object.defineProperty(j$, 'DEFAULT_TIMEOUT_INTERVAL', {
get: function() { get: function() {
return DEFAULT_TIMEOUT_INTERVAL; return DEFAULT_TIMEOUT_INTERVAL;
@@ -67,7 +67,7 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) {
* @return {Env} * @return {Env}
*/ */
j$.getEnv = function(options) { j$.getEnv = function(options) {
var env = (j$.currentEnv_ = j$.currentEnv_ || new j$.Env(options)); const env = (j$.currentEnv_ = j$.currentEnv_ || new j$.Env(options));
//jasmine. singletons in here (setTimeout blah blah). //jasmine. singletons in here (setTimeout blah blah).
return env; return env;
}; };
@@ -208,7 +208,7 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) {
return func.name; return func.name;
} }
var matches = const matches =
func.toString().match(/^\s*function\s*(\w+)\s*\(/) || func.toString().match(/^\s*function\s*(\w+)\s*\(/) ||
func.toString().match(/^\s*\[object\s*(\w+)Constructor\]/); func.toString().match(/^\s*\[object\s*(\w+)Constructor\]/);
@@ -216,7 +216,7 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) {
}; };
j$.isPending_ = function(promise) { j$.isPending_ = function(promise) {
var sentinel = {}; const sentinel = {};
return Promise.race([promise, Promise.resolve(sentinel)]).then( return Promise.race([promise, Promise.resolve(sentinel)]).then(
function(result) { function(result) {
return result === sentinel; return result === sentinel;

View File

@@ -1,6 +1,6 @@
getJasmineRequireObj().formatErrorMsg = function() { getJasmineRequireObj().formatErrorMsg = function() {
function generateErrorMsg(domain, usage) { function generateErrorMsg(domain, usage) {
var usageDefinition = usage ? '\nUsage: ' + usage : ''; const usageDefinition = usage ? '\nUsage: ' + usage : '';
return function errorMsg(msg) { return function errorMsg(msg) {
return domain + ' : ' + msg + usageDefinition; return domain + ' : ' + msg + usageDefinition;

View File

@@ -14,7 +14,7 @@ getJasmineRequireObj().toBePending = function(j$) {
if (!j$.isPromiseLike(actual)) { if (!j$.isPromiseLike(actual)) {
throw new Error('Expected toBePending to be called on a promise.'); throw new Error('Expected toBePending to be called on a promise.');
} }
var want = {}; const want = {};
return Promise.race([actual, Promise.resolve(want)]).then( return Promise.race([actual, Promise.resolve(want)]).then(
function(got) { function(got) {
return { pass: want === got }; return { pass: want === got };

View File

@@ -23,7 +23,7 @@ getJasmineRequireObj().toBeRejectedWithError = function(j$) {
); );
} }
var expected = getExpectedFromArgs(arg1, arg2, matchersUtil); const expected = getExpectedFromArgs(arg1, arg2, matchersUtil);
return actualPromise.then( return actualPromise.then(
function() { function() {
@@ -52,7 +52,7 @@ getJasmineRequireObj().toBeRejectedWithError = function(j$) {
); );
} }
var actualMessage = actual.message; const actualMessage = actual.message;
if ( if (
actualMessage === expected.message || actualMessage === expected.message ||
@@ -94,7 +94,7 @@ getJasmineRequireObj().toBeRejectedWithError = function(j$) {
} }
function getExpectedFromArgs(arg1, arg2, matchersUtil) { function getExpectedFromArgs(arg1, arg2, matchersUtil) {
var error, message; let error, message;
if (isErrorConstructor(arg1)) { if (isErrorConstructor(arg1)) {
error = arg1; error = arg1;

View File

@@ -63,7 +63,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
if (j$.isNumber_(haystack.length)) { if (j$.isNumber_(haystack.length)) {
// Objects that are shaped like arrays but aren't iterable // Objects that are shaped like arrays but aren't iterable
for (var i = 0; i < haystack.length; i++) { for (let i = 0; i < haystack.length; i++) {
if (this.equals(haystack[i], needle)) { if (this.equals(haystack[i], needle)) {
return true; return true;
} }
@@ -74,8 +74,8 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
}; };
MatchersUtil.prototype.buildFailureMessage = function() { MatchersUtil.prototype.buildFailureMessage = function() {
var self = this; const self = this;
var args = Array.prototype.slice.call(arguments, 0), const args = Array.prototype.slice.call(arguments, 0),
matcherName = args[0], matcherName = args[0],
isNot = args[1], isNot = args[1],
actual = args[2], actual = args[2],
@@ -84,14 +84,14 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
return ' ' + s.toLowerCase(); return ' ' + s.toLowerCase();
}); });
var message = let message =
'Expected ' + 'Expected ' +
self.pp(actual) + self.pp(actual) +
(isNot ? ' not ' : ' ') + (isNot ? ' not ' : ' ') +
englishyPredicate; englishyPredicate;
if (expected.length > 0) { if (expected.length > 0) {
for (var i = 0; i < expected.length; i++) { for (let i = 0; i < expected.length; i++) {
if (i > 0) { if (i > 0) {
message += ','; message += ',';
} }
@@ -110,7 +110,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
diffBuilder diffBuilder
) { ) {
if (j$.isFunction_(b.valuesForDiff_)) { if (j$.isFunction_(b.valuesForDiff_)) {
var values = b.valuesForDiff_(a, this.pp); const values = b.valuesForDiff_(a, this.pp);
this.eq_(values.other, values.self, aStack, bStack, diffBuilder); this.eq_(values.other, values.self, aStack, bStack, diffBuilder);
} else { } else {
diffBuilder.recordMismatch(); diffBuilder.recordMismatch();
@@ -124,14 +124,15 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
bStack, bStack,
diffBuilder diffBuilder
) { ) {
var asymmetricA = j$.isAsymmetricEqualityTester_(a), const asymmetricA = j$.isAsymmetricEqualityTester_(a);
asymmetricB = j$.isAsymmetricEqualityTester_(b), const asymmetricB = j$.isAsymmetricEqualityTester_(b);
result;
if (asymmetricA === asymmetricB) { if (asymmetricA === asymmetricB) {
return undefined; return undefined;
} }
let result;
if (asymmetricA) { if (asymmetricA) {
result = a.asymmetricMatch(b, this); result = a.asymmetricMatch(b, this);
if (!result) { if (!result) {
@@ -168,11 +169,10 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
// Equality function lovingly adapted from isEqual in // Equality function lovingly adapted from isEqual in
// [Underscore](http://underscorejs.org) // [Underscore](http://underscorejs.org)
MatchersUtil.prototype.eq_ = function(a, b, aStack, bStack, diffBuilder) { MatchersUtil.prototype.eq_ = function(a, b, aStack, bStack, diffBuilder) {
var result = true, let result = true;
self = this, const self = this;
i;
var asymmetricResult = this.asymmetricMatch_( const asymmetricResult = this.asymmetricMatch_(
a, a,
b, b,
aStack, aStack,
@@ -183,8 +183,8 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
return asymmetricResult; return asymmetricResult;
} }
for (i = 0; i < this.customTesters_.length; i++) { for (const tester of this.customTesters_) {
var customTesterResult = this.customTesters_[i](a, b); const customTesterResult = tester(a, b);
if (!j$.util.isUndefined(customTesterResult)) { if (!j$.util.isUndefined(customTesterResult)) {
if (!customTesterResult) { if (!customTesterResult) {
diffBuilder.recordMismatch(); diffBuilder.recordMismatch();
@@ -218,7 +218,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
} }
return result; return result;
} }
var className = Object.prototype.toString.call(a); const className = Object.prototype.toString.call(a);
if (className != Object.prototype.toString.call(b)) { if (className != Object.prototype.toString.call(b)) {
diffBuilder.recordMismatch(); diffBuilder.recordMismatch();
return false; return false;
@@ -276,8 +276,8 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
return false; return false;
} }
var aIsDomNode = j$.isDomNode(a); const aIsDomNode = j$.isDomNode(a);
var bIsDomNode = j$.isDomNode(b); const bIsDomNode = j$.isDomNode(b);
if (aIsDomNode && bIsDomNode) { if (aIsDomNode && bIsDomNode) {
// At first try to use DOM3 method isEqualNode // At first try to use DOM3 method isEqualNode
result = a.isEqualNode(b); result = a.isEqualNode(b);
@@ -291,15 +291,15 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
return false; return false;
} }
var aIsPromise = j$.isPromise(a); const aIsPromise = j$.isPromise(a);
var bIsPromise = j$.isPromise(b); const bIsPromise = j$.isPromise(b);
if (aIsPromise && bIsPromise) { if (aIsPromise && bIsPromise) {
return a === b; return a === b;
} }
// Assume equality for cyclic structures. The algorithm for detecting cyclic // Assume equality for cyclic structures. The algorithm for detecting cyclic
// structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
var length = aStack.length; let length = aStack.length;
while (length--) { while (length--) {
// Linear search. Performance is inversely proportional to the number of // Linear search. Performance is inversely proportional to the number of
// unique nested structures. // unique nested structures.
@@ -310,12 +310,12 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
// Add the first object to the stack of traversed objects. // Add the first object to the stack of traversed objects.
aStack.push(a); aStack.push(a);
bStack.push(b); bStack.push(b);
var size = 0; let size = 0;
// Recursively compare objects and arrays. // Recursively compare objects and arrays.
// Compare array lengths to determine if a deep comparison is necessary. // Compare array lengths to determine if a deep comparison is necessary.
if (className == '[object Array]') { if (className == '[object Array]') {
var aLength = a.length; const aLength = a.length;
var bLength = b.length; const bLength = b.length;
diffBuilder.withPath('length', function() { diffBuilder.withPath('length', function() {
if (aLength !== bLength) { if (aLength !== bLength) {
@@ -324,7 +324,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
} }
}); });
for (i = 0; i < aLength || i < bLength; i++) { for (let i = 0; i < aLength || i < bLength; i++) {
diffBuilder.withPath(i, function() { diffBuilder.withPath(i, function() {
if (i >= bLength) { if (i >= bLength) {
diffBuilder.recordMismatch( diffBuilder.recordMismatch(
@@ -352,8 +352,8 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
return false; return false;
} }
var keysA = []; const keysA = [];
var keysB = []; const keysB = [];
a.forEach(function(valueA, keyA) { a.forEach(function(valueA, keyA) {
keysA.push(keyA); keysA.push(keyA);
}); });
@@ -363,18 +363,17 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
// For both sets of keys, check they map to equal values in both maps. // For both sets of keys, check they map to equal values in both maps.
// Keep track of corresponding keys (in insertion order) in order to handle asymmetric obj keys. // Keep track of corresponding keys (in insertion order) in order to handle asymmetric obj keys.
var mapKeys = [keysA, keysB]; const mapKeys = [keysA, keysB];
var cmpKeys = [keysB, keysA]; const cmpKeys = [keysB, keysA];
var mapIter, mapKey, mapValueA, mapValueB; for (let i = 0; result && i < mapKeys.length; i++) {
var cmpIter, cmpKey; const mapIter = mapKeys[i];
for (i = 0; result && i < mapKeys.length; i++) { const cmpIter = cmpKeys[i];
mapIter = mapKeys[i];
cmpIter = cmpKeys[i];
for (var j = 0; result && j < mapIter.length; j++) { for (let j = 0; result && j < mapIter.length; j++) {
mapKey = mapIter[j]; const mapKey = mapIter[j];
cmpKey = cmpIter[j]; const cmpKey = cmpIter[j];
mapValueA = a.get(mapKey); const mapValueA = a.get(mapKey);
let mapValueB;
// Only use the cmpKey when one of the keys is asymmetric and the corresponding key matches, // Only use the cmpKey when one of the keys is asymmetric and the corresponding key matches,
// otherwise explicitly look up the mapKey in the other Map since we want keys with unique // otherwise explicitly look up the mapKey in the other Map since we want keys with unique
@@ -408,35 +407,30 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
return false; return false;
} }
var valuesA = []; const valuesA = [];
a.forEach(function(valueA) { a.forEach(function(valueA) {
valuesA.push(valueA); valuesA.push(valueA);
}); });
var valuesB = []; const valuesB = [];
b.forEach(function(valueB) { b.forEach(function(valueB) {
valuesB.push(valueB); valuesB.push(valueB);
}); });
// For both sets, check they are all contained in the other set // For both sets, check they are all contained in the other set
var setPairs = [[valuesA, valuesB], [valuesB, valuesA]]; const setPairs = [[valuesA, valuesB], [valuesB, valuesA]];
var stackPairs = [[aStack, bStack], [bStack, aStack]]; const stackPairs = [[aStack, bStack], [bStack, aStack]];
var baseValues, baseValue, baseStack; for (let i = 0; result && i < setPairs.length; i++) {
var otherValues, otherValue, otherStack; const baseValues = setPairs[i][0];
var found; const otherValues = setPairs[i][1];
var prevStackSize; const baseStack = stackPairs[i][0];
for (i = 0; result && i < setPairs.length; i++) { const otherStack = stackPairs[i][1];
baseValues = setPairs[i][0];
otherValues = setPairs[i][1];
baseStack = stackPairs[i][0];
otherStack = stackPairs[i][1];
// For each value in the base set... // For each value in the base set...
for (var k = 0; result && k < baseValues.length; k++) { for (const baseValue of baseValues) {
baseValue = baseValues[k]; let found = false;
found = false;
// ... test that it is present in the other set // ... test that it is present in the other set
for (var l = 0; !found && l < otherValues.length; l++) { for (let j = 0; !found && j < otherValues.length; j++) {
otherValue = otherValues[l]; const otherValue = otherValues[j];
prevStackSize = baseStack.length; const prevStackSize = baseStack.length;
// compare by value equality // compare by value equality
found = this.eq_( found = this.eq_(
baseValue, baseValue,
@@ -465,7 +459,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
} else { } else {
// Objects with different constructors are not equivalent, but `Object`s // Objects with different constructors are not equivalent, but `Object`s
// or `Array`s from different frames are. // or `Array`s from different frames are.
var aCtor = a.constructor, const aCtor = a.constructor,
bCtor = b.constructor; bCtor = b.constructor;
if ( if (
aCtor !== bCtor && aCtor !== bCtor &&
@@ -483,8 +477,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
} }
// Deep compare objects. // Deep compare objects.
var aKeys = MatchersUtil.keys(a, className == '[object Array]'), const aKeys = MatchersUtil.keys(a, className == '[object Array]');
key;
size = aKeys.length; size = aKeys.length;
// Ensure that both objects contain the same number of properties before comparing deep equality. // Ensure that both objects contain the same number of properties before comparing deep equality.
@@ -495,8 +488,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
return false; return false;
} }
for (i = 0; i < size; i++) { for (const key of aKeys) {
key = aKeys[i];
// Deep compare each member // Deep compare each member
if (!j$.util.has(b, key)) { if (!j$.util.has(b, key)) {
diffBuilder.recordMismatch( diffBuilder.recordMismatch(
@@ -525,18 +517,18 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
}; };
MatchersUtil.keys = function(obj, isArray) { MatchersUtil.keys = function(obj, isArray) {
var allKeys = (function(o) { const allKeys = (function(o) {
var keys = []; const keys = [];
for (var key in o) { for (const key in o) {
if (j$.util.has(o, key)) { if (j$.util.has(o, key)) {
keys.push(key); keys.push(key);
} }
} }
var symbols = Object.getOwnPropertySymbols(o); const symbols = Object.getOwnPropertySymbols(o);
for (var i = 0; i < symbols.length; i++) { for (const sym of symbols) {
if (o.propertyIsEnumerable(symbols[i])) { if (o.propertyIsEnumerable(sym)) {
keys.push(symbols[i]); keys.push(sym);
} }
} }
@@ -551,10 +543,10 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
return allKeys; return allKeys;
} }
var extraKeys = []; const extraKeys = [];
for (var i = 0; i < allKeys.length; i++) { for (const k of allKeys) {
if (typeof allKeys[i] === 'symbol' || !/^[0-9]+$/.test(allKeys[i])) { if (typeof k === 'symbol' || !/^[0-9]+$/.test(k)) {
extraKeys.push(allKeys[i]); extraKeys.push(k);
} }
} }
@@ -574,7 +566,7 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
} }
function objectKeysAreDifferentFormatter(pp, actual, expected, path) { function objectKeysAreDifferentFormatter(pp, actual, expected, path) {
var missingProperties = extraKeysAndValues(expected, actual), const missingProperties = extraKeysAndValues(expected, actual),
extraProperties = extraKeysAndValues(actual, expected), extraProperties = extraKeysAndValues(actual, expected),
missingPropertiesMessage = formatKeyValuePairs(pp, missingProperties), missingPropertiesMessage = formatKeyValuePairs(pp, missingProperties),
extraPropertiesMessage = formatKeyValuePairs(pp, extraProperties), extraPropertiesMessage = formatKeyValuePairs(pp, extraProperties),

View File

@@ -1,5 +1,5 @@
getJasmineRequireObj().requireAsyncMatchers = function(jRequire, j$) { getJasmineRequireObj().requireAsyncMatchers = function(jRequire, j$) {
var availableMatchers = [ const availableMatchers = [
'toBePending', 'toBePending',
'toBeResolved', 'toBeResolved',
'toBeRejected', 'toBeRejected',
@@ -9,8 +9,7 @@ getJasmineRequireObj().requireAsyncMatchers = function(jRequire, j$) {
], ],
matchers = {}; matchers = {};
for (var i = 0; i < availableMatchers.length; i++) { for (const name of availableMatchers) {
var name = availableMatchers[i];
matchers[name] = jRequire[name](j$); matchers[name] = jRequire[name](j$);
} }

View File

@@ -1,5 +1,5 @@
getJasmineRequireObj().requireMatchers = function(jRequire, j$) { getJasmineRequireObj().requireMatchers = function(jRequire, j$) {
var availableMatchers = [ const availableMatchers = [
'nothing', 'nothing',
'toBe', 'toBe',
'toBeCloseTo', 'toBeCloseTo',
@@ -35,8 +35,7 @@ getJasmineRequireObj().requireMatchers = function(jRequire, j$) {
], ],
matchers = {}; matchers = {};
for (var i = 0; i < availableMatchers.length; i++) { for (const name of availableMatchers) {
var name = availableMatchers[i];
matchers[name] = jRequire[name](j$); matchers[name] = jRequire[name](j$);
} }

View File

@@ -9,12 +9,12 @@ getJasmineRequireObj().toBe = function(j$) {
* expect(thing).toBe(realThing); * expect(thing).toBe(realThing);
*/ */
function toBe(matchersUtil) { function toBe(matchersUtil) {
var tip = const tip =
' Tip: To check for deep equality, use .toEqual() instead of .toBe().'; ' Tip: To check for deep equality, use .toEqual() instead of .toBe().';
return { return {
compare: function(actual, expected) { compare: function(actual, expected) {
var result = { const result = {
pass: actual === expected pass: actual === expected
}; };

View File

@@ -35,9 +35,9 @@ getJasmineRequireObj().toBeCloseTo = function() {
}; };
} }
var pow = Math.pow(10, precision + 1); const pow = Math.pow(10, precision + 1);
var delta = Math.abs(expected - actual); const delta = Math.abs(expected - actual);
var maxDelta = Math.pow(10, -precision) / 2; const maxDelta = Math.pow(10, -precision) / 2;
return { return {
pass: Math.round(delta * pow) <= maxDelta * pow pass: Math.round(delta * pow) <= maxDelta * pow

View File

@@ -1,5 +1,5 @@
getJasmineRequireObj().toBeInstanceOf = function(j$) { getJasmineRequireObj().toBeInstanceOf = function(j$) {
var usageError = j$.formatErrorMsg( const usageError = j$.formatErrorMsg(
'<toBeInstanceOf>', '<toBeInstanceOf>',
'expect(value).toBeInstanceOf(<ConstructorFunction>)' 'expect(value).toBeInstanceOf(<ConstructorFunction>)'
); );
@@ -18,15 +18,15 @@ getJasmineRequireObj().toBeInstanceOf = function(j$) {
function toBeInstanceOf(matchersUtil) { function toBeInstanceOf(matchersUtil) {
return { return {
compare: function(actual, expected) { compare: function(actual, expected) {
var actualType = const actualType =
actual && actual.constructor actual && actual.constructor
? j$.fnNameFor(actual.constructor) ? j$.fnNameFor(actual.constructor)
: matchersUtil.pp(actual), : matchersUtil.pp(actual);
expectedType = expected const expectedType = expected
? j$.fnNameFor(expected) ? j$.fnNameFor(expected)
: matchersUtil.pp(expected), : matchersUtil.pp(expected);
expectedMatcher, let expectedMatcher;
pass; let pass;
try { try {
expectedMatcher = new j$.Any(expected); expectedMatcher = new j$.Any(expected);

View File

@@ -10,7 +10,7 @@ getJasmineRequireObj().toBeNaN = function(j$) {
function toBeNaN(matchersUtil) { function toBeNaN(matchersUtil) {
return { return {
compare: function(actual) { compare: function(actual) {
var result = { const result = {
pass: actual !== actual pass: actual !== actual
}; };

View File

@@ -10,7 +10,7 @@ getJasmineRequireObj().toBeNegativeInfinity = function(j$) {
function toBeNegativeInfinity(matchersUtil) { function toBeNegativeInfinity(matchersUtil) {
return { return {
compare: function(actual) { compare: function(actual) {
var result = { const result = {
pass: actual === Number.NEGATIVE_INFINITY pass: actual === Number.NEGATIVE_INFINITY
}; };

View File

@@ -10,7 +10,7 @@ getJasmineRequireObj().toBePositiveInfinity = function(j$) {
function toBePositiveInfinity(matchersUtil) { function toBePositiveInfinity(matchersUtil) {
return { return {
compare: function(actual) { compare: function(actual) {
var result = { const result = {
pass: actual === Number.POSITIVE_INFINITY pass: actual === Number.POSITIVE_INFINITY
}; };

View File

@@ -11,7 +11,7 @@ getJasmineRequireObj().toEqual = function(j$) {
function toEqual(matchersUtil) { function toEqual(matchersUtil) {
return { return {
compare: function(actual, expected) { compare: function(actual, expected) {
var result = { const result = {
pass: false pass: false
}, },
diffBuilder = new j$.DiffBuilder({ prettyPrinter: matchersUtil.pp }); diffBuilder = new j$.DiffBuilder({ prettyPrinter: matchersUtil.pp });

View File

@@ -1,5 +1,5 @@
getJasmineRequireObj().toHaveBeenCalled = function(j$) { getJasmineRequireObj().toHaveBeenCalled = function(j$) {
var getErrorMsg = j$.formatErrorMsg( const getErrorMsg = j$.formatErrorMsg(
'<toHaveBeenCalled>', '<toHaveBeenCalled>',
'expect(<spyObj>).toHaveBeenCalled()' 'expect(<spyObj>).toHaveBeenCalled()'
); );
@@ -16,7 +16,7 @@ getJasmineRequireObj().toHaveBeenCalled = function(j$) {
function toHaveBeenCalled(matchersUtil) { function toHaveBeenCalled(matchersUtil) {
return { return {
compare: function(actual) { compare: function(actual) {
var result = {}; const result = {};
if (!j$.isSpy(actual)) { if (!j$.isSpy(actual)) {
throw new Error( throw new Error(

View File

@@ -1,5 +1,5 @@
getJasmineRequireObj().toHaveBeenCalledBefore = function(j$) { getJasmineRequireObj().toHaveBeenCalledBefore = function(j$) {
var getErrorMsg = j$.formatErrorMsg( const getErrorMsg = j$.formatErrorMsg(
'<toHaveBeenCalledBefore>', '<toHaveBeenCalledBefore>',
'expect(<spyObj>).toHaveBeenCalledBefore(<spyObj>)' 'expect(<spyObj>).toHaveBeenCalledBefore(<spyObj>)'
); );
@@ -31,7 +31,7 @@ getJasmineRequireObj().toHaveBeenCalledBefore = function(j$) {
); );
} }
var result = { pass: false }; const result = { pass: false };
if (!firstSpy.calls.count()) { if (!firstSpy.calls.count()) {
result.message = result.message =
@@ -44,8 +44,8 @@ getJasmineRequireObj().toHaveBeenCalledBefore = function(j$) {
return result; return result;
} }
var latest1stSpyCall = firstSpy.calls.mostRecent().invocationOrder; const latest1stSpyCall = firstSpy.calls.mostRecent().invocationOrder;
var first2ndSpyCall = latterSpy.calls.first().invocationOrder; const first2ndSpyCall = latterSpy.calls.first().invocationOrder;
result.pass = latest1stSpyCall < first2ndSpyCall; result.pass = latest1stSpyCall < first2ndSpyCall;
@@ -57,8 +57,8 @@ getJasmineRequireObj().toHaveBeenCalledBefore = function(j$) {
latterSpy.and.identity + latterSpy.and.identity +
', but it was'; ', but it was';
} else { } else {
var first1stSpyCall = firstSpy.calls.first().invocationOrder; const first1stSpyCall = firstSpy.calls.first().invocationOrder;
var latest2ndSpyCall = latterSpy.calls.mostRecent().invocationOrder; const latest2ndSpyCall = latterSpy.calls.mostRecent().invocationOrder;
if (first1stSpyCall < first2ndSpyCall) { if (first1stSpyCall < first2ndSpyCall) {
result.message = result.message =

View File

@@ -1,5 +1,5 @@
getJasmineRequireObj().toHaveBeenCalledOnceWith = function(j$) { getJasmineRequireObj().toHaveBeenCalledOnceWith = function(j$) {
var getErrorMsg = j$.formatErrorMsg( const getErrorMsg = j$.formatErrorMsg(
'<toHaveBeenCalledOnceWith>', '<toHaveBeenCalledOnceWith>',
'expect(<spyObj>).toHaveBeenCalledOnceWith(...arguments)' 'expect(<spyObj>).toHaveBeenCalledOnceWith(...arguments)'
); );
@@ -16,7 +16,7 @@ getJasmineRequireObj().toHaveBeenCalledOnceWith = function(j$) {
function toHaveBeenCalledOnceWith(util) { function toHaveBeenCalledOnceWith(util) {
return { return {
compare: function() { compare: function() {
var args = Array.prototype.slice.call(arguments, 0), const args = Array.prototype.slice.call(arguments, 0),
actual = args[0], actual = args[0],
expectedArgs = args.slice(1); expectedArgs = args.slice(1);
@@ -26,7 +26,7 @@ getJasmineRequireObj().toHaveBeenCalledOnceWith = function(j$) {
); );
} }
var prettyPrintedCalls = actual.calls const prettyPrintedCalls = actual.calls
.allArgs() .allArgs()
.map(function(argsForCall) { .map(function(argsForCall) {
return ' ' + util.pp(argsForCall); return ' ' + util.pp(argsForCall);
@@ -53,7 +53,7 @@ getJasmineRequireObj().toHaveBeenCalledOnceWith = function(j$) {
function getDiffs() { function getDiffs() {
return actual.calls.allArgs().map(function(argsForCall, callIx) { return actual.calls.allArgs().map(function(argsForCall, callIx) {
var diffBuilder = new j$.DiffBuilder(); const diffBuilder = new j$.DiffBuilder();
util.equals(argsForCall, expectedArgs, diffBuilder); util.equals(argsForCall, expectedArgs, diffBuilder);
return diffBuilder.getMessage(); return diffBuilder.getMessage();
}); });

View File

@@ -1,5 +1,5 @@
getJasmineRequireObj().toHaveBeenCalledTimes = function(j$) { getJasmineRequireObj().toHaveBeenCalledTimes = function(j$) {
var getErrorMsg = j$.formatErrorMsg( const getErrorMsg = j$.formatErrorMsg(
'<toHaveBeenCalledTimes>', '<toHaveBeenCalledTimes>',
'expect(<spyObj>).toHaveBeenCalledTimes(<Number>)' 'expect(<spyObj>).toHaveBeenCalledTimes(<Number>)'
); );
@@ -24,7 +24,7 @@ getJasmineRequireObj().toHaveBeenCalledTimes = function(j$) {
); );
} }
var args = Array.prototype.slice.call(arguments, 0), const args = Array.prototype.slice.call(arguments, 0),
result = { pass: false }; result = { pass: false };
if (!j$.isNumber_(expected)) { if (!j$.isNumber_(expected)) {
@@ -36,8 +36,8 @@ getJasmineRequireObj().toHaveBeenCalledTimes = function(j$) {
} }
actual = args[0]; actual = args[0];
var calls = actual.calls.count(); const calls = actual.calls.count();
var timesMessage = expected === 1 ? 'once' : expected + ' times'; const timesMessage = expected === 1 ? 'once' : expected + ' times';
result.pass = calls === expected; result.pass = calls === expected;
result.message = result.pass result.message = result.pass
? 'Expected spy ' + ? 'Expected spy ' +

View File

@@ -1,5 +1,5 @@
getJasmineRequireObj().toHaveBeenCalledWith = function(j$) { getJasmineRequireObj().toHaveBeenCalledWith = function(j$) {
var getErrorMsg = j$.formatErrorMsg( const getErrorMsg = j$.formatErrorMsg(
'<toHaveBeenCalledWith>', '<toHaveBeenCalledWith>',
'expect(<spyObj>).toHaveBeenCalledWith(...arguments)' 'expect(<spyObj>).toHaveBeenCalledWith(...arguments)'
); );
@@ -16,7 +16,7 @@ getJasmineRequireObj().toHaveBeenCalledWith = function(j$) {
function toHaveBeenCalledWith(matchersUtil) { function toHaveBeenCalledWith(matchersUtil) {
return { return {
compare: function() { compare: function() {
var args = Array.prototype.slice.call(arguments, 0), const args = Array.prototype.slice.call(arguments, 0),
actual = args[0], actual = args[0],
expectedArgs = args.slice(1), expectedArgs = args.slice(1),
result = { pass: false }; result = { pass: false };
@@ -57,16 +57,16 @@ getJasmineRequireObj().toHaveBeenCalledWith = function(j$) {
}; };
} else { } else {
result.message = function() { result.message = function() {
var prettyPrintedCalls = actual.calls const prettyPrintedCalls = actual.calls
.allArgs() .allArgs()
.map(function(argsForCall) { .map(function(argsForCall) {
return ' ' + matchersUtil.pp(argsForCall); return ' ' + matchersUtil.pp(argsForCall);
}); });
var diffs = actual.calls const diffs = actual.calls
.allArgs() .allArgs()
.map(function(argsForCall, callIx) { .map(function(argsForCall, callIx) {
var diffBuilder = new j$.DiffBuilder(); const diffBuilder = new j$.DiffBuilder();
matchersUtil.equals(argsForCall, expectedArgs, diffBuilder); matchersUtil.equals(argsForCall, expectedArgs, diffBuilder);
return ( return (
'Call ' + 'Call ' +

View File

@@ -12,7 +12,7 @@ getJasmineRequireObj().toHaveSize = function(j$) {
function toHaveSize() { function toHaveSize() {
return { return {
compare: function(actual, expected) { compare: function(actual, expected) {
var result = { const result = {
pass: false pass: false
}; };
@@ -37,7 +37,7 @@ getJasmineRequireObj().toHaveSize = function(j$) {
}; };
} }
var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
function isLength(value) { function isLength(value) {
return ( return (
typeof value == 'number' && typeof value == 'number' &&

View File

@@ -1,5 +1,5 @@
getJasmineRequireObj().toHaveSpyInteractions = function(j$) { getJasmineRequireObj().toHaveSpyInteractions = function(j$) {
var getErrorMsg = j$.formatErrorMsg( const getErrorMsg = j$.formatErrorMsg(
'<toHaveSpyInteractions>', '<toHaveSpyInteractions>',
'expect(<spyObj>).toHaveSpyInteractions()' 'expect(<spyObj>).toHaveSpyInteractions()'
); );
@@ -16,7 +16,7 @@ getJasmineRequireObj().toHaveSpyInteractions = function(j$) {
function toHaveSpyInteractions(matchersUtil) { function toHaveSpyInteractions(matchersUtil) {
return { return {
compare: function(actual) { compare: function(actual) {
var result = {}; const result = {};
if (!j$.isObject_(actual)) { if (!j$.isObject_(actual)) {
throw new Error( throw new Error(

View File

@@ -1,5 +1,5 @@
getJasmineRequireObj().toMatch = function(j$) { getJasmineRequireObj().toMatch = function(j$) {
var getErrorMsg = j$.formatErrorMsg( const getErrorMsg = j$.formatErrorMsg(
'<toMatch>', '<toMatch>',
'expect(<expectation>).toMatch(<string> || <regexp>)' 'expect(<expectation>).toMatch(<string> || <regexp>)'
); );
@@ -21,7 +21,7 @@ getJasmineRequireObj().toMatch = function(j$) {
throw new Error(getErrorMsg('Expected is not a String or a RegExp')); throw new Error(getErrorMsg('Expected is not a String or a RegExp'));
} }
var regexp = new RegExp(expected); const regexp = new RegExp(expected);
return { return {
pass: regexp.test(actual) pass: regexp.test(actual)

View File

@@ -1,5 +1,5 @@
getJasmineRequireObj().toThrow = function(j$) { getJasmineRequireObj().toThrow = function(j$) {
var getErrorMsg = j$.formatErrorMsg( const getErrorMsg = j$.formatErrorMsg(
'<toThrow>', '<toThrow>',
'expect(function() {<expectation>}).toThrow()' 'expect(function() {<expectation>}).toThrow()'
); );
@@ -17,9 +17,9 @@ getJasmineRequireObj().toThrow = function(j$) {
function toThrow(matchersUtil) { function toThrow(matchersUtil) {
return { return {
compare: function(actual, expected) { compare: function(actual, expected) {
var result = { pass: false }, const result = { pass: false };
threw = false, let threw = false;
thrown; let thrown;
if (typeof actual != 'function') { if (typeof actual != 'function') {
throw new Error(getErrorMsg('Actual is not a Function')); throw new Error(getErrorMsg('Actual is not a Function'));

View File

@@ -1,5 +1,5 @@
getJasmineRequireObj().toThrowError = function(j$) { getJasmineRequireObj().toThrowError = function(j$) {
var getErrorMsg = j$.formatErrorMsg( const getErrorMsg = j$.formatErrorMsg(
'<toThrowError>', '<toThrowError>',
'expect(function() {<expectation>}).toThrowError(<ErrorConstructor>, <message>)' 'expect(function() {<expectation>}).toThrowError(<ErrorConstructor>, <message>)'
); );
@@ -21,13 +21,14 @@ getJasmineRequireObj().toThrowError = function(j$) {
function toThrowError(matchersUtil) { function toThrowError(matchersUtil) {
return { return {
compare: function(actual) { compare: function(actual) {
var errorMatcher = getMatcher.apply(null, arguments), const errorMatcher = getMatcher.apply(null, arguments);
thrown;
if (typeof actual != 'function') { if (typeof actual != 'function') {
throw new Error(getErrorMsg('Actual is not a Function')); throw new Error(getErrorMsg('Actual is not a Function'));
} }
let thrown;
try { try {
actual(); actual();
return fail('Expected function to throw an Error.'); return fail('Expected function to throw an Error.');
@@ -50,7 +51,7 @@ getJasmineRequireObj().toThrowError = function(j$) {
}; };
function getMatcher() { function getMatcher() {
var expected, errorType; let expected, errorType;
if (arguments[2]) { if (arguments[2]) {
errorType = arguments[1]; errorType = arguments[1];
@@ -106,15 +107,15 @@ getJasmineRequireObj().toThrowError = function(j$) {
} }
} }
var errorTypeDescription = errorType const errorTypeDescription = errorType
? j$.fnNameFor(errorType) ? j$.fnNameFor(errorType)
: 'an exception'; : 'an exception';
function thrownDescription(thrown) { function thrownDescription(thrown) {
var thrownName = errorType const thrownName = errorType
? j$.fnNameFor(thrown.constructor) ? j$.fnNameFor(thrown.constructor)
: 'an exception', : 'an exception';
thrownMessage = ''; let thrownMessage = '';
if (expected) { if (expected) {
thrownMessage = ' with message ' + matchersUtil.pp(thrown.message); thrownMessage = ' with message ' + matchersUtil.pp(thrown.message);
@@ -176,7 +177,7 @@ getJasmineRequireObj().toThrowError = function(j$) {
return false; return false;
} }
var Surrogate = function() {}; const Surrogate = function() {};
Surrogate.prototype = type.prototype; Surrogate.prototype = type.prototype;
return j$.isError_(new Surrogate()); return j$.isError_(new Surrogate());
} }

View File

@@ -1,5 +1,5 @@
getJasmineRequireObj().toThrowMatching = function(j$) { getJasmineRequireObj().toThrowMatching = function(j$) {
var usageError = j$.formatErrorMsg( const usageError = j$.formatErrorMsg(
'<toThrowMatching>', '<toThrowMatching>',
'expect(function() {<expectation>}).toThrowMatching(<Predicate>)' 'expect(function() {<expectation>}).toThrowMatching(<Predicate>)'
); );
@@ -16,8 +16,6 @@ getJasmineRequireObj().toThrowMatching = function(j$) {
function toThrowMatching(matchersUtil) { function toThrowMatching(matchersUtil) {
return { return {
compare: function(actual, predicate) { compare: function(actual, predicate) {
var thrown;
if (typeof actual !== 'function') { if (typeof actual !== 'function') {
throw new Error(usageError('Actual is not a Function')); throw new Error(usageError('Actual is not a Function'));
} }
@@ -26,6 +24,8 @@ getJasmineRequireObj().toThrowMatching = function(j$) {
throw new Error(usageError('Predicate is not a Function')); throw new Error(usageError('Predicate is not a Function'));
} }
let thrown;
try { try {
actual(); actual();
return fail('Expected function to throw an exception.'); return fail('Expected function to throw an exception.');

View File

@@ -1,6 +1,6 @@
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars,no-var
var getJasmineRequireObj = (function(jasmineGlobal) { var getJasmineRequireObj = (function(jasmineGlobal) {
var jasmineRequire; let jasmineRequire;
if ( if (
typeof module !== 'undefined' && typeof module !== 'undefined' &&
@@ -29,7 +29,7 @@ var getJasmineRequireObj = (function(jasmineGlobal) {
} }
getJasmineRequire().core = function(jRequire) { getJasmineRequire().core = function(jRequire) {
var j$ = {}; const j$ = {};
jRequire.base(j$, jasmineGlobal); jRequire.base(j$, jasmineGlobal);
j$.util = jRequire.util(j$); j$.util = jRequire.util(j$);

View File

@@ -1,5 +1,5 @@
getJasmineRequireObj().interface = function(jasmine, env) { getJasmineRequireObj().interface = function(jasmine, env) {
var jasmineInterface = { const jasmineInterface = {
/** /**
* Callback passed to parts of the Jasmine base interface. * Callback passed to parts of the Jasmine base interface.
* *

View File

@@ -1,15 +1,15 @@
getJasmineRequireObj().util = function(j$) { getJasmineRequireObj().util = function(j$) {
var util = {}; const util = {};
util.inherit = function(childClass, parentClass) { util.inherit = function(childClass, parentClass) {
var Subclass = function() {}; const Subclass = function() {};
Subclass.prototype = parentClass.prototype; Subclass.prototype = parentClass.prototype;
childClass.prototype = new Subclass(); childClass.prototype = new Subclass();
}; };
util.argsToArray = function(args) { util.argsToArray = function(args) {
var arrayOfArgs = []; const arrayOfArgs = [];
for (var i = 0; i < args.length; i++) { for (let i = 0; i < args.length; i++) {
arrayOfArgs.push(args[i]); arrayOfArgs.push(args[i]);
} }
return arrayOfArgs; return arrayOfArgs;
@@ -20,7 +20,7 @@ getJasmineRequireObj().util = function(j$) {
}; };
util.arrayContains = function(array, search) { util.arrayContains = function(array, search) {
var i = array.length; let i = array.length;
while (i--) { while (i--) {
if (array[i] === search) { if (array[i] === search) {
return true; return true;
@@ -34,8 +34,8 @@ getJasmineRequireObj().util = function(j$) {
return obj.slice(); return obj.slice();
} }
var cloned = {}; const cloned = {};
for (var prop in obj) { for (const prop in obj) {
if (obj.hasOwnProperty(prop)) { if (obj.hasOwnProperty(prop)) {
cloned[prop] = obj[prop]; cloned[prop] = obj[prop];
} }
@@ -45,10 +45,10 @@ getJasmineRequireObj().util = function(j$) {
}; };
util.cloneArgs = function(args) { util.cloneArgs = function(args) {
var clonedArgs = []; const clonedArgs = [];
var argsAsArray = j$.util.argsToArray(args); const argsAsArray = j$.util.argsToArray(args);
for (var i = 0; i < argsAsArray.length; i++) { for (let i = 0; i < argsAsArray.length; i++) {
var str = Object.prototype.toString.apply(argsAsArray[i]), const str = Object.prototype.toString.apply(argsAsArray[i]),
primitives = /^\[object (Boolean|String|RegExp|Number)/; primitives = /^\[object (Boolean|String|RegExp|Number)/;
// All falsey values are either primitives, `null`, or `undefined. // All falsey values are either primitives, `null`, or `undefined.
@@ -64,7 +64,7 @@ getJasmineRequireObj().util = function(j$) {
}; };
util.getPropertyDescriptor = function(obj, methodName) { util.getPropertyDescriptor = function(obj, methodName) {
var descriptor, let descriptor,
proto = obj; proto = obj;
do { do {
@@ -87,12 +87,12 @@ getJasmineRequireObj().util = function(j$) {
}; };
function callerFile() { function callerFile() {
var trace = new j$.StackTrace(util.errorWithStack()); const trace = new j$.StackTrace(util.errorWithStack());
return trace.frames[2].file; return trace.frames[2].file;
} }
util.jasmineFile = (function() { util.jasmineFile = (function() {
var result; let result;
return function() { return function() {
if (!result) { if (!result) {
@@ -113,7 +113,7 @@ getJasmineRequireObj().util = function(j$) {
// exceeded. But on all currently supported JS runtimes, setTimeout calls // exceeded. But on all currently supported JS runtimes, setTimeout calls
// the callback immediately when the timeout is greater than 2147483647 // the callback immediately when the timeout is greater than 2147483647
// (the maximum value of a signed 32 bit integer). // (the maximum value of a signed 32 bit integer).
var max = 2147483647; const max = 2147483647;
if (timeout > max) { if (timeout > max) {
throw new Error( throw new Error(

View File

@@ -48,19 +48,21 @@ jasmineRequire.HtmlReporter = function(j$) {
}; };
function HtmlReporter(options) { function HtmlReporter(options) {
var config = function() { function config() {
return (options.env && options.env.configuration()) || {}; return (options.env && options.env.configuration()) || {};
}, }
getContainer = options.getContainer,
createElement = options.createElement, const getContainer = options.getContainer;
createTextNode = options.createTextNode, const createElement = options.createElement;
navigateWithNewParam = options.navigateWithNewParam || function() {}, const createTextNode = options.createTextNode;
addToExistingQueryString = const navigateWithNewParam = options.navigateWithNewParam || function() {};
options.addToExistingQueryString || defaultQueryString, const addToExistingQueryString =
filterSpecs = options.filterSpecs, options.addToExistingQueryString || defaultQueryString;
htmlReporterMain, const filterSpecs = options.filterSpecs;
symbols, let htmlReporterMain;
deprecationWarnings = []; let symbols;
const deprecationWarnings = [];
const failures = [];
this.initialize = function() { this.initialize = function() {
clearPrior(); clearPrior();
@@ -88,14 +90,14 @@ jasmineRequire.HtmlReporter = function(j$) {
getContainer().appendChild(htmlReporterMain); getContainer().appendChild(htmlReporterMain);
}; };
var totalSpecsDefined; let totalSpecsDefined;
this.jasmineStarted = function(options) { this.jasmineStarted = function(options) {
totalSpecsDefined = options.totalSpecsDefined || 0; totalSpecsDefined = options.totalSpecsDefined || 0;
}; };
var summary = createDom('div', { className: 'jasmine-summary' }); const summary = createDom('div', { className: 'jasmine-summary' });
var stateBuilder = new ResultsStateBuilder(); const stateBuilder = new ResultsStateBuilder();
this.suiteStarted = function(result) { this.suiteStarted = function(result) {
stateBuilder.suiteStarted(result); stateBuilder.suiteStarted(result);
@@ -114,12 +116,11 @@ jasmineRequire.HtmlReporter = function(j$) {
stateBuilder.specStarted(result); stateBuilder.specStarted(result);
}; };
var failures = [];
this.specDone = function(result) { this.specDone = function(result) {
stateBuilder.specDone(result); stateBuilder.specDone(result);
if (noExpectations(result)) { if (noExpectations(result)) {
var noSpecMsg = "Spec '" + result.fullName + "' has no expectations."; const noSpecMsg = "Spec '" + result.fullName + "' has no expectations.";
if (result.status === 'failed') { if (result.status === 'failed') {
console.error(noSpecMsg); console.error(noSpecMsg);
} else { } else {
@@ -163,10 +164,10 @@ jasmineRequire.HtmlReporter = function(j$) {
this.jasmineDone = function(doneResult) { this.jasmineDone = function(doneResult) {
stateBuilder.jasmineDone(doneResult); stateBuilder.jasmineDone(doneResult);
var banner = find('.jasmine-banner'); const banner = find('.jasmine-banner');
var alert = find('.jasmine-alert'); const alert = find('.jasmine-alert');
var order = doneResult && doneResult.order; const order = doneResult && doneResult.order;
var i;
alert.appendChild( alert.appendChild(
createDom( createDom(
'span', 'span',
@@ -178,14 +179,14 @@ jasmineRequire.HtmlReporter = function(j$) {
banner.appendChild(optionsMenu(config())); banner.appendChild(optionsMenu(config()));
if (stateBuilder.specsExecuted < totalSpecsDefined) { if (stateBuilder.specsExecuted < totalSpecsDefined) {
var skippedMessage = const skippedMessage =
'Ran ' + 'Ran ' +
stateBuilder.specsExecuted + stateBuilder.specsExecuted +
' of ' + ' of ' +
totalSpecsDefined + totalSpecsDefined +
' specs - run all'; ' specs - run all';
// include window.location.pathname to fix issue with karma-jasmine-html-reporter in angular: see https://github.com/jasmine/jasmine/issues/1906 // include window.location.pathname to fix issue with karma-jasmine-html-reporter in angular: see https://github.com/jasmine/jasmine/issues/1906
var skippedLink = const skippedLink =
(window.location.pathname || '') + (window.location.pathname || '') +
addToExistingQueryString('spec', ''); addToExistingQueryString('spec', '');
alert.appendChild( alert.appendChild(
@@ -200,10 +201,11 @@ jasmineRequire.HtmlReporter = function(j$) {
) )
); );
} }
var statusBarMessage = ''; let statusBarMessage = '';
var statusBarClassName = 'jasmine-overall-result jasmine-bar '; let statusBarClassName = 'jasmine-overall-result jasmine-bar ';
var globalFailures = (doneResult && doneResult.failedExpectations) || []; const globalFailures =
var failed = stateBuilder.failureCount + globalFailures.length > 0; (doneResult && doneResult.failedExpectations) || [];
const failed = stateBuilder.failureCount + globalFailures.length > 0;
if (totalSpecsDefined > 0 || failed) { if (totalSpecsDefined > 0 || failed) {
statusBarMessage += statusBarMessage +=
@@ -229,7 +231,7 @@ jasmineRequire.HtmlReporter = function(j$) {
statusBarClassName += ' jasmine-failed '; statusBarClassName += ' jasmine-failed ';
} }
var seedBar; let seedBar;
if (order && order.random) { if (order && order.random) {
seedBar = createDom( seedBar = createDom(
'span', 'span',
@@ -255,10 +257,10 @@ jasmineRequire.HtmlReporter = function(j$) {
) )
); );
var errorBarClassName = 'jasmine-bar jasmine-errored'; const errorBarClassName = 'jasmine-bar jasmine-errored';
var afterAllMessagePrefix = 'AfterAll '; const afterAllMessagePrefix = 'AfterAll ';
for (i = 0; i < globalFailures.length; i++) { for (let i = 0; i < globalFailures.length; i++) {
alert.appendChild( alert.appendChild(
createDom( createDom(
'span', 'span',
@@ -270,7 +272,7 @@ jasmineRequire.HtmlReporter = function(j$) {
function globalFailureMessage(failure) { function globalFailureMessage(failure) {
if (failure.globalErrorType === 'load') { if (failure.globalErrorType === 'load') {
var prefix = 'Error during loading: ' + failure.message; const prefix = 'Error during loading: ' + failure.message;
if (failure.filename) { if (failure.filename) {
return ( return (
@@ -288,9 +290,9 @@ jasmineRequire.HtmlReporter = function(j$) {
addDeprecationWarnings(doneResult); addDeprecationWarnings(doneResult);
for (i = 0; i < deprecationWarnings.length; i++) { for (let i = 0; i < deprecationWarnings.length; i++) {
var children = [], const children = [];
context; let context;
switch (deprecationWarnings[i].runnableType) { switch (deprecationWarnings[i].runnableType) {
case 'spec': case 'spec':
@@ -324,7 +326,7 @@ jasmineRequire.HtmlReporter = function(j$) {
); );
} }
var results = find('.jasmine-results'); const results = find('.jasmine-results');
results.appendChild(summary); results.appendChild(summary);
summaryList(stateBuilder.topResults, summary); summaryList(stateBuilder.topResults, summary);
@@ -366,8 +368,8 @@ jasmineRequire.HtmlReporter = function(j$) {
setMenuModeTo('jasmine-failure-list'); setMenuModeTo('jasmine-failure-list');
var failureNode = find('.jasmine-failures'); const failureNode = find('.jasmine-failures');
for (i = 0; i < failures.length; i++) { for (let i = 0; i < failures.length; i++) {
failureNode.appendChild(failures[i]); failureNode.appendChild(failures[i]);
} }
} }
@@ -376,16 +378,16 @@ jasmineRequire.HtmlReporter = function(j$) {
return this; return this;
function failureDom(result) { function failureDom(result) {
var failure = createDom( const failure = createDom(
'div', 'div',
{ className: 'jasmine-spec-detail jasmine-failed' }, { className: 'jasmine-spec-detail jasmine-failed' },
failureDescription(result, stateBuilder.currentParent), failureDescription(result, stateBuilder.currentParent),
createDom('div', { className: 'jasmine-messages' }) createDom('div', { className: 'jasmine-messages' })
); );
var messages = failure.childNodes[1]; const messages = failure.childNodes[1];
for (var i = 0; i < result.failedExpectations.length; i++) { for (let i = 0; i < result.failedExpectations.length; i++) {
var expectation = result.failedExpectations[i]; const expectation = result.failedExpectations[i];
messages.appendChild( messages.appendChild(
createDom( createDom(
'div', 'div',
@@ -420,7 +422,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function debugLogTable(debugLogs) { function debugLogTable(debugLogs) {
var tbody = createDom('tbody'); const tbody = createDom('tbody');
debugLogs.forEach(function(entry) { debugLogs.forEach(function(entry) {
tbody.appendChild( tbody.appendChild(
@@ -460,14 +462,14 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function summaryList(resultsTree, domParent) { function summaryList(resultsTree, domParent) {
var specListNode; let specListNode;
for (var i = 0; i < resultsTree.children.length; i++) { for (let i = 0; i < resultsTree.children.length; i++) {
var resultNode = resultsTree.children[i]; const resultNode = resultsTree.children[i];
if (filterSpecs && !hasActiveSpec(resultNode)) { if (filterSpecs && !hasActiveSpec(resultNode)) {
continue; continue;
} }
if (resultNode.type === 'suite') { if (resultNode.type === 'suite') {
var suiteListNode = createDom( const suiteListNode = createDom(
'ul', 'ul',
{ className: 'jasmine-suite', id: 'suite-' + resultNode.result.id }, { className: 'jasmine-suite', id: 'suite-' + resultNode.result.id },
createDom( createDom(
@@ -492,7 +494,7 @@ jasmineRequire.HtmlReporter = function(j$) {
specListNode = createDom('ul', { className: 'jasmine-specs' }); specListNode = createDom('ul', { className: 'jasmine-specs' });
domParent.appendChild(specListNode); domParent.appendChild(specListNode);
} }
var specDescription = resultNode.result.description; let specDescription = resultNode.result.description;
if (noExpectations(resultNode.result)) { if (noExpectations(resultNode.result)) {
specDescription = 'SPEC HAS NO EXPECTATIONS ' + specDescription; specDescription = 'SPEC HAS NO EXPECTATIONS ' + specDescription;
} }
@@ -524,7 +526,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function optionsMenu(config) { function optionsMenu(config) {
var optionsMenuDom = createDom( const optionsMenuDom = createDom(
'div', 'div',
{ className: 'jasmine-run-options' }, { className: 'jasmine-run-options' },
createDom('span', { className: 'jasmine-trigger' }, 'Options'), createDom('span', { className: 'jasmine-trigger' }, 'Options'),
@@ -590,13 +592,15 @@ jasmineRequire.HtmlReporter = function(j$) {
) )
); );
var failFastCheckbox = optionsMenuDom.querySelector('#jasmine-fail-fast'); const failFastCheckbox = optionsMenuDom.querySelector(
'#jasmine-fail-fast'
);
failFastCheckbox.checked = config.stopOnSpecFailure; failFastCheckbox.checked = config.stopOnSpecFailure;
failFastCheckbox.onclick = function() { failFastCheckbox.onclick = function() {
navigateWithNewParam('stopOnSpecFailure', !config.stopOnSpecFailure); navigateWithNewParam('stopOnSpecFailure', !config.stopOnSpecFailure);
}; };
var throwCheckbox = optionsMenuDom.querySelector( const throwCheckbox = optionsMenuDom.querySelector(
'#jasmine-throw-failures' '#jasmine-throw-failures'
); );
throwCheckbox.checked = config.stopSpecOnExpectationFailure; throwCheckbox.checked = config.stopSpecOnExpectationFailure;
@@ -607,7 +611,7 @@ jasmineRequire.HtmlReporter = function(j$) {
); );
}; };
var randomCheckbox = optionsMenuDom.querySelector( const randomCheckbox = optionsMenuDom.querySelector(
'#jasmine-random-order' '#jasmine-random-order'
); );
randomCheckbox.checked = config.random; randomCheckbox.checked = config.random;
@@ -615,13 +619,15 @@ jasmineRequire.HtmlReporter = function(j$) {
navigateWithNewParam('random', !config.random); navigateWithNewParam('random', !config.random);
}; };
var hideDisabled = optionsMenuDom.querySelector('#jasmine-hide-disabled'); const hideDisabled = optionsMenuDom.querySelector(
'#jasmine-hide-disabled'
);
hideDisabled.checked = config.hideDisabled; hideDisabled.checked = config.hideDisabled;
hideDisabled.onclick = function() { hideDisabled.onclick = function() {
navigateWithNewParam('hideDisabled', !config.hideDisabled); navigateWithNewParam('hideDisabled', !config.hideDisabled);
}; };
var optionsTrigger = optionsMenuDom.querySelector('.jasmine-trigger'), const optionsTrigger = optionsMenuDom.querySelector('.jasmine-trigger'),
optionsPayload = optionsMenuDom.querySelector('.jasmine-payload'), optionsPayload = optionsMenuDom.querySelector('.jasmine-payload'),
isOpen = /\bjasmine-open\b/; isOpen = /\bjasmine-open\b/;
@@ -640,7 +646,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function failureDescription(result, suite) { function failureDescription(result, suite) {
var wrapper = createDom( const wrapper = createDom(
'div', 'div',
{ className: 'jasmine-description' }, { className: 'jasmine-description' },
createDom( createDom(
@@ -649,7 +655,7 @@ jasmineRequire.HtmlReporter = function(j$) {
result.description result.description
) )
); );
var suiteLink; let suiteLink;
while (suite && suite.parent) { while (suite && suite.parent) {
wrapper.insertBefore(createTextNode(' > '), wrapper.firstChild); wrapper.insertBefore(createTextNode(' > '), wrapper.firstChild);
@@ -667,7 +673,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function suiteHref(suite) { function suiteHref(suite) {
var els = []; const els = [];
while (suite && suite.parent) { while (suite && suite.parent) {
els.unshift(suite.result.description); els.unshift(suite.result.description);
@@ -683,8 +689,8 @@ jasmineRequire.HtmlReporter = function(j$) {
function addDeprecationWarnings(result, runnableType) { function addDeprecationWarnings(result, runnableType) {
if (result && result.deprecationWarnings) { if (result && result.deprecationWarnings) {
for (var i = 0; i < result.deprecationWarnings.length; i++) { for (let i = 0; i < result.deprecationWarnings.length; i++) {
var warning = result.deprecationWarnings[i].message; const warning = result.deprecationWarnings[i].message;
deprecationWarnings.push({ deprecationWarnings.push({
message: warning, message: warning,
stack: result.deprecationWarnings[i].stack, stack: result.deprecationWarnings[i].stack,
@@ -696,8 +702,8 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function createExpander(stackTrace) { function createExpander(stackTrace) {
var expandLink = createDom('a', { href: '#' }, 'Show stack trace'); const expandLink = createDom('a', { href: '#' }, 'Show stack trace');
var root = createDom( const root = createDom(
'div', 'div',
{ className: 'jasmine-expander' }, { className: 'jasmine-expander' },
expandLink, expandLink,
@@ -728,8 +734,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function clearPrior() { function clearPrior() {
// return the reporter const oldReporter = find('');
var oldReporter = find('');
if (oldReporter) { if (oldReporter) {
getContainer().removeChild(oldReporter); getContainer().removeChild(oldReporter);
@@ -737,22 +742,21 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function createDom(type, attrs, childrenArrayOrVarArgs) { function createDom(type, attrs, childrenArrayOrVarArgs) {
var el = createElement(type), const el = createElement(type);
children, let children;
i;
if (j$.isArray_(childrenArrayOrVarArgs)) { if (j$.isArray_(childrenArrayOrVarArgs)) {
children = childrenArrayOrVarArgs; children = childrenArrayOrVarArgs;
} else { } else {
children = []; children = [];
for (i = 2; i < arguments.length; i++) { for (let i = 2; i < arguments.length; i++) {
children.push(arguments[i]); children.push(arguments[i]);
} }
} }
for (i = 0; i < children.length; i++) { for (let i = 0; i < children.length; i++) {
var child = children[i]; const child = children[i];
if (typeof child === 'string') { if (typeof child === 'string') {
el.appendChild(createTextNode(child)); el.appendChild(createTextNode(child));
@@ -763,7 +767,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
} }
for (var attr in attrs) { for (const attr in attrs) {
if (attr == 'className') { if (attr == 'className') {
el[attr] = attrs[attr]; el[attr] = attrs[attr];
} else { } else {
@@ -775,7 +779,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function pluralize(singular, count) { function pluralize(singular, count) {
var word = count == 1 ? singular : singular + 's'; const word = count == 1 ? singular : singular + 's';
return '' + count + ' ' + word; return '' + count + ' ' + word;
} }
@@ -805,7 +809,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
function noExpectations(result) { function noExpectations(result) {
var allExpectations = const allExpectations =
result.failedExpectations.length + result.passedExpectations.length; result.failedExpectations.length + result.passedExpectations.length;
return ( return (
@@ -820,7 +824,7 @@ jasmineRequire.HtmlReporter = function(j$) {
} }
if (resultNode.type == 'suite') { if (resultNode.type == 'suite') {
for (var i = 0, j = resultNode.children.length; i < j; i++) { for (let i = 0, j = resultNode.children.length; i < j; i++) {
if (hasActiveSpec(resultNode.children[i])) { if (hasActiveSpec(resultNode.children[i])) {
return true; return true;
} }

View File

@@ -1,10 +1,10 @@
jasmineRequire.HtmlSpecFilter = function() { jasmineRequire.HtmlSpecFilter = function() {
function HtmlSpecFilter(options) { function HtmlSpecFilter(options) {
var filterString = const filterString =
options && options &&
options.filterString() && options.filterString() &&
options.filterString().replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); options.filterString().replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
var filterPattern = new RegExp(filterString); const filterPattern = new RegExp(filterString);
this.matches = function(specName) { this.matches = function(specName) {
return filterPattern.test(specName); return filterPattern.test(specName);

View File

@@ -8,7 +8,7 @@ jasmineRequire.QueryString = function() {
}; };
this.fullStringWithNewParam = function(key, value) { this.fullStringWithNewParam = function(key, value) {
var paramMap = queryStringToParamMap(); const paramMap = queryStringToParamMap();
paramMap[key] = value; paramMap[key] = value;
return toQueryString(paramMap); return toQueryString(paramMap);
}; };
@@ -20,8 +20,8 @@ jasmineRequire.QueryString = function() {
return this; return this;
function toQueryString(paramMap) { function toQueryString(paramMap) {
var qStrPairs = []; const qStrPairs = [];
for (var prop in paramMap) { for (const prop in paramMap) {
qStrPairs.push( qStrPairs.push(
encodeURIComponent(prop) + '=' + encodeURIComponent(paramMap[prop]) encodeURIComponent(prop) + '=' + encodeURIComponent(paramMap[prop])
); );
@@ -30,15 +30,15 @@ jasmineRequire.QueryString = function() {
} }
function queryStringToParamMap() { function queryStringToParamMap() {
var paramStr = options.getWindowLocation().search.substring(1), const paramStr = options.getWindowLocation().search.substring(1);
params = [], let params = [];
paramMap = {}; const paramMap = {};
if (paramStr.length > 0) { if (paramStr.length > 0) {
params = paramStr.split('&'); params = paramStr.split('&');
for (var i = 0; i < params.length; i++) { for (let i = 0; i < params.length; i++) {
var p = params[i].split('='); const p = params[i].split('=');
var value = decodeURIComponent(p[1]); let value = decodeURIComponent(p[1]);
if (value === 'true' || value === 'false') { if (value === 'true' || value === 'false') {
value = JSON.parse(value); value = JSON.parse(value);
} }

View File

@@ -1,3 +1,4 @@
// eslint-disable-next-line no-var
var jasmineRequire = window.jasmineRequire || require('./jasmine.js'); var jasmineRequire = window.jasmineRequire || require('./jasmine.js');
jasmineRequire.html = function(j$) { jasmineRequire.html = function(j$) {