Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: Multiple BEGIN blocks in Test::More

by ikegami (Patriarch)
on Nov 23, 2011 at 17:18 UTC ( [id://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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://939699]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (3)
As of 2024-04-19 05:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found