Would it not be simpler to simply set an environment variable in the test environment, and let its absence serve as a flag to the tests themselves to voluntarily exit?
Simply make sure every test method first does this -- or calls a method designed to do this -- and the tests will govern themselves.
#!/usr/bin/perl
use strict;
use warnings;
my $TestFlag = $ENV{'TEST_ENVIRONMENT'};
if (!defined $TestFlag) { $TestFlag = ''; }
if ($TestFlag =~ /TRUE/i)
{
print "I'm running tests! I'm running tests!\n";
}
else
{
print "This does not appear to be a test environment. Skipping te
+sts.\n";
}
exit;
__END__
S:\Steve\Dev\PerlMonks\P-2014-04-02@1516-Self-Governing-Tests>set TEST
+_ENVIRONMENT=TRUE
S:\Steve\Dev\PerlMonks\P-2014-04-02@1516-Self-Governing-Tests>perl may
+betest.pl
I'm running tests! I'm running tests!
S:\Steve\Dev\PerlMonks\P-2014-04-02@1516-Self-Governing-Tests>set TEST
+_ENVIRONMENT=
S:\Steve\Dev\PerlMonks\P-2014-04-02@1516-Self-Governing-Tests>perl may
+betest.pl
This does not appear to be a test environment. Skipping tests.
S:\Steve\Dev\PerlMonks\P-2014-04-02@1516-Self-Governing-Tests>