2013-08-15 18:15:49 +00:00
|
|
|
// Use the right jQuery source on the test page (and iframes)
|
2015-09-02 23:53:29 +00:00
|
|
|
( function() {
|
2013-08-29 20:18:17 +00:00
|
|
|
/* global loadTests: false */
|
2013-08-15 18:15:49 +00:00
|
|
|
|
2020-01-07 23:35:55 +00:00
|
|
|
var dynamicImportSource, config, src,
|
2019-11-18 20:15:03 +00:00
|
|
|
FILEPATH = "/test/jquery.js",
|
2018-09-07 14:14:01 +00:00
|
|
|
activeScript = [].slice.call( document.getElementsByTagName( "script" ), -1 )[ 0 ],
|
|
|
|
parentUrl = activeScript && activeScript.src ?
|
|
|
|
activeScript.src.replace( /[?#].*/, "" ) + FILEPATH.replace( /[^/]+/g, ".." ) + "/" :
|
|
|
|
"../",
|
2019-12-16 18:33:49 +00:00
|
|
|
QUnit = window.QUnit,
|
2020-01-07 23:35:55 +00:00
|
|
|
require = window.require;
|
|
|
|
|
|
|
|
function getQUnitConfig() {
|
|
|
|
var config = Object.create( null );
|
2017-01-09 19:23:47 +00:00
|
|
|
|
|
|
|
// Default to unminified jQuery for directly-opened iframes
|
2020-01-07 23:35:55 +00:00
|
|
|
if ( !QUnit ) {
|
|
|
|
config.dev = true;
|
|
|
|
} else {
|
2019-12-16 18:33:49 +00:00
|
|
|
|
|
|
|
// QUnit.config is populated from QUnit.urlParams but only at the beginning
|
|
|
|
// of the test run. We need to read both.
|
2020-01-07 23:35:55 +00:00
|
|
|
QUnit.config.urlConfig.forEach( function( entry ) {
|
|
|
|
config[ entry.id ] = QUnit.config[ entry.id ] != null ?
|
|
|
|
QUnit.config[ entry.id ] :
|
|
|
|
QUnit.urlParams[ entry.id ];
|
|
|
|
} );
|
|
|
|
}
|
2019-12-16 18:33:49 +00:00
|
|
|
|
2020-01-07 23:35:55 +00:00
|
|
|
return config;
|
|
|
|
}
|
2017-01-09 19:23:47 +00:00
|
|
|
|
|
|
|
// Define configuration parameters controlling how jQuery is loaded
|
|
|
|
if ( QUnit ) {
|
|
|
|
QUnit.config.urlConfig.push( {
|
2019-12-16 18:33:49 +00:00
|
|
|
id: "esmodules",
|
|
|
|
label: "Load as modules",
|
|
|
|
tooltip: "Load the jQuery module file (and its dependencies)"
|
|
|
|
}, {
|
|
|
|
id: "amd",
|
|
|
|
label: "Load with AMD",
|
|
|
|
tooltip: "Load the AMD jQuery file (and its dependencies)"
|
|
|
|
}, {
|
2017-01-09 19:23:47 +00:00
|
|
|
id: "dev",
|
|
|
|
label: "Load unminified",
|
|
|
|
tooltip: "Load the development (unminified) jQuery file"
|
|
|
|
} );
|
|
|
|
}
|
|
|
|
|
2020-01-07 23:35:55 +00:00
|
|
|
config = getQUnitConfig();
|
|
|
|
|
|
|
|
src = config.dev ?
|
|
|
|
"dist/jquery.js" :
|
|
|
|
"dist/jquery.min.js";
|
|
|
|
|
2019-12-09 19:00:44 +00:00
|
|
|
// Honor ES modules loading on the main window (detected by seeing QUnit on it).
|
2017-01-09 19:23:47 +00:00
|
|
|
// This doesn't apply to iframes because they synchronously expect jQuery to be there.
|
2019-12-16 18:33:49 +00:00
|
|
|
if ( config.esmodules && QUnit ) {
|
2015-09-02 23:53:29 +00:00
|
|
|
|
2019-11-18 20:15:03 +00:00
|
|
|
// Support: IE 11+, Edge 12 - 18+
|
|
|
|
// IE/Edge don't support the dynamic import syntax so they'd crash
|
|
|
|
// with a SyntaxError here.
|
|
|
|
dynamicImportSource = "" +
|
2019-12-16 18:33:49 +00:00
|
|
|
"import( `${ parentUrl }src/jquery.js` )\n" +
|
|
|
|
" .then( ( { default: jQuery } ) => {\n" +
|
|
|
|
" window.jQuery = jQuery;\n" +
|
|
|
|
" if ( typeof loadTests === \"function\" ) {\n" +
|
|
|
|
" // Include tests if specified\n" +
|
|
|
|
" loadTests();\n" +
|
|
|
|
" }\n" +
|
|
|
|
" } )\n" +
|
|
|
|
" .catch( error => {\n" +
|
|
|
|
" console.error( error );\n" +
|
|
|
|
" QUnit.done();\n" +
|
|
|
|
" } );";
|
2019-11-18 20:15:03 +00:00
|
|
|
|
|
|
|
eval( dynamicImportSource );
|
2013-08-15 18:15:49 +00:00
|
|
|
|
2019-12-09 19:00:44 +00:00
|
|
|
// Apply similar treatment for AMD modules
|
2019-12-16 18:33:49 +00:00
|
|
|
} else if ( config.amd && QUnit ) {
|
2019-12-09 19:00:44 +00:00
|
|
|
require.config( {
|
|
|
|
baseUrl: parentUrl
|
|
|
|
} );
|
|
|
|
src = "amd/jquery";
|
|
|
|
|
|
|
|
// Include tests if specified
|
|
|
|
if ( typeof loadTests !== "undefined" ) {
|
|
|
|
require( [ src ], loadTests );
|
|
|
|
} else {
|
|
|
|
require( [ src ] );
|
|
|
|
}
|
|
|
|
|
2017-01-09 19:23:47 +00:00
|
|
|
// Otherwise, load synchronously
|
2013-08-15 18:15:49 +00:00
|
|
|
} else {
|
2019-01-14 18:29:54 +00:00
|
|
|
document.write( "<script id='jquery-js' nonce='jquery+hardcoded+nonce' src='" + parentUrl + src + "'><\x2Fscript>" );
|
2013-08-15 18:15:49 +00:00
|
|
|
}
|
2013-08-29 20:18:17 +00:00
|
|
|
|
2015-09-02 23:53:29 +00:00
|
|
|
} )();
|