(was Re: PerlIO regerssion tests?)
[p5sagit/p5-mst-13.2.git] / t / io / argv.t
CommitLineData
8d063cd8 1#!./perl
2
820475bd 3BEGIN {
4 chdir 't' if -d 't';
20822f61 5 @INC = '../lib';
820475bd 6}
7
b9fee9ba 8print "1..21\n";
820475bd 9
10use File::Spec;
11
12my $devnull = File::Spec->devnull;
8d063cd8 13
684bef36 14open(try, '>Io_argv1.tmp') || (die "Can't open temp file: $!");
8d063cd8 15print try "a line\n";
16close try;
17
68dc0745 18if ($^O eq 'MSWin32') {
684bef36 19 $x = `.\\perl -e "while (<>) {print \$.,\$_;}" Io_argv1.tmp Io_argv1.tmp`;
68dc0745 20}
2986a63f 21elsif ($^O eq 'NetWare') {
22 $x = `perl -e "while (<>) {print \$.,\$_;}" Io_argv1.tmp Io_argv1.tmp`;
23}
68dc0745 24else {
684bef36 25 $x = `./perl -e 'while (<>) {print \$.,\$_;}' Io_argv1.tmp Io_argv1.tmp`;
68dc0745 26}
8d063cd8 27if ($x eq "1a line\n2a line\n") {print "ok 1\n";} else {print "not ok 1\n";}
28
68dc0745 29if ($^O eq 'MSWin32') {
684bef36 30 $x = `.\\perl -le "print 'foo'" | .\\perl -e "while (<>) {print \$_;}" Io_argv1.tmp -`;
68dc0745 31}
2986a63f 32elsif ($^O eq 'NetWare') {
33 $x = `perl -le "print 'foo'" | perl -e "while (<>) {print \$_;}" Io_argv1.tmp -`;
34}
68dc0745 35else {
684bef36 36 $x = `echo foo|./perl -e 'while (<>) {print $_;}' Io_argv1.tmp -`;
68dc0745 37}
8d063cd8 38if ($x eq "a line\nfoo\n") {print "ok 2\n";} else {print "not ok 2\n";}
39
68dc0745 40if ($^O eq 'MSWin32') {
41 $x = `.\\perl -le "print 'foo'" |.\\perl -e "while (<>) {print \$_;}"`;
42}
2986a63f 43elsif ($^O eq 'NetWare') {
44 $x = `perl -le "print 'foo'" | perl -e "while (<>) {print \$_;}"`;
45}
68dc0745 46else {
47 $x = `echo foo|./perl -e 'while (<>) {print $_;}'`;
48}
bf38876a 49if ($x eq "foo\n") {print "ok 3\n";} else {print "not ok 3 :$x:\n";}
8d063cd8 50
684bef36 51@ARGV = ('Io_argv1.tmp', 'Io_argv1.tmp', $devnull, 'Io_argv1.tmp');
8d063cd8 52while (<>) {
53 $y .= $. . $_;
378cc40b 54 if (eof()) {
8d063cd8 55 if ($. == 3) {print "ok 4\n";} else {print "not ok 4\n";}
56 }
57}
58
59if ($y eq "1a line\n2a line\n3a line\n")
60 {print "ok 5\n";}
61else
62 {print "not ok 5\n";}
63
684bef36 64open(try, '>Io_argv1.tmp') or die "Can't open temp file: $!";
fbad3eb5 65close try;
684bef36 66open(try, '>Io_argv2.tmp') or die "Can't open temp file: $!";
67close try;
68@ARGV = ('Io_argv1.tmp', 'Io_argv2.tmp');
181ea953 69$^I = '.bak';
fbad3eb5 70$/ = undef;
684bef36 71my $i = 6;
fbad3eb5 72while (<>) {
684bef36 73 s/^/ok $i\n/;
74 ++$i;
fbad3eb5 75 print;
76}
684bef36 77open(try, '<Io_argv1.tmp') or die "Can't open temp file: $!";
78print while <try>;
79open(try, '<Io_argv2.tmp') or die "Can't open temp file: $!";
fbad3eb5 80print while <try>;
81close try;
820475bd 82undef $^I;
83
84eof try or print 'not ';
684bef36 85print "ok 8\n";
820475bd 86
87eof NEVEROPENED or print 'not ';
684bef36 88print "ok 9\n";
820475bd 89
684bef36 90open STDIN, 'Io_argv1.tmp' or die $!;
820475bd 91@ARGV = ();
92!eof() or print 'not ';
684bef36 93print "ok 10\n";
820475bd 94
95<> eq "ok 6\n" or print 'not ';
684bef36 96print "ok 11\n";
820475bd 97
98open STDIN, $devnull or die $!;
99@ARGV = ();
100eof() or print 'not ';
684bef36 101print "ok 12\n";
820475bd 102
684bef36 103@ARGV = ('Io_argv1.tmp');
820475bd 104!eof() or print 'not ';
684bef36 105print "ok 13\n";
820475bd 106
107@ARGV = ($devnull, $devnull);
108!eof() or print 'not ';
684bef36 109print "ok 14\n";
820475bd 110
111close ARGV or die $!;
112eof() or print 'not ';
684bef36 113print "ok 15\n";
114
115{
116 local $/;
117 open F, 'Io_argv1.tmp' or die;
118 <F>; # set $. = 1
b9fee9ba 119 print "not " if defined(<F>); # should hit eof
120 print "ok 16\n";
684bef36 121 open F, $devnull or die;
122 print "not " unless defined(<F>);
684bef36 123 print "ok 17\n";
124 print "not " if defined(<F>);
125 print "ok 18\n";
b9fee9ba 126 print "not " if defined(<F>);
127 print "ok 19\n";
684bef36 128 open F, $devnull or die; # restart cycle again
129 print "not " unless defined(<F>);
684bef36 130 print "ok 20\n";
b9fee9ba 131 print "not " if defined(<F>);
132 print "ok 21\n";
684bef36 133 close F;
134}
fbad3eb5 135
684bef36 136END { unlink 'Io_argv1.tmp', 'Io_argv1.tmp.bak', 'Io_argv2.tmp', 'Io_argv2.tmp.bak' }