Oh, shame! It seems like I never attached the promised patch to this
ticket. That has something to do with why I never had an answer from
Michael or chromatic? ;-)

So I attach it now and forward this also to perl-qa as well. Another
possible idea is to leave ->has_plan as it is and add a new method
->has_any_plan documented as follows:


=item B<has_plan>

 $plan = $Test->has_plan;

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 (but see
C<has_any_plan>).

=cut

[snip] [code of has_plan is unchanged]

=item B<has_any_plan>

 $plan = $Test->has_any_plan;

Find out whether a plan has been defined. It works as C<has_plan>
but for C<skip_all> plans, it returns C<skip_all>.

=cut

sub has_any_plan {
   my $self = shift;

   return('skip_all') if $self->{Skip_All};
   return $self->has_plan;
}

Comments? Ok, returning to Warnock state (this time it would not be my
sole fault as there is a patch now for real).

Adriano Ferreira

On 4/24/07, Bugs in Test-Simple via RT <[EMAIL PROTECTED]> wrote:

Greetings,

This message has been automatically generated in response to the
creation of a trouble ticket regarding:
        "[PATCH] has_plan('any') to report a skip_all plan",
a summary of which appears below.

There is no need to reply to this message right now.  Your ticket has been
assigned an ID of [rt.cpan.org #26615].  Your ticket is accessible
on the web at:

    http://rt.cpan.org/Ticket/Display.html?id=26615

Please include the string:

         [rt.cpan.org #26615]

in the subject line of all future correspondence about this issue. To do so,
you may reply to this message.

                        Thank you,
                        [EMAIL PROTECTED]

-------------------------------------------------------------------------
The attached patch is meant to solve the problem of determining if
any of these statements were executed under the current Test::Builder
instance

    $builder->plan( tests => $n );
    $builder->plan( 'no_plan' );
    $builder->plan( skip_all => $reason );

The first two may be determined looking at the return of

     $builder->has_plan;

But that is not the case for the skip_all plan. Actually you'll have to
look at the internal attribute $builder->{Skip_All} to determine this.

I started a thread at perl-qa@perl.org about this and got responses from Ovid
and Adrian Howard that made me see that although skip_all looks
like a plan, it is special anyway.

http://www.nntp.perl.org/group/perl.qa/2007/04/msg8583.html

So my proposal is to leave " $builder->has_plan " as it is, but augment
its behavior if an explicit argument 'any' was given.

          $builder->has_plan('any')     => the expected number of tests, or
                                                  => 'no_plan' or
                                                  => 'skip_all'

I've touched the documentation as well. If this patch is not accepted,
at the least  the phrase "Skip_all plans are handled as if no plan was set."
may be added to the has_plan description.

I've also inserted another test into t/skipall.t to check " has_plan('any') "
works.

Best regards,
Adriano Ferreira.


Attachment: test-builder.diff
Description: Binary data

Reply via email to