From 6a6604b7856494d2aa9bc8adb2d77798dd19e480 Mon Sep 17 00:00:00 2001 From: Richard Gibson Date: Tue, 3 Sep 2013 09:55:32 -0400 Subject: [PATCH] No ticket: Hide the testing-support jQuery from tests (cherry picked from commit 0c185209233f4c15e57c6a24e8f81b27dd26db59) Conflicts: test/data/testrunner.js --- test/.jshintrc | 2 ++ test/data/testinit.js | 13 ++++++----- test/data/testrunner.js | 46 +++++++++++++++++++++------------------ test/unit/attributes.js | 2 +- test/unit/core.js | 7 +++--- test/unit/event.js | 1 + test/unit/manipulation.js | 10 ++++----- 7 files changed, 45 insertions(+), 36 deletions(-) diff --git a/test/.jshintrc b/test/.jshintrc index f974f8e4b..34f8a5b2d 100644 --- a/test/.jshintrc +++ b/test/.jshintrc @@ -38,6 +38,7 @@ "ajaxTest": false, "testIframe": false, "testIframeWithCallback": false, + "iframeCallback": true, "createDashboardXML": false, "createXMLFragment": false, "moduleTeardown": false, @@ -54,6 +55,7 @@ "Globals": true, "hasPHP": true, "isLocal": true, + "supportjQuery": true, "originaljQuery": true, "$": true, "original$": true, diff --git a/test/data/testinit.js b/test/data/testinit.js index 30136de36..8cb57d5f5 100644 --- a/test/data/testinit.js +++ b/test/data/testinit.js @@ -1,17 +1,17 @@ /*jshint multistr:true, quotmark:false */ -var fireNative, - originaljQuery = this.jQuery || "jQuery", - original$ = this.$ || "$", +var fireNative, originaljQuery, original$, + supportjQuery = this.jQuery, // see RFC 2606 externalHost = "example.com"; this.hasPHP = true; this.isLocal = window.location.protocol === "file:"; -// For testing .noConflict() -this.jQuery = originaljQuery; -this.$ = original$; +// Setup global variables before loading jQuery for testing .noConflict() +supportjQuery.noConflict( true ); +originaljQuery = this.jQuery = undefined; +original$ = this.$ = "replaced"; /** * Returns an array of elements with the given IDs @@ -253,3 +253,4 @@ this.testIframeWithCallback = function( title, fileName, func ) { ).appendTo( "body" ); }); }; +this.iframeCallback = undefined; diff --git a/test/data/testrunner.js b/test/data/testrunner.js index 8ddb0544a..ea0eb014e 100644 --- a/test/data/testrunner.js +++ b/test/data/testrunner.js @@ -1,19 +1,21 @@ -/** - * Allow the test suite to run with other libs or jQuery's. - */ -jQuery.noConflict(); +if ( typeof jQuery !== "undefined" ) { + /** + * Allow the test suite to run with other libs or jQuery's. + */ + jQuery.noConflict(); + + // Expose Sizzle for Sizzle's selector tests + // We remove Sizzle's globalization in jQuery + this.Sizzle = this.Sizzle || jQuery.find; +} // For checking globals pollution despite auto-created globals in various environments -jQuery.each( [ jQuery.expando, "getInterface", "Packages", "java", "netscape" ], function( i, name ) { +supportjQuery.each( [ jQuery.expando, "getInterface", "Packages", "java", "netscape" ], function( i, name ) { window[ name ] = window[ name ]; }); -// Expose Sizzle for Sizzle's selector tests -// We remove Sizzle's globalization in jQuery -var Sizzle = Sizzle || jQuery.find, - // Allow subprojects to test against their own fixtures - qunitModule = QUnit.module, +var qunitModule = QUnit.module, qunitTest = QUnit.test; /** @@ -53,7 +55,7 @@ this.testSubproject = function( label, url, risTests, complete ) { // Find test function and wrap to require subproject fixture for ( ; i >= 0; i-- ) { - if ( originaljQuery.isFunction( args[i] ) ) { + if ( supportjQuery.isFunction( args[i] ) ) { args[i] = requireFixture( args[i] ); break; } @@ -64,7 +66,7 @@ this.testSubproject = function( label, url, risTests, complete ) { // Load tests and fixture from subproject // Test order matters, so we must be synchronous and throw an error on load failure - originaljQuery.ajax( url, { + supportjQuery.ajax( url, { async: false, dataType: "html", error: function( jqXHR, status ) { @@ -72,7 +74,7 @@ this.testSubproject = function( label, url, risTests, complete ) { }, success: function( data, status, jqXHR ) { var sources = [], - page = originaljQuery.parseHTML( + page = supportjQuery.parseHTML( // replace html/head with dummy elements so they are represented in the DOM ( data || "" ).replace( /<\/?((!DOCTYPE|html|head)\b.*?)>/gi, "[$1]" ), document, @@ -82,11 +84,11 @@ this.testSubproject = function( label, url, risTests, complete ) { if ( !page || !page.length ) { this.error( jqXHR, "no data" ); } - page = originaljQuery( page ); + page = supportjQuery( page ); // Include subproject tests page.filter("script[src]").add( page.find("script[src]") ).map(function() { - var src = originaljQuery( this ).attr("src"); + var src = supportjQuery( this ).attr("src"); if ( risTests.test( src ) ) { sources.push( src ); } @@ -123,7 +125,7 @@ this.testSubproject = function( label, url, risTests, complete ) { } // Replace the current fixture, including content outside of #qunit-fixture - var oldFixture = originaljQuery("#qunit-fixture"); + var oldFixture = supportjQuery("#qunit-fixture"); while ( oldFixture.length && !oldFixture.prevAll("[id='qunit']").length ) { oldFixture = oldFixture.parent(); } @@ -133,7 +135,7 @@ this.testSubproject = function( label, url, risTests, complete ) { // WARNING: UNDOCUMENTED INTERFACE QUnit.config.fixture = fixtureHTML; QUnit.reset(); - if ( originaljQuery("#qunit-fixture").html() !== fixtureHTML ) { + if ( supportjQuery("#qunit-fixture").html() !== fixtureHTML ) { ok( false, "Copied subproject fixture" ); return; } @@ -153,15 +155,15 @@ this.Globals = (function() { return { register: function( name ) { globals[ name ] = true; - jQuery.globalEval( "var " + name + " = undefined;" ); + supportjQuery.globalEval( "var " + name + " = undefined;" ); }, cleanup: function() { var name, current = globals; globals = {}; for ( name in current ) { - jQuery.globalEval( "try { " + - "delete " + ( jQuery.support.deleteExpando ? "window['" + name + "']" : name ) + + supportjQuery.globalEval( "try { " + + "delete " + ( supportjQuery.support.deleteExpando ? "window['" + name + "']" : name ) + "; } catch( x ) {}" ); } } @@ -335,7 +337,7 @@ this.Globals = (function() { QUnit.done(function() { // Remove our own fixtures outside #qunit-fixture - jQuery("#qunit ~ *").remove(); + supportjQuery("#qunit ~ *").remove(); }); // jQuery-specific QUnit.reset @@ -343,6 +345,8 @@ this.Globals = (function() { // Ensure jQuery events and data on the fixture are properly removed jQuery("#qunit-fixture").empty(); + // ...even if the jQuery under test has a broken .empty() + supportjQuery("#qunit-fixture").empty(); // Reset internal jQuery state jQuery.event.global = {}; diff --git a/test/unit/attributes.js b/test/unit/attributes.js index dc34f9df7..bef1fa236 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -100,7 +100,7 @@ test( "attr(String)", function() { jQuery("").appendTo("#qunit-fixture"); equal( jQuery("#tAnchor5").prop("href"), jQuery("#tAnchor6").prop("href"), "Check for absolute href prop on an anchor" ); - $("").appendTo("#qunit-fixture"); + jQuery("").appendTo("#qunit-fixture"); equal( jQuery("#tAnchor5").prop("href"), jQuery("#scriptSrc").prop("src"), "Check for absolute src prop on a script" ); // list attribute is readonly by default in browsers that support it diff --git a/test/unit/core.js b/test/unit/core.js index e57d53334..cdc4c6528 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -353,8 +353,9 @@ asyncTest("isPlainObject", function() { ok( pass, "Does not throw exceptions on host objects" ); // Objects from other windows should be matched - window.iframeCallback = function( otherObject, detail ) { - window.iframeCallback = undefined; + Globals.register("iframeDone"); + window.iframeDone = function( otherObject, detail ) { + window.iframeDone = undefined; iframe.parentNode.removeChild( iframe ); ok( jQuery.isPlainObject(new otherObject()), "new otherObject" + ( detail ? " - " + detail : "" ) ); start(); @@ -364,7 +365,7 @@ asyncTest("isPlainObject", function() { iframe = jQuery("#qunit-fixture")[0].appendChild( document.createElement("iframe") ); doc = iframe.contentDocument || iframe.contentWindow.document; doc.open(); - doc.write(""); + doc.write(""); doc.close(); } catch(e) { window.iframeDone( Object, "iframes not supported" ); diff --git a/test/unit/event.js b/test/unit/event.js index 1b65f99de..bbb60fd25 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -2453,6 +2453,7 @@ test("focus-blur order (#12868)", function() { // Run handlers without native method on an input order = 1; $radio.triggerHandler( "focus" ); + $text.off(); start(); }, 50 ); }, 50 ); diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js index 6a6851142..f5a5de853 100644 --- a/test/unit/manipulation.js +++ b/test/unit/manipulation.js @@ -1681,11 +1681,11 @@ test("empty()", function() { equal( j.html(), "", "Check node,textnode,comment empty works" ); // Ensure oldIE empties selects (#12336) - notEqual( $("#select1").find("option").length, 0, "Have some initial options" ); - $("#select1").empty(); - equal( $("#select1").find("option").length, 0, "No more option elements found" ); - equal( $("#select1")[0].options.length, 0, "options.length cleared as well" ); - }); + notEqual( jQuery("#select1").find("option").length, 0, "Have some initial options" ); + jQuery("#select1").empty(); + equal( jQuery("#select1").find("option").length, 0, "No more option elements found" ); + equal( jQuery("#select1")[0].options.length, 0, "options.length cleared as well" ); +}); test( "jQuery.cleanData", function() { -- 2.39.5