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?