xref: /openbsd-src/gnu/usr.bin/perl/t/io/argv.t (revision b2ea75c1b17e1a9a339660e7ed45cd24946b230e)
1#!./perl
2
3BEGIN {
4    chdir 't' if -d 't';
5    @INC = '../lib';
6}
7
8print "1..21\n";
9
10use File::Spec;
11
12my $devnull = File::Spec->devnull;
13
14open(try, '>Io_argv1.tmp') || (die "Can't open temp file: $!");
15print try "a line\n";
16close try;
17
18if ($^O eq 'MSWin32') {
19  $x = `.\\perl -e "while (<>) {print \$.,\$_;}" Io_argv1.tmp Io_argv1.tmp`;
20}
21else {
22  $x = `./perl -e 'while (<>) {print \$.,\$_;}' Io_argv1.tmp Io_argv1.tmp`;
23}
24if ($x eq "1a line\n2a line\n") {print "ok 1\n";} else {print "not ok 1\n";}
25
26if ($^O eq 'MSWin32') {
27  $x = `.\\perl -le "print 'foo'" | .\\perl -e "while (<>) {print \$_;}" Io_argv1.tmp -`;
28}
29else {
30  $x = `echo foo|./perl -e 'while (<>) {print $_;}' Io_argv1.tmp -`;
31}
32if ($x eq "a line\nfoo\n") {print "ok 2\n";} else {print "not ok 2\n";}
33
34if ($^O eq 'MSWin32') {
35  $x = `.\\perl -le "print 'foo'" |.\\perl -e "while (<>) {print \$_;}"`;
36}
37else {
38  $x = `echo foo|./perl -e 'while (<>) {print $_;}'`;
39}
40if ($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');
43while (<>) {
44    $y .= $. . $_;
45    if (eof()) {
46	if ($. == 3) {print "ok 4\n";} else {print "not ok 4\n";}
47    }
48}
49
50if ($y eq "1a line\n2a line\n3a line\n")
51    {print "ok 5\n";}
52else
53    {print "not ok 5\n";}
54
55open(try, '>Io_argv1.tmp') or die "Can't open temp file: $!";
56close try;
57open(try, '>Io_argv2.tmp') or die "Can't open temp file: $!";
58close try;
59@ARGV = ('Io_argv1.tmp', 'Io_argv2.tmp');
60$^I = '.bak';
61$/ = undef;
62my $i = 6;
63while (<>) {
64    s/^/ok $i\n/;
65    ++$i;
66    print;
67}
68open(try, '<Io_argv1.tmp') or die "Can't open temp file: $!";
69print while <try>;
70open(try, '<Io_argv2.tmp') or die "Can't open temp file: $!";
71print while <try>;
72close try;
73undef $^I;
74
75eof try or print 'not ';
76print "ok 8\n";
77
78eof NEVEROPENED or print 'not ';
79print "ok 9\n";
80
81open STDIN, 'Io_argv1.tmp' or die $!;
82@ARGV = ();
83!eof() or print 'not ';
84print "ok 10\n";
85
86<> eq "ok 6\n" or print 'not ';
87print "ok 11\n";
88
89open STDIN, $devnull or die $!;
90@ARGV = ();
91eof() or print 'not ';
92print "ok 12\n";
93
94@ARGV = ('Io_argv1.tmp');
95!eof() or print 'not ';
96print "ok 13\n";
97
98@ARGV = ($devnull, $devnull);
99!eof() or print 'not ';
100print "ok 14\n";
101
102close ARGV or die $!;
103eof() or print 'not ';
104print "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
127END { unlink 'Io_argv1.tmp', 'Io_argv1.tmp.bak', 'Io_argv2.tmp', 'Io_argv2.tmp.bak' }
128