If it's not legitimate, how should I have written the test & code below?
use strict; use warnings; use Test::More; use FindBin qw( $RealBin ); use lib $RealBin; use MyModule; if (connected()) { pass("\"connected\" works with defaults ($^O)"); } else { plan skip_all => 'Internet inaccessible'; } my $careto = $^O; if ($careto =~ /win/gmsi) { $^O = 'linux'; } else { $^O = 'win'; } ok !connected(), "\"connected\" fails with defaults overwritten ($^O)" or diag("\"connected\" returns true regardless (OS = $^O)"); $^O = $careto; done_testing;
SSCCE (I hope!) from the module:
Package MyModule; use strict; use warnings; sub connected { my $pingcmd = 'ping -c 1 8.8.8.8'; my $pingworks = ' 0% packet loss'; if ($^O =~ /win/gmsi) { $pingcmd =~ s/-c/\/n/; $pingworks = 'bytes=32'; } my $pingrtn = qx($pingcmd); return $pingrtn =~ /$pingworks/msi; } 1;
I accept this may be an ugly hack, but it tests what I want in a way that seems obvious to me. But I will gladly accept improvements, advice and explanations.
Regards,
John Davies
Almost immediate update: deleted a couple of relic lines
In reply to Re: Is it ever legitimate to override $^O ?
by davies
in thread Is it ever legitimate to override $^O ?
by syphilis
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |