Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: Testing $^W

by Perl Mouse (Chaplain)
on Nov 04, 2005 at 09:57 UTC ( #505664=note: print w/ replies, xml ) Need Help??


in reply to Testing $^W

Turning off warnings without turning them back on is a pretty-darn-bad practice.
I'd say that any manual "turning warnings back on" is very bad practise. Even if you don't use use warnings (which has been available for more than 5 years), turning off warnings should be done by using a localized value for $^W, so the old value of $^W will be restored - no matter what the old value was, and no matter how the block is left.
is( $^W, 1, 'warnings are on' ); third_party_code(); is( $^W, 1, 'warnings are still on' );
That's only half of your tests, isn't it? What's missing is:
{ local $^W; third_party_code(); ok (!$^W, 'warnings still off'); }
after all, you want to test that a piece of code leaves $^W as is.

But then, why stop at testing $^W? How about $*? $"? @ARGV?, %SIG? $package::var?

Perl --((8:>*


Comment on Re: Testing $^W
Select or Download Code
Re^2: Testing $^W
by Anonymous Monk on Nov 04, 2005 at 18:39 UTC
    But then, why stop at testing $^W? How about $*? $"? @ARGV?, %SIG? $package::var?

    I think you meant this in jest, but this would be a very valuable resource if it could be automated; kind of like the sort of utility that tests for memory leaks in C.

    Just being able to know that a given module has tampered with your { global variables/function definitions/namespaces/whatever} is very, very handy.

    Perl gives you a lot of rope to hang yourself (and others!) with; having tools to keep it coiled neatly would really be nice sometimes. :-)
    --
    Ytrew

      That's a great idea! I think you could add a Policy to Perl::Critic that warns you if a global or package variable was modified without being localized first.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://505664]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (14)
As of 2015-07-06 19:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (81 votes), past polls