diff options
author | Michał Gołębiowski-Owczarek <m.goleb@gmail.com> | 2020-01-08 00:35:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-08 00:35:55 +0100 |
commit | 437f389a24a6bef213d4df507909e7e69062300b (patch) | |
tree | 376451c6d441906884fdec0f1a9cbd52501cd94a /test | |
parent | 0f780ba7cc5968d53bba386bdcb59b8d9410873b (diff) | |
download | jquery-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.js | 33 |
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 ) { |