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