aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>2020-01-08 00:35:55 +0100
committerGitHub <noreply@github.com>2020-01-08 00:35:55 +0100
commit437f389a24a6bef213d4df507909e7e69062300b (patch)
tree376451c6d441906884fdec0f1a9cbd52501cd94a /test
parent0f780ba7cc5968d53bba386bdcb59b8d9410873b (diff)
downloadjquery-437f389a24a6bef213d4df507909e7e69062300b.tar.gz
jquery-437f389a24a6bef213d4df507909e7e69062300b.zip
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
Diffstat (limited to 'test')
-rw-r--r--test/jquery.js33
1 files changed, 22 insertions, 11 deletions
diff --git a/test/jquery.js b/test/jquery.js
index be2445395..2d12a5ff3 100644
--- a/test/jquery.js
+++ b/test/jquery.js
@@ -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 ) {