A few corrections to the testsuite to imrove the failure testing
authorJörn Zaefferer <joern.zaefferer@gmail.com>
Thu, 21 Dec 2006 15:23:59 +0000 (15:23 +0000)
committerJörn Zaefferer <joern.zaefferer@gmail.com>
Thu, 21 Dec 2006 15:23:59 +0000 (15:23 +0000)
build/test/data/testrunner.js
src/ajax/ajax.js
src/ajax/ajaxTest.js

index 86a16d5..6da41c3 100644 (file)
@@ -33,12 +33,13 @@ function process() {
        }
 }
 
-function stop() {
+function stop(allowFailure) {
        _config.blocking = true;
-       _config.timeout = setTimeout(function() {
+       var handler = allowFailure ? start : function() {
                ok( false, "Test timed out" );
                start();
-       }, _config.asyncTimeout * 1000);
+       };
+       _config.timeout = setTimeout(handler, _config.asyncTimeout * 1000);
 }
 function start() {
        if(_config.timeout)
index dd3bf18..485bf1b 100644 (file)
@@ -647,6 +647,8 @@ jQuery.extend({
                                                // Fire the global callback
                                                if( s.global )
                                                        jQuery.event.trigger( "ajaxSuccess", [xml, s] );
+                                       } else {
+                                               jQuery.handleError(s, xml, status);
                                        }
                                } catch(e) {
                                        status = "error";
@@ -714,18 +716,24 @@ jQuery.extend({
 
        // Determines if an XMLHttpRequest was successful or not
        httpSuccess: function(r) {
-               return !r.status && location.protocol == "file:" ||
-                       ( r.status >= 200 && r.status < 300 ) || r.status == 304 ||
-                       jQuery.browser.safari && r.status == undefined;
+               try {
+                       return !r.status && location.protocol == "file:" ||
+                               ( r.status >= 200 && r.status < 300 ) || r.status == 304 ||
+                               jQuery.browser.safari && r.status == undefined;
+               } catch(e){}
+               return false;
        },
 
        // Determines if an XMLHttpRequest returns NotModified
        httpNotModified: function(xml, url) {
-               var xmlRes = xml.getResponseHeader("Last-Modified");
+               try {
+                       var xmlRes = xml.getResponseHeader("Last-Modified");
 
-               // Firefox always returns 200. check Last-Modified date
-               return xml.status == 304 || xmlRes == jQuery.lastModified[url] ||
-                       jQuery.browser.safari && xml.status == undefined;
+                       // Firefox always returns 200. check Last-Modified date
+                       return xml.status == 304 || xmlRes == jQuery.lastModified[url] ||
+                               jQuery.browser.safari && xml.status == undefined;
+               } catch(e){}
+               return false;
        },
 
        /* Get the data out of an XMLHttpRequest.
index ad85e05..1cd072f 100644 (file)
@@ -24,7 +24,7 @@ test("param", function() {
 
 test("pass-through request object", function() {
        expect(7);
-       stop();
+       stop(true);
        var count = 0;
        var success = function() {
                if(count++ == 6)
@@ -60,7 +60,7 @@ test("load(String, Object, Function) - simple: inject text into DOM", function()
 
 test("load(String, Object, Function) - inject without callback", function() {
        expect(1);
-       stop(); // check if load can be called with only url
+       stop(true); // check if load can be called with only url
        $('#first').load("data/name.php");
 });
 
@@ -170,7 +170,7 @@ test("$.getScript(String, Function) - with callback", function() {
 
 test("$.getScript(String, Function) - no callback", function() {
        expect(1);
-       stop();
+       stop(true);
        $.getScript("data/test.js");
 });
 
@@ -319,15 +319,15 @@ test("$.ajax - xml: non-namespace elements inside namespaced elements", function
 test("$.ajax - beforeSend", function() {
        expect(1);
        stop();
-       var customHeader = "value";
+       var check = false;
        $.ajax({
                url: "data/name.php", 
                data: {'req': true},
                beforeSend: function(xml) {
-                       xml.setRequestHeader('X-Custom-Header', customHeader);
+                       check = true
                },
                success: function(data) {
-                       ok( data == customHeader, "check return value, should be the custom header sent" );
+                       ok( check, "check beforeSend was executed" );
                        start();
                }
        });