Move knowledge of query parameters out of boot1.js
This commit is contained in:
@@ -38,20 +38,12 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||||||
(function() {
|
(function() {
|
||||||
const env = jasmine.getEnv();
|
const env = jasmine.getEnv();
|
||||||
|
|
||||||
/**
|
|
||||||
* ## Runner Parameters
|
|
||||||
*
|
|
||||||
* More browser specific code - wrap the query string in an object and to allow for getting/setting parameters from the runner user interface.
|
|
||||||
*/
|
|
||||||
|
|
||||||
const queryString = new jasmine.QueryString({
|
const queryString = new jasmine.QueryString({
|
||||||
getWindowLocation: function() {
|
getWindowLocation: function() {
|
||||||
return window.location;
|
return window.location;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const filterSpecs = !!queryString.getParam('spec');
|
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
stopOnSpecFailure: queryString.getParam('stopOnSpecFailure'),
|
stopOnSpecFailure: queryString.getParam('stopOnSpecFailure'),
|
||||||
stopSpecOnExpectationFailure: queryString.getParam(
|
stopSpecOnExpectationFailure: queryString.getParam(
|
||||||
@@ -93,7 +85,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||||||
return document.createTextNode.apply(document, arguments);
|
return document.createTextNode.apply(document, arguments);
|
||||||
},
|
},
|
||||||
timer: new jasmine.Timer(),
|
timer: new jasmine.Timer(),
|
||||||
filterSpecs: filterSpecs
|
queryString
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -105,12 +97,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.
|
||||||
*/
|
*/
|
||||||
const specFilter = new jasmine.HtmlExactSpecFilter({
|
const specFilter = new jasmine.HtmlExactSpecFilter({ queryString });
|
||||||
filterString: function() {
|
|
||||||
return queryString.getParam('spec');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
config.specFilter = function(spec) {
|
config.specFilter = function(spec) {
|
||||||
return specFilter.matches(spec);
|
return specFilter.matches(spec);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -99,10 +99,14 @@ jasmineRequire.HtmlReporter = function(j$) {
|
|||||||
const getContainer = options.getContainer;
|
const getContainer = options.getContainer;
|
||||||
const createElement = options.createElement;
|
const createElement = options.createElement;
|
||||||
const createTextNode = options.createTextNode;
|
const createTextNode = options.createTextNode;
|
||||||
|
// TODO: in the next major release, replace navigateWithNewParam and
|
||||||
|
// addToExistingQueryString with direct usage of options.queryString
|
||||||
const navigateWithNewParam = options.navigateWithNewParam || function() {};
|
const navigateWithNewParam = options.navigateWithNewParam || function() {};
|
||||||
const addToExistingQueryString =
|
const addToExistingQueryString =
|
||||||
options.addToExistingQueryString || defaultQueryString;
|
options.addToExistingQueryString || defaultQueryString;
|
||||||
const filterSpecs = options.filterSpecs;
|
const filterSpecs = options.queryString
|
||||||
|
? !!options.queryString.getParam('spec')
|
||||||
|
: options.filterSpecs; // For compatibility with pre-5.11 boot files
|
||||||
let htmlReporterMain;
|
let htmlReporterMain;
|
||||||
let symbols;
|
let symbols;
|
||||||
const deprecationWarnings = [];
|
const deprecationWarnings = [];
|
||||||
@@ -1032,16 +1036,13 @@ jasmineRequire.HtmlExactSpecFilter = function() {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a filter instance.
|
* Create a filter instance.
|
||||||
* @param options Object with a filterString method, which should
|
* @param options Object with a queryString property, which should be an
|
||||||
* return the value of the "spec" query string parameter set by
|
* instance of {@link QueryString}.
|
||||||
* {@link HtmlReporter}.
|
|
||||||
*/
|
*/
|
||||||
constructor(options) {
|
constructor(options) {
|
||||||
if (typeof options?.filterString !== 'function') {
|
this.#getFilterString = function() {
|
||||||
throw new Error('options.filterString must be a function');
|
return options.queryString.getParam('spec');
|
||||||
}
|
};
|
||||||
|
|
||||||
this.#getFilterString = options.filterString;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
describe('HtmlExactSpecFilter', function() {
|
describe('HtmlExactSpecFilter', function() {
|
||||||
it('matches everything when no string is provided', function() {
|
it('matches everything when no string is provided', function() {
|
||||||
const specFilter = new jasmineUnderTest.HtmlExactSpecFilter({
|
const specFilter = new jasmineUnderTest.HtmlExactSpecFilter({
|
||||||
filterString() {
|
queryString: {
|
||||||
return '';
|
getParam(name) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -11,8 +13,12 @@ describe('HtmlExactSpecFilter', function() {
|
|||||||
|
|
||||||
it('matches a spec with the exact same path', function() {
|
it('matches a spec with the exact same path', function() {
|
||||||
const specFilter = new jasmineUnderTest.HtmlExactSpecFilter({
|
const specFilter = new jasmineUnderTest.HtmlExactSpecFilter({
|
||||||
filterString() {
|
queryString: {
|
||||||
return '["a","b","c"]';
|
getParam(name) {
|
||||||
|
if (name === 'spec') {
|
||||||
|
return '["a","b","c"]';
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -21,8 +27,12 @@ describe('HtmlExactSpecFilter', function() {
|
|||||||
|
|
||||||
it('matches a spec whose path has the filter path as a prefix', function() {
|
it('matches a spec whose path has the filter path as a prefix', function() {
|
||||||
const specFilter = new jasmineUnderTest.HtmlExactSpecFilter({
|
const specFilter = new jasmineUnderTest.HtmlExactSpecFilter({
|
||||||
filterString() {
|
queryString: {
|
||||||
return '["a","b"]';
|
getParam(name) {
|
||||||
|
if (name === 'spec') {
|
||||||
|
return '["a","b"]';
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -31,8 +41,12 @@ describe('HtmlExactSpecFilter', function() {
|
|||||||
|
|
||||||
it('does not match a spec with a different path', function() {
|
it('does not match a spec with a different path', function() {
|
||||||
const specFilter = new jasmineUnderTest.HtmlExactSpecFilter({
|
const specFilter = new jasmineUnderTest.HtmlExactSpecFilter({
|
||||||
filterString() {
|
queryString: {
|
||||||
return '["a","b","c"]';
|
getParam(name) {
|
||||||
|
if (name === 'spec') {
|
||||||
|
return '["a","b","c"]';
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1368,6 +1368,11 @@ describe('HtmlReporter', function() {
|
|||||||
},
|
},
|
||||||
createTextNode: function() {
|
createTextNode: function() {
|
||||||
return document.createTextNode.apply(document, arguments);
|
return document.createTextNode.apply(document, arguments);
|
||||||
|
},
|
||||||
|
queryString: {
|
||||||
|
getParam(name) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
specStatus = {
|
specStatus = {
|
||||||
@@ -1382,7 +1387,12 @@ describe('HtmlReporter', function() {
|
|||||||
|
|
||||||
describe('when the specs are not filtered', function() {
|
describe('when the specs are not filtered', function() {
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
reporterConfig.filterSpecs = false;
|
reporterConfig.queryString.getParam = function(name) {
|
||||||
|
if (name !== 'spec') {
|
||||||
|
throw new Error('Unexpected query param ' + name);
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
};
|
||||||
reporter = new jasmineUnderTest.HtmlReporter(reporterConfig);
|
reporter = new jasmineUnderTest.HtmlReporter(reporterConfig);
|
||||||
reporter.initialize();
|
reporter.initialize();
|
||||||
reporter.jasmineStarted({ totalSpecsDefined: 1 });
|
reporter.jasmineStarted({ totalSpecsDefined: 1 });
|
||||||
@@ -1400,7 +1410,12 @@ describe('HtmlReporter', function() {
|
|||||||
|
|
||||||
describe('when the specs are filtered', function() {
|
describe('when the specs are filtered', function() {
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
reporterConfig.filterSpecs = true;
|
reporterConfig.queryString.getParam = function(name) {
|
||||||
|
if (name !== 'spec') {
|
||||||
|
throw new Error('Unexpected query param ' + name);
|
||||||
|
}
|
||||||
|
return 'not the empty string';
|
||||||
|
};
|
||||||
reporter = new jasmineUnderTest.HtmlReporter(reporterConfig);
|
reporter = new jasmineUnderTest.HtmlReporter(reporterConfig);
|
||||||
reporter.initialize();
|
reporter.initialize();
|
||||||
reporter.jasmineStarted({ totalSpecsDefined: 1 });
|
reporter.jasmineStarted({ totalSpecsDefined: 1 });
|
||||||
|
|||||||
+2
-15
@@ -14,20 +14,12 @@
|
|||||||
(function() {
|
(function() {
|
||||||
const env = jasmine.getEnv();
|
const env = jasmine.getEnv();
|
||||||
|
|
||||||
/**
|
|
||||||
* ## Runner Parameters
|
|
||||||
*
|
|
||||||
* More browser specific code - wrap the query string in an object and to allow for getting/setting parameters from the runner user interface.
|
|
||||||
*/
|
|
||||||
|
|
||||||
const queryString = new jasmine.QueryString({
|
const queryString = new jasmine.QueryString({
|
||||||
getWindowLocation: function() {
|
getWindowLocation: function() {
|
||||||
return window.location;
|
return window.location;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const filterSpecs = !!queryString.getParam('spec');
|
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
stopOnSpecFailure: queryString.getParam('stopOnSpecFailure'),
|
stopOnSpecFailure: queryString.getParam('stopOnSpecFailure'),
|
||||||
stopSpecOnExpectationFailure: queryString.getParam(
|
stopSpecOnExpectationFailure: queryString.getParam(
|
||||||
@@ -69,7 +61,7 @@
|
|||||||
return document.createTextNode.apply(document, arguments);
|
return document.createTextNode.apply(document, arguments);
|
||||||
},
|
},
|
||||||
timer: new jasmine.Timer(),
|
timer: new jasmine.Timer(),
|
||||||
filterSpecs: filterSpecs
|
queryString
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -81,12 +73,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.
|
||||||
*/
|
*/
|
||||||
const specFilter = new jasmine.HtmlExactSpecFilter({
|
const specFilter = new jasmine.HtmlExactSpecFilter({ queryString });
|
||||||
filterString: function() {
|
|
||||||
return queryString.getParam('spec');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
config.specFilter = function(spec) {
|
config.specFilter = function(spec) {
|
||||||
return specFilter.matches(spec);
|
return specFilter.matches(spec);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -10,16 +10,13 @@ jasmineRequire.HtmlExactSpecFilter = function() {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a filter instance.
|
* Create a filter instance.
|
||||||
* @param options Object with a filterString method, which should
|
* @param options Object with a queryString property, which should be an
|
||||||
* return the value of the "spec" query string parameter set by
|
* instance of {@link QueryString}.
|
||||||
* {@link HtmlReporter}.
|
|
||||||
*/
|
*/
|
||||||
constructor(options) {
|
constructor(options) {
|
||||||
if (typeof options?.filterString !== 'function') {
|
this.#getFilterString = function() {
|
||||||
throw new Error('options.filterString must be a function');
|
return options.queryString.getParam('spec');
|
||||||
}
|
};
|
||||||
|
|
||||||
this.#getFilterString = options.filterString;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -64,10 +64,14 @@ jasmineRequire.HtmlReporter = function(j$) {
|
|||||||
const getContainer = options.getContainer;
|
const getContainer = options.getContainer;
|
||||||
const createElement = options.createElement;
|
const createElement = options.createElement;
|
||||||
const createTextNode = options.createTextNode;
|
const createTextNode = options.createTextNode;
|
||||||
|
// TODO: in the next major release, replace navigateWithNewParam and
|
||||||
|
// addToExistingQueryString with direct usage of options.queryString
|
||||||
const navigateWithNewParam = options.navigateWithNewParam || function() {};
|
const navigateWithNewParam = options.navigateWithNewParam || function() {};
|
||||||
const addToExistingQueryString =
|
const addToExistingQueryString =
|
||||||
options.addToExistingQueryString || defaultQueryString;
|
options.addToExistingQueryString || defaultQueryString;
|
||||||
const filterSpecs = options.filterSpecs;
|
const filterSpecs = options.queryString
|
||||||
|
? !!options.queryString.getParam('spec')
|
||||||
|
: options.filterSpecs; // For compatibility with pre-5.11 boot files
|
||||||
let htmlReporterMain;
|
let htmlReporterMain;
|
||||||
let symbols;
|
let symbols;
|
||||||
const deprecationWarnings = [];
|
const deprecationWarnings = [];
|
||||||
|
|||||||
Reference in New Issue
Block a user