Avoid odd portability problem in TestLib.pm's slurp_file function.
authorTom Lane <[email protected]>
Tue, 8 Dec 2015 21:58:05 +0000 (16:58 -0500)
committerTom Lane <[email protected]>
Tue, 8 Dec 2015 21:58:05 +0000 (16:58 -0500)
For unclear reasons, this function doesn't always read the expected data
in some old Perl versions.  Rewriting it to avoid use of ARGV seems to
dodge the problem, and this version is clearer anyway if you ask me.

In passing, also improve error message in adjacent append_to_file function.

src/test/perl/TestLib.pm

index da67f33c7e38929067350c7cf0da8fd8c5c1e43d..3d11cbb4535163ed22ba4ecd6c2efcbda41e8fba 100644 (file)
@@ -158,9 +158,12 @@ sub slurp_dir
 
 sub slurp_file
 {
+       my ($filename) = @_;
        local $/;
-       local @ARGV = @_;
-       my $contents = <>;
+       open(my $in, '<', $filename)
+         or die "could not read \"$filename\": $!";
+       my $contents = <$in>;
+       close $in;
        $contents =~ s/\r//g if $Config{osname} eq 'msys';
        return $contents;
 }
@@ -168,8 +171,8 @@ sub slurp_file
 sub append_to_file
 {
        my ($filename, $str) = @_;
-
-       open my $fh, ">>", $filename or die "could not open \"$filename\": $!";
+       open my $fh, ">>", $filename
+         or die "could not write \"$filename\": $!";
        print $fh $str;
        close $fh;
 }