aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorRichard Gibson <richard.gibson@gmail.com>2012-12-02 23:32:16 -0500
committerRichard Gibson <richard.gibson@gmail.com>2012-12-02 23:32:16 -0500
commit5b9bf134390d56d6b6916225d86c1328e70e9970 (patch)
treea5310c5395cb903caf353ecf9389189cfc438eb7 /test
parent27c9360a1b3c099850f4da8ba26a387f88b1897e (diff)
downloadjquery-5b9bf134390d56d6b6916225d86c1328e70e9970.tar.gz
jquery-5b9bf134390d56d6b6916225d86c1328e70e9970.zip
No ticket: improve global variable/ajax request tracking
Diffstat (limited to 'test')
-rw-r--r--test/.jshintrc1
-rw-r--r--test/data/test.js2
-rw-r--r--test/data/testinit.js55
-rw-r--r--test/data/testrunner.js16
-rw-r--r--test/unit/ajax.js33
-rw-r--r--test/unit/core.js3
-rw-r--r--test/unit/manipulation.js12
7 files changed, 68 insertions, 54 deletions
diff --git a/test/.jshintrc b/test/.jshintrc
index 3513666d5..2dd668c3f 100644
--- a/test/.jshintrc
+++ b/test/.jshintrc
@@ -45,7 +45,6 @@
"createXMLFragment": true,
"moduleTeardown": true,
"testFoo": true,
- "foobar": true,
"url": true,
"t": true,
"q": true,
diff --git a/test/data/test.js b/test/data/test.js
index 69f492dcc..a18815315 100644
--- a/test/data/test.js
+++ b/test/data/test.js
@@ -1,3 +1,3 @@
-var foobar = "bar";
+var testBar = "bar";
jQuery('#ap').html('bar');
ok( true, "test.js executed");
diff --git a/test/data/testinit.js b/test/data/testinit.js
index a866d3227..2088407a6 100644
--- a/test/data/testinit.js
+++ b/test/data/testinit.js
@@ -158,39 +158,46 @@ function ajaxTest( title, expect, options ) {
if ( options.setup ) {
options.setup();
}
- var aborted = false,
- abort = function( reason ) {
- if ( !aborted ) {
- aborted = true;
+
+ var completed = false,
+ complete = function() {
+ completed = true;
+ delete ajaxTest.abort;
+ },
+ abort = ajaxTest.abort = function( reason ) {
+ if ( !completed ) {
+ complete();
ok( false, "unexpected " + reason );
jQuery.each( requests, function( _, request ) {
- request.abort();
+ if ( request && request.abort ) {
+ request.abort();
+ }
});
}
},
- requests = jQuery.map( requestOptions, function( options ) {
- var request = ( options.create || jQuery.ajax )( options );
+ requests = jQuery.map( requestOptions, function( options, index ) {
+ var request = ( options.create || jQuery.ajax )( options ),
+ callIfDefined = function( deferType, optionType ) {
+ var handler = options[ deferType ] || !!options[ optionType ];
+ return handler ?
+ function() {
+ if ( !completed && jQuery.isFunction( handler ) ) {
+ handler.apply( this, arguments );
+ }
+ } :
+ function() {
+ abort( optionType );
+ };
+ };
+
if ( options.afterSend ) {
options.afterSend( request );
}
- return request;
+
+ return request.then( callIfDefined( "done", "success" ), callIfDefined( "fail", "error" ) );
});
- jQuery.when.apply( jQuery, jQuery.map( requests, function( request, index ) {
- function callIfDefined( deferType, optionType ) {
- var handler = requestOptions[ index ][ deferType ] || !!requestOptions[ index ][ optionType ];
- return handler ? function() {
- if ( !aborted && jQuery.isFunction( handler ) ) {
- handler.apply( this, arguments );
- }
- } : function() {
- abort( optionType );
- }
- }
- return request.then( callIfDefined( "done", "success" ), callIfDefined( "fail", "error" ) );
- }) ).always(
- options.teardown,
- start
- );
+
+ jQuery.when.apply( jQuery, requests ).always( complete, options.teardown, start);
});
};
diff --git a/test/data/testrunner.js b/test/data/testrunner.js
index b17bf265f..085203c96 100644
--- a/test/data/testrunner.js
+++ b/test/data/testrunner.js
@@ -3,10 +3,10 @@
*/
jQuery.noConflict();
-// For checking globals pollution
-window[ jQuery.expando ] = undefined;
-// ...in Gecko
-this.getInterface = this.getInterface;
+// For checking globals pollution despite auto-created globals in various environments
+jQuery.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
@@ -138,7 +138,7 @@ function testSubproject( label, url, risTests ) {
// Explanation at http://perfectionkills.com/understanding-delete/#ie_bugs
var Globals = (function() {
var globals = {};
- return QUnit.config.noglobals ? {
+ return {
register: function( name ) {
globals[ name ] = true;
jQuery.globalEval( "var " + name );
@@ -153,9 +153,6 @@ var Globals = (function() {
"; } catch( x ) {}" );
}
}
- } : {
- register: jQuery.noop,
- cleanup: jQuery.noop
};
})();
@@ -312,6 +309,9 @@ var Globals = (function() {
}
if ( jQuery.active !== undefined && jQuery.active !== oldActive ) {
equal( jQuery.active, 0, "No AJAX requests are still active" );
+ if ( ajaxTest.abort ) {
+ ajaxTest.abort("active request");
+ }
oldActive = jQuery.active;
}
};
diff --git a/test/unit/ajax.js b/test/unit/ajax.js
index a65f90536..f88b5d7cc 100644
--- a/test/unit/ajax.js
+++ b/test/unit/ajax.js
@@ -533,7 +533,7 @@ module( "ajax", {
ajaxTest( "jQuery.ajax() - dataType html", 5, {
setup: function() {
Globals.register("testFoo");
- Globals.register("foobar");
+ Globals.register("testBar");
},
dataType: "html",
url: url("data/test.html"),
@@ -541,7 +541,7 @@ module( "ajax", {
ok( data.match( /^html text/ ), "Check content for datatype html" );
jQuery("#ap").html( data );
strictEqual( window["testFoo"], "foo", "Check if script was evaluated for datatype html" );
- strictEqual( window["foobar"], "bar", "Check if script src was evaluated for datatype html" );
+ strictEqual( window["testBar"], "bar", "Check if script src was evaluated for datatype html" );
}
});
@@ -588,6 +588,7 @@ module( "ajax", {
jQuery( document ).off("ajaxError.passthru");
start();
});
+ Globals.register("testBar");
ok( jQuery.get( url(target), success ), "get" );
ok( jQuery.post( url(target), success ), "post" );
@@ -836,28 +837,37 @@ module( "ajax", {
});
ajaxTest( "jQuery.ajax() - script, Remote", 2, {
+ setup: function() {
+ Globals.register("testBar");
+ },
url: window.location.href.replace( /[^\/]*$/, "" ) + "data/test.js",
dataType: "script",
success: function( data ) {
- ok( window[ "foobar" ], "Script results returned (GET, no callback)" );
+ strictEqual( window["testBar"], "bar", "Script results returned (GET, no callback)" );
}
});
ajaxTest( "jQuery.ajax() - script, Remote with POST", 3, {
+ setup: function() {
+ Globals.register("testBar");
+ },
url: window.location.href.replace( /[^\/]*$/, "" ) + "data/test.js",
type: "POST",
dataType: "script",
success: function( data, status ) {
- ok( window[ "foobar" ], "Script results returned (POST, no callback)" );
+ strictEqual( window["testBar"], "bar", "Script results returned (POST, no callback)" );
strictEqual( status, "success", "Script results returned (POST, no callback)" );
}
});
ajaxTest( "jQuery.ajax() - script, Remote with scheme-less URL", 2, {
+ setup: function() {
+ Globals.register("testBar");
+ },
url: window.location.href.replace( /[^\/]*$/, "" ).replace( /^.*?\/\//, "//" ) + "data/test.js",
dataType: "script",
success: function( data ) {
- ok( window[ "foobar" ], "Script results returned (GET, no callback)" );
+ strictEqual( window["testBar"], "bar", "Script results returned (GET, no callback)" );
}
});
@@ -1655,17 +1665,20 @@ module( "ajax", {
//----------- jQuery.getScript()
asyncTest( "jQuery.getScript( String, Function ) - with callback", 2, function() {
+ Globals.register("testBar");
jQuery.getScript( url("data/test.js"), function( data, _, jqXHR ) {
- strictEqual( foobar, "bar", "Check if script was evaluated" );
+ strictEqual( window["testBar"], "bar", "Check if script was evaluated" );
start();
});
});
asyncTest( "jQuery.getScript( String, Function ) - no callback", 1, function() {
+ Globals.register("testBar");
jQuery.getScript( url("data/test.js") ).done( start );
});
asyncTest( "#8082 - jQuery.getScript( String, Function ) - source as responseText", 2, function() {
+ Globals.register("testBar");
jQuery.getScript( url("data/test.js"), function( data, _, jqXHR ) {
strictEqual( data, jqXHR.responseText, "Same-domain script requests returns the source of the script" );
start();
@@ -1729,10 +1742,14 @@ module( "ajax", {
asyncTest( "jQuery.fn.load( String, Function ) - check scripts", 7, function() {
var verifyEvaluation = function() {
- strictEqual( window["foobar"], "bar", "Check if script src was evaluated after load" );
+ strictEqual( window["testBar"], "bar", "Check if script src was evaluated after load" );
strictEqual( jQuery("#ap").html(), "bar", "Check if script evaluation has modified DOM");
start();
};
+
+ Globals.register("testFoo");
+ Globals.register("testBar");
+
jQuery("#first").load( url("data/test.html"), function() {
ok( jQuery("#first").html().match( /^html text/ ), "Check content after loading html" );
strictEqual( jQuery("#foo").html(), "foo", "Check if script evaluation has modified DOM" );
@@ -1742,6 +1759,8 @@ module( "ajax", {
});
asyncTest( "jQuery.fn.load( String, Function ) - check file with only a script tag", 3, function() {
+ Globals.register("testFoo");
+
jQuery("#first").load( url("data/test2.html"), function() {
strictEqual( jQuery("#foo").html(), "foo", "Check if script evaluation has modified DOM");
strictEqual( window["testFoo"], "foo", "Check if script was evaluated after load" );
diff --git a/test/unit/core.js b/test/unit/core.js
index 603368b9e..6ecfe5a4f 100644
--- a/test/unit/core.js
+++ b/test/unit/core.js
@@ -195,6 +195,7 @@ test( "selector state", function() {
test( "globalEval", function() {
expect( 3 );
+ Globals.register("globalEvalTest");
jQuery.globalEval("globalEvalTest = 1;");
equal( window.globalEvalTest, 1, "Test variable assignments are global" );
@@ -204,8 +205,6 @@ test( "globalEval", function() {
jQuery.globalEval("this.globalEvalTest = 3;");
equal( window.globalEvalTest, 3, "Test context (this) is the window object" );
-
- jQuery.globalEval("delete globalEvalTest;");
});
test("noConflict", function() {
diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js
index 4a980b249..530224354 100644
--- a/test/unit/manipulation.js
+++ b/test/unit/manipulation.js
@@ -704,7 +704,7 @@ test("append(xml)", function() {
});
test("appendTo(String|Element|Array<Element>|jQuery)", function() {
- expect( 16 + ( jQuery.getScript ? 1 : 0 ) );
+ expect( 16 );
var defaultText = "Try them out:";
@@ -775,16 +775,6 @@ test("appendTo(String|Element|Array<Element>|jQuery)", function() {
div.remove().appendTo("#qunit-fixture");
equal( jQuery("#qunit-fixture div").length, num, "Make sure all the removed divs were inserted." );
-
- QUnit.reset();
-
- if ( jQuery.getScript ) {
- stop();
- jQuery.getScript("data/test.js", function() {
- jQuery("script[src*='data\\/test\\.js']").remove();
- start();
- });
- }
});
var testPrepend = function(val) {