Retract the UTF-8 filenames patch. This may be
[p5sagit/p5-mst-13.2.git] / t / op / sysio.t
index 0f546b2..473a3f0 100755 (executable)
@@ -1,12 +1,17 @@
 #!./perl
 
-print "1..30\n";
+print "1..39\n";
 
-chdir('op') || die "sysio.t: cannot look for myself: $!";
+chdir('op') || chdir('t/op') || die "sysio.t: cannot look for myself: $!";
 
 open(I, 'sysio.t') || die "sysio.t: cannot find myself: $!";
 
-$reopen = ($^O eq 'VMS' || $^O eq 'os2');
+$reopen = ($^O eq 'VMS' ||
+           $^O eq 'os2' ||
+           $^O eq 'MSWin32' ||
+           $^O eq 'NetWare' ||
+           $^O eq 'dos' ||
+          $^O eq 'mpeix');
 
 $x = 'abc';
 
@@ -107,8 +112,14 @@ print 'not ' if (-s $outfile);
 print "ok 19\n";
 
 # default offset 0
-print 'not ' unless (syswrite(O, $a, 2) == 2);
-print "ok 20\n";
+if (syswrite(O, $a, 2) == 2){
+  print "ok 20\n";
+} else {
+  print "# $!\nnot ok 20\n";
+  # most other tests make no sense after e.g. "No space left on device"
+  die $!;
+}
+
 
 # $a still intact
 print 'not ' unless ($a eq "#!.\0\0erl");
@@ -151,6 +162,21 @@ if ($reopen) {  # must close file to update EOF marker for stat
 print 'not ' unless (-s $outfile == 7);
 print "ok 28\n";
 
+# with implicit length argument
+print 'not ' unless (syswrite(O, $x) == 3);
+print "ok 29\n";
+
+# $a still intact
+print 'not ' unless ($x eq "abc");
+print "ok 30\n";
+
+# $outfile should have grown now
+if ($reopen) {  # must close file to update EOF marker for stat
+  close O; open(O, ">>$outfile") || die "sysio.t: cannot write $outfile: $!";
+}
+print 'not ' unless (-s $outfile == 10);
+print "ok 31\n";
+
 close(O);
 
 open(I, $outfile) || die "sysio.t: cannot read $outfile: $!";
@@ -158,17 +184,36 @@ open(I, $outfile) || die "sysio.t: cannot read $outfile: $!";
 $b = 'xyz';
 
 # reading too much only return as much as available
-print 'not ' unless (sysread(I, $b, 100) == 7);
-print "ok 29\n";
+print 'not ' unless (sysread(I, $b, 100) == 10);
+print "ok 32\n";
 # this we should have
-print 'not ' unless ($b eq '#!ererl');
-print "ok 30\n";
+print 'not ' unless ($b eq '#!ererlabc');
+print "ok 33\n";
+
+# test sysseek
+
+print 'not ' unless sysseek(I, 2, 0) == 2;
+print "ok 34\n";
+sysread(I, $b, 3);
+print 'not ' unless $b eq 'ere';
+print "ok 35\n";
+
+print 'not ' unless sysseek(I, -2, 1) == 3;
+print "ok 36\n";
+sysread(I, $b, 4);
+print 'not ' unless $b eq 'rerl';
+print "ok 37\n";
+
+print 'not ' unless sysseek(I, 0, 0) eq '0 but true';
+print "ok 38\n";
+print 'not ' if defined sysseek(I, -1, 1);
+print "ok 39\n";
 
 close(I);
 
 unlink $outfile;
 
-chdir('..'); 
+chdir('..');
 
 1;