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