Skip to content
Permalink
Browse files
Fixes #9104. Returning null or undefined in a pipe callback shouldn't…
… end up throwing an exception. Silly, silly, me.
  • Loading branch information
jaubourg committed May 9, 2011
1 parent efd0fce commit 8c13cfa
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
@@ -119,7 +119,7 @@ jQuery.extend({
if ( jQuery.isFunction( fn ) ) {
deferred[ handler ](function() {
returned = fn.apply( this, arguments );
if ( jQuery.isFunction( returned.promise ) ) {
if ( returned && jQuery.isFunction( returned.promise ) ) {
returned.promise().then( newDefer.resolve, newDefer.reject );
} else {
newDefer[ action ]( returned );
@@ -145,7 +145,7 @@ jQuery.each( [ "", " - new operator" ], function( _, withNew ) {

test( "jQuery.Deferred.pipe - filtering (done)", function() {

expect(3);
expect(4);

var defer = jQuery.Deferred(),
piped = defer.pipe(function( a, b ) {
@@ -173,11 +173,15 @@ test( "jQuery.Deferred.pipe - filtering (done)", function() {
jQuery.Deferred().reject().pipe(function() {
ok( false, "pipe should not be called on reject" );
});

jQuery.Deferred().resolve().pipe( jQuery.noop ).done(function( value ) {
strictEqual( value, undefined, "pipe done callback can return undefined/null" );
});
});

test( "jQuery.Deferred.pipe - filtering (fail)", function() {

expect(3);
expect(4);

var defer = jQuery.Deferred(),
piped = defer.pipe( null, function( a, b ) {
@@ -205,6 +209,10 @@ test( "jQuery.Deferred.pipe - filtering (fail)", function() {
jQuery.Deferred().resolve().pipe( null, function() {
ok( false, "pipe should not be called on resolve" );
} );

jQuery.Deferred().reject().pipe( null, jQuery.noop ).fail(function( value ) {
strictEqual( value, undefined, "pipe fail callback can return undefined/null" );
});
});

test( "jQuery.Deferred.pipe - deferred (done)", function() {

0 comments on commit 8c13cfa

Please sign in to comment.