On Friday 21 July 2006 19:50, A. Pagaltzis wrote:
> Hi Adriano,
>
> * Adriano Ferreira <[EMAIL PROTECTED]> [2006-07-21 15:20]:
> > If I run this script
> >
> >    use Test::More;
> >
> >    plan tests => 2;
> >
> >    BEGIN { use_ok( 'My', 'foo' ); }
> >
> >    ok(1);
> >    is(foo, 1);
> >
> > I got the output, which says nothing about the use_ok. It is
> > not counted as a test, it does not ruin the plan, it does its
> > job (requiring and importing a &foo subroutine).
>
> I assume it’s because, despite the order in the file, the BEGIN
> block runs before the `plan tests => 2` line.
>
> Sure looks like a bug.
>

I don't think that it is. Perl preprocesses the files and at compile time 
executes any BEGIN { ... } blocks it encounters and execute them before the 
rest of the program. If you want to execute the plan at the beginning either 
also put it in a BEGIN { ... } block, or use the "use Test::More tests => 
$num_tests" directive.

It's not a bug - it's a feature. BTW, the "use" Perl keyword is also executed 
in compile time. There's some equivalent code to it in "perldoc -f use":

http://perldoc.perl.org/functions/use.html

Regards,

        Shlomi Fish

---------------------------------------------------------------------
Shlomi Fish      [EMAIL PROTECTED]
Homepage:        http://www.shlomifish.org/

Chuck Norris wrote a complete Perl 6 implementation in a day but then
destroyed all evidence with his bare hands, so no one will know his secrets.

Reply via email to