mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Build: Make dev mode work in Karma again, serve source files from disk
PR gh-4550 added support for running ES modules & AMD tests via Karma. This required reading the `esmodules` & `amd` props from both `QUnit.config` & `QUnit.urlParams`. By picking these two properties manually, the `dev` one stopped being respected while ones handled directly by QUnit were fine (like `hidepassed`). Instead of maintaining the full list of options, the code now iterates over QUnit URL config and handles the fallbacks in a more generic way. Apart from that, all jQuery source & test files are now read directly from disk instead of being cached by Karma so that one can run `grunt karma:chrome-debug` & work on a fix without restarting that Karma run after each change. A similar effect could have been achieved by setting `autoWatch` to `true` but then the main Karma page runs tests in an iframe by default when `grunt karma:chrome-debug` is run instead of relying on the current debug flow. Closes gh-4574 Ref gh-4550
This commit is contained in:
parent
0f780ba7cc
commit
437f389a24
25
Gruntfile.js
25
Gruntfile.js
@ -158,14 +158,31 @@ module.exports = function( grunt ) {
|
||||
|
||||
"test/jquery.js",
|
||||
|
||||
{ pattern: "dist/jquery.*", included: false, served: true },
|
||||
{ pattern: "src/**", type: "module", included: false, served: true },
|
||||
{ pattern: "amd/**", included: false, served: true },
|
||||
{
|
||||
pattern: "dist/jquery.*",
|
||||
included: false,
|
||||
served: true,
|
||||
nocache: true
|
||||
},
|
||||
{
|
||||
pattern: "src/**",
|
||||
type: "module",
|
||||
included: false,
|
||||
served: true,
|
||||
nocache: true
|
||||
},
|
||||
{
|
||||
pattern: "amd/**",
|
||||
included: false,
|
||||
served: true,
|
||||
nocache: true
|
||||
},
|
||||
{ pattern: "node_modules/**", included: false, served: true },
|
||||
{
|
||||
pattern: "test/**/*.@(js|css|jpg|html|xml|svg)",
|
||||
included: false,
|
||||
served: true
|
||||
served: true,
|
||||
nocache: true
|
||||
}
|
||||
],
|
||||
reporters: [ "dots" ],
|
||||
|
33
test/jquery.js
vendored
33
test/jquery.js
vendored
@ -2,29 +2,34 @@
|
||||
( function() {
|
||||
/* global loadTests: false */
|
||||
|
||||
var dynamicImportSource,
|
||||
var dynamicImportSource, config, src,
|
||||
FILEPATH = "/test/jquery.js",
|
||||
activeScript = [].slice.call( document.getElementsByTagName( "script" ), -1 )[ 0 ],
|
||||
parentUrl = activeScript && activeScript.src ?
|
||||
activeScript.src.replace( /[?#].*/, "" ) + FILEPATH.replace( /[^/]+/g, ".." ) + "/" :
|
||||
"../",
|
||||
QUnit = window.QUnit,
|
||||
require = window.require,
|
||||
require = window.require;
|
||||
|
||||
function getQUnitConfig() {
|
||||
var config = Object.create( null );
|
||||
|
||||
// Default to unminified jQuery for directly-opened iframes
|
||||
config = QUnit ?
|
||||
if ( !QUnit ) {
|
||||
config.dev = true;
|
||||
} else {
|
||||
|
||||
// QUnit.config is populated from QUnit.urlParams but only at the beginning
|
||||
// of the test run. We need to read both.
|
||||
{
|
||||
esmodules: !!( QUnit.config.esmodules || QUnit.urlParams.esmodules ),
|
||||
amd: !!( QUnit.config.amd || QUnit.urlParams.amd )
|
||||
} :
|
||||
QUnit.config.urlConfig.forEach( function( entry ) {
|
||||
config[ entry.id ] = QUnit.config[ entry.id ] != null ?
|
||||
QUnit.config[ entry.id ] :
|
||||
QUnit.urlParams[ entry.id ];
|
||||
} );
|
||||
}
|
||||
|
||||
{ dev: true },
|
||||
src = config.dev ?
|
||||
"dist/jquery.js" :
|
||||
"dist/jquery.min.js";
|
||||
return config;
|
||||
}
|
||||
|
||||
// Define configuration parameters controlling how jQuery is loaded
|
||||
if ( QUnit ) {
|
||||
@ -43,6 +48,12 @@
|
||||
} );
|
||||
}
|
||||
|
||||
config = getQUnitConfig();
|
||||
|
||||
src = config.dev ?
|
||||
"dist/jquery.js" :
|
||||
"dist/jquery.min.js";
|
||||
|
||||
// Honor ES modules loading on the main window (detected by seeing QUnit on it).
|
||||
// This doesn't apply to iframes because they synchronously expect jQuery to be there.
|
||||
if ( config.esmodules && QUnit ) {
|
||||
|
Loading…
Reference in New Issue
Block a user