]> source.dussan.org Git - jquery.git/commitdiff
Tests: Update the loader so test pages always get jQuery
authorRichard Gibson <richard.gibson@gmail.com>
Mon, 9 Jan 2017 19:23:47 +0000 (11:23 -0800)
committerGitHub <noreply@github.com>
Mon, 9 Jan 2017 19:23:47 +0000 (11:23 -0800)
Pages used for iframe tests will now successfully load jQuery, even when
opened directly in the browser.

Closes gh-3489

test/jquery.js

index 8119d3fc042d342b6c8bca3c6002c009121d25ac..e337a7940ff2c7c65fe8694fa75c21d76b5d4329 100644 (file)
@@ -2,21 +2,35 @@
 ( function() {
        /* global loadTests: false */
 
-       var src,
-               path = window.location.pathname.split( "test" )[ 0 ],
+       var path = window.location.pathname.split( "test" )[ 0 ],
                QUnit = window.QUnit || parent.QUnit,
-               require = window.require || parent.require;
-
-       // iFrames won't load AMD (the iframe tests synchronously expect jQuery to be there)
-       QUnit.config.urlConfig.push( {
-               id: "amd",
-               label: "Load with AMD",
-               tooltip: "Load the AMD jQuery file (and its dependencies)"
-       } );
-
-       // If QUnit is on window, this is the main window
-       // This detection allows AMD tests to be run in an iframe
-       if ( QUnit.urlParams.amd && window.QUnit ) {
+               require = window.require || parent.require,
+
+               // Default to unminified jQuery for directly-opened iframes
+               urlParams = QUnit ?
+                       QUnit.urlParams :
+                       { dev: true },
+               src = urlParams.dev ?
+                       "dist/jquery.js" :
+                       "dist/jquery.min.js";
+
+       // Define configuration parameters controlling how jQuery is loaded
+       if ( QUnit ) {
+               QUnit.config.urlConfig.push( {
+                       id: "amd",
+                       label: "Load with AMD",
+                       tooltip: "Load the AMD jQuery file (and its dependencies)"
+               } );
+               QUnit.config.urlConfig.push( {
+                       id: "dev",
+                       label: "Load unminified",
+                       tooltip: "Load the development (unminified) jQuery file"
+               } );
+       }
+
+       // Honor AMD 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 ( urlParams.amd && window.QUnit ) {
                require.config( {
                        baseUrl: path
                } );
                } else {
                        require( [ src ] );
                }
-               return;
-       }
 
-       // Config parameter to use minified jQuery
-       QUnit.config.urlConfig.push( {
-               id: "dev",
-               label: "Load unminified",
-               tooltip: "Load the development (unminified) jQuery file"
-       } );
-       if ( QUnit.urlParams.dev ) {
-               src = "dist/jquery.js";
+       // Otherwise, load synchronously
        } else {
-               src = "dist/jquery.min.js";
-       }
-
-       // Load jQuery
-       document.write( "<script id='jquery-js' src='" + path + src + "'><\x2Fscript>" );
+               document.write( "<script id='jquery-js' src='" + path + src + "'><\x2Fscript>" );
 
-       // Synchronous-only tests
-       // Other tests are loaded from the test page
-       if ( typeof loadTests !== "undefined" ) {
-               document.write( "<script src='" + path + "test/unit/ready.js'><\x2Fscript>" );
+               // Synchronous-only tests (other tests are loaded from the test page)
+               if ( typeof loadTests !== "undefined" ) {
+                       document.write( "<script src='" + path + "test/unit/ready.js'><\x2Fscript>" );
+               }
        }
 
 } )();