# run a fresh perl, so we'll brute force launder everything for you
my $sep;
- eval "require Config; Config->import";
- if ($@) {
+ if (! eval 'require Config; 1') {
warn "test.pl had problems loading Config: $@";
$sep = ':';
} else {
- $sep = $Config{path_sep};
+ $sep = $Config::Config{path_sep};
}
my @keys = grep {exists $ENV{$_}} qw(CDPATH IFS ENV BASH_ENV);
return $Perl if $^O eq 'VMS';
my $exe;
- eval "require Config; Config->import";
- if ($@) {
+ if (! eval 'require Config; 1') {
warn "test.pl had problems loading Config: $@";
$exe = '';
} else {
- $exe = $Config{_exe};
+ $exe = $Config::Config{_exe};
}
$exe = '' unless defined $exe;
if ($Perl =~ /^perl\Q$exe\E$/i) {
my $perl = "perl$exe";
- eval "require File::Spec";
- if ($@) {
+ if (! eval 'require File::Spec; 1') {
warn "test.pl had problems loading File::Spec: $@";
$Perl = "./$perl";
} else {
my $status = $?;
# Clean up the results into something a bit more predictable.
- $results =~ s/\n+$//;
+ $results =~ s/\n+$//;
$results =~ s/at\s+$::tempfile_regexp\s+line/at - line/g;
$results =~ s/of\s+$::tempfile_regexp\s+aborted/of - aborted/g;
sub fresh_perl_is {
my($prog, $expected, $runperl_args, $name) = @_;
+
+ # _fresh_perl() is going to clip the trailing newlines off the result.
+ # This will make it so the test author doesn't have to know that.
+ $expected =~ s/\n+$//;
+
local $Level = 2;
_fresh_perl($prog,
sub { @_ ? $_[0] eq $expected : $expected },
# Use a watchdog thread because either 'threads' is loaded,
# or fork() failed
- if (eval { require threads; }) {
+ if (eval 'require threads; 1') {
threads->create(sub {
# Load POSIX if available
eval { require POSIX; };
# Execute the timeout
- my $time_elapsed = 0;
my $time_left = $timeout;
- while ($time_elapsed < $timeout) {
- $time_elapsed += sleep($time_left);
- $time_left = $timeout - $time_elapsed;
- }
+ do {
+ $time_left -= sleep($time_left);
+ } while ($time_left > 0);
# Kill the parent (and ourself)
select(STDERR); $| = 1;