xref: /openbsd-src/gnu/usr.bin/perl/t/op/defins.t (revision d13be5d47e4149db2549a9828e244d59dbc43f15)
1#!./perl -w
2
3#
4# test auto defined() test insertion
5#
6
7BEGIN {
8    chdir 't' if -d 't';
9    @INC = qw(. ../lib);
10    $SIG{__WARN__} = sub { $warns++; warn $_[0] };
11}
12require 'test.pl';
13plan( tests => 19 );
14
15my $unix_mode = 1;
16
17if ($^O eq 'VMS') {
18    # We have to know if VMS is in UNIX mode.  In UNIX mode, trailing dots
19    # should not be present.  There are actually two settings that control this.
20
21    $unix_mode = 0;
22    my $unix_rpt = 0;
23    my $drop_dot = 0;
24    if (eval 'require VMS::Feature') {
25        $unix_rpt = VMS::Feature::current('filename_unix_report');
26        $drop_dot = VMS::Feature::current('readdir_dropdotnotype');
27    } else {
28        my $unix_report = $ENV{'DECC$FILENAME_UNIX_REPORT'} || '';
29        $unix_rpt = $unix_report =~ /^[ET1]/i;
30        my $drop_dot_notype = $ENV{'DECC$READDIR_DROPDOTNOTYPE'} || '';
31        $drop_dot = $drop_dot_notype =~ /^[ET1]/i;
32    }
33    $unix_mode = 1 if $drop_dot && unix_rpt;
34}
35
36$wanted_filename = $unix_mode ? '0' : '0.';
37$saved_filename = './0';
38
39cmp_ok($warns,'==',0,'no warns at start');
40
41open(FILE,">$saved_filename");
42ok(defined(FILE),'created work file');
43print FILE "1\n";
44print FILE "0";
45close(FILE);
46
47open(FILE,"<$saved_filename");
48ok(defined(FILE),'opened work file');
49my $seen = 0;
50my $dummy;
51while (my $name = <FILE>)
52 {
53  $seen++ if $name eq '0';
54 }
55cmp_ok($seen,'==',1,'seen in while()');
56
57seek(FILE,0,0);
58$seen = 0;
59my $line = '';
60do
61 {
62  $seen++ if $line eq '0';
63 } while ($line = <FILE>);
64cmp_ok($seen,'==',1,'seen in do/while');
65
66seek(FILE,0,0);
67$seen = 0;
68while (($seen ? $dummy : $name) = <FILE> )
69 {
70  $seen++ if $name eq '0';
71 }
72cmp_ok($seen,'==',1,'seen in while() ternary');
73
74seek(FILE,0,0);
75$seen = 0;
76my %where;
77while ($where{$seen} = <FILE>)
78 {
79  $seen++ if $where{$seen} eq '0';
80 }
81cmp_ok($seen,'==',1,'seen in hash while()');
82close FILE;
83
84opendir(DIR,'.');
85ok(defined(DIR),'opened current directory');
86$seen = 0;
87while (my $name = readdir(DIR))
88 {
89  $seen++ if $name eq $wanted_filename;
90 }
91cmp_ok($seen,'==',1,'saw work file once');
92
93rewinddir(DIR);
94$seen = 0;
95$dummy = '';
96while (($seen ? $dummy : $name) = readdir(DIR))
97 {
98  $seen++ if $name eq $wanted_filename;
99 }
100cmp_ok($seen,'>',0,'saw file in while() ternary');
101
102rewinddir(DIR);
103$seen = 0;
104while ($where{$seen} = readdir(DIR))
105 {
106  $seen++ if $where{$seen} eq $wanted_filename;
107 }
108cmp_ok($seen,'==',1,'saw file in hash while()');
109
110$seen = 0;
111while (my $name = glob('*'))
112 {
113  $seen++ if $name eq $wanted_filename;
114 }
115cmp_ok($seen,'==',1,'saw file in glob while()');
116
117$seen = 0;
118$dummy = '';
119while (($seen ? $dummy : $name) = glob('*'))
120 {
121  $seen++ if $name eq $wanted_filename;
122 }
123cmp_ok($seen,'>',0,'saw file in glob hash while() ternary');
124
125$seen = 0;
126while ($where{$seen} = glob('*'))
127 {
128  $seen++ if $where{$seen} eq $wanted_filename;
129 }
130cmp_ok($seen,'==',1,'seen in glob hash while()');
131
132unlink($saved_filename);
133ok(!(-f $saved_filename),'work file unlinked');
134
135my %hash = (0 => 1, 1 => 2);
136
137$seen = 0;
138while (my $name = each %hash)
139 {
140  $seen++ if $name eq '0';
141 }
142cmp_ok($seen,'==',1,'seen in each');
143
144$seen = 0;
145$dummy = '';
146while (($seen ? $dummy : $name) = each %hash)
147 {
148  $seen++ if $name eq '0';
149 }
150cmp_ok($seen,'==',1,'seen in each ternary');
151
152$seen = 0;
153while ($where{$seen} = each %hash)
154 {
155  $seen++ if $where{$seen} eq '0';
156 }
157cmp_ok($seen,'==',1,'seen in each hash');
158
159cmp_ok($warns,'==',0,'no warns at finish');
160