diff -u -r -N Test-Simple-0.70/lib/Test/Builder.pm Test-Simple/lib/Test/Builder.pm
--- Test-Simple-0.70/lib/Test/Builder.pm	2007-03-15 19:57:10.000000000 -0300
+++ Test-Simple/lib/Test/Builder.pm	2007-04-24 10:18:46.000000000 -0300
@@ -323,17 +323,26 @@
 
 =item B<has_plan>
 
-  $plan = $Test->has_plan
+  $plan = $Test->has_plan;
+  $plan = $Test->has_plan('any');
 
-Find out whether a plan has been defined. $plan is either C<undef> (no plan has been set), C<no_plan> (indeterminate # of tests) or an integer (the number of expected tests).
+
+Find out whether a plan has been defined. $plan is either C<undef> 
+(no plan has been set), C<no_plan> (indeterminate # of tests), 
+or an integer (the number of expected tests). 
+Skip_all plans are handled as if no plan was set (unless 
+an explicit argument C<any> was given, in which case 
+C<skip_all> is returned).
 
 =cut
 
 sub has_plan {
     my $self = shift;
+    my $any_plan = $_[0] ? $_[0] eq 'any' : '';
 
     return($self->{Expected_Tests}) if $self->{Expected_Tests};
     return('no_plan') if $self->{No_Plan};
+    return('skip_all') if $self->{Skip_All} && $any_plan;
     return(undef);
 };
 
