Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Multiple BEGIN blocks in Test::More

by ikegami (Pope)
on Nov 23, 2011 at 17:18 UTC ( #939699=note: print w/replies, xml ) Need Help??


in reply to Multiple BEGIN blocks in Test::More

The two BEGIN blocks in your second snippet will do the same thing as the three BEGIN blocks in your first snippet, but they are not equivalent.

  1. Compile first BEGIN block.
    1. Compile require Test::More;.
    2. Compile import Test::More;.
  2. Execute first BEGIN block.
    1. Execute require Test::More;.
    2. Execute import Test::More;.
  3. Compile second BEGIN block.
    1. Compile use_ok 'Module::A'.
  4. Execute second BEGIN block.
    1. Execute use_ok 'Module::A'.
  5. Compile third BEGIN block.
    1. Compile use_ok 'Module::B'.
  6. Execute third BEGIN block.
    1. Execute use_ok 'Module::B'.
  7. Compile done_testing;.
  8. End of compile phase.
  9. Execute done_testing;.

vs

  1. Compile first BEGIN block.
    1. Compile require Test::More;.
    2. Compile import Test::More;.
  2. Execute first BEGIN block.
    1. Execute require Test::More;.
    2. Execute import Test::More;.
  3. Compile second BEGIN block.
    1. Compile use_ok 'Module::A'.
    2. Compile use_ok 'Module::B'.
  4. Execute second BEGIN block.
    1. Execute use_ok 'Module::A'.
    2. Execute use_ok 'Module::B'.
  5. Compile done_testing;.
  6. End of compile phase.
  7. Execute done_testing;.

Or in short,

  1. ...
  2. Compile use_ok 'Module::A'.
  3. Execute use_ok 'Module::A'.
  4. Compile use_ok 'Module::B'.
  5. Execute use_ok 'Module::B'.
  6. ...

vs

  1. ...
  2. Compile use_ok 'Module::A'.
  3. Compile use_ok 'Module::B'.
  4. Execute use_ok 'Module::A'.
  5. Execute use_ok 'Module::B'.
  6. ...

In the first, use_ok 'Module::A' could have an effect on how use_ok 'Module::B' is compiled. In the second, it can't.

I agree with Corion, though. There's no reason to use use_ok.

use Test::More tests => 1; use Module::A; use Module::B; pass("Loading modules"); 1;

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://939699]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (5)
As of 2018-07-18 10:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?















    Results (389 votes). Check out past polls.

    Notices?