#!./perl
-# $RCSfile$
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+}
+
+# $RCSfile$
$| = 1;
-$^W = 1;
+use warnings;
$Is_VMS = $^O eq 'VMS';
+$Is_Dos = $^O eq 'dos';
-print "1..66\n";
+print "1..70\n";
my $test = 1;
# 1..9
{
- unlink("afile") if -f "afile";
+ unlink("afile") if -f "afile";
print "$!\nnot " unless open(my $f,"+>afile");
ok;
binmode $f;
- print "not " unless -f "afile";
+ print "not " unless -f "afile";
ok;
print "not " unless print $f "SomeData\n";
ok;
$b = <$f>;
print "not " unless $b eq "SomeData\n";
ok;
- print "not " unless -f $f;
+ print "not " unless -f $f;
ok;
- eval { die "Message" };
+ eval { die "Message" };
# warn $@;
print "not " unless $@ =~ /<\$f> line 1/;
ok;
print "not " unless close($f);
ok;
- unlink("afile");
+ unlink("afile");
}
# 10..12
print "not " unless -s 'afile' > 20;
ok;
- unlink("afile");
+ unlink("afile");
}
# 24..26
if ($Is_VMS) {
- for (24..26) { print "ok $_ # skipped: not Unix fork\n"; }
+ for (24..26) { print "ok $_ # skipped: not Unix fork\n"; $test++;}
}
else {
print "# \$!='$!'\nnot " unless open(my $f, '-|', <<'EOC');
# 27..30
if ($Is_VMS) {
- for (27..30) { print "ok $_ # skipped: not Unix fork\n"; }
+ for (27..30) { print "ok $_ # skipped: not Unix fork\n"; $test++;}
}
else {
print "# \$!='$!'\nnot " unless open(my $f, '|-', <<'EOC');
1;
EOE
ok;
-$@ =~ /Unknown open\(\) mode \'<&\'/ or print "not ";
+$@ =~ /Bad filehandle:\s+afile/ or print "not ";
ok;
# local $file tests
# 33..41
{
- unlink("afile") if -f "afile";
+ unlink("afile") if -f "afile";
print "$!\nnot " unless open(local $f,"+>afile");
ok;
binmode $f;
- print "not " unless -f "afile";
+ print "not " unless -f "afile";
ok;
print "not " unless print $f "SomeData\n";
ok;
$b = <$f>;
print "not " unless $b eq "SomeData\n";
ok;
- print "not " unless -f $f;
+ print "not " unless -f $f;
ok;
- eval { die "Message" };
+ eval { die "Message" };
# warn $@;
print "not " unless $@ =~ /<\$f> line 1/;
ok;
print "not " unless close($f);
ok;
- unlink("afile");
+ unlink("afile");
}
# 42..44
print "not " unless -s 'afile' > 20;
ok;
- unlink("afile");
+ unlink("afile");
}
# 56..58
if ($Is_VMS) {
- for (56..58) { print "ok $_ # skipped: not Unix fork\n"; }
+ for (56..58) { print "ok $_ # skipped: not Unix fork\n"; $test++;}
}
else {
print "# \$!='$!'\nnot " unless open(local $f, '-|', <<'EOC');
# 59..62
if ($Is_VMS) {
- for (59..62) { print "ok $_ # skipped: not Unix fork\n"; }
+ for (59..62) { print "ok $_ # skipped: not Unix fork\n"; $test++;}
}
else {
print "# \$!='$!'\nnot " unless open(local $f, '|-', <<'EOC');
1;
EOE
ok;
-$@ =~ /Unknown open\(\) mode \'<&\'/ or print "not ";
+$@ =~ /Bad filehandle:\s+afile/ or print "not ";
ok;
# 65..66
{
local *F;
- for (1..2) { open(F, "echo #foo|") or print "not "; }
+ for (1..2) {
+ if ($Is_Dos) {
+ open(F, "echo \\#foo|") or print "not ";
+ } else {
+ open(F, "echo #foo|") or print "not ";
+ }
+ print <F>;
+ close F;
+ }
+ ok;
+ for (1..2) {
+ if ($Is_Dos) {
+ open(F, "-|", "echo \\#foo") or print "not ";
+ } else {
+ open(F, "-|", "echo #foo") or print "not ";
+ }
+ print <F>;
+ close F;
+ }
+ ok;
+}
+
+# 67..70 - magic temporary file via 3 arg open with undef
+{
+ open(my $x,"+<",undef) or print "not ";
+ ok;
+ print "not " unless defined(fileno($x));
ok;
- for (1..2) { open(F, "-|", "echo #foo") or print "not "; }
+ select $x;
+ ok; # goes to $x
+ select STDOUT;
+ seek($x,0,0);
+ print <$x>;
+ print "not " unless tell($x) > 3;
ok;
}