Commit | Line | Data |
---|---|---|
55d729e4 GS |
1 | #!./perl -w |
2 | ||
3 | # | |
4 | # test auto defined() test insertion | |
5 | # | |
6 | ||
7 | BEGIN { | |
8 | chdir 't' if -d 't'; | |
7e35a6a8 | 9 | @INC = qw(. ../lib); |
55d729e4 | 10 | $SIG{__WARN__} = sub { $warns++; warn $_[0] }; |
55d729e4 | 11 | } |
7e35a6a8 DL |
12 | require 'test.pl'; |
13 | plan( tests => 19 ); | |
b2b3adea | 14 | |
6d74d930 JM |
15 | my $unix_mode = 1; |
16 | ||
17 | if ($^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.'; | |
7b903762 | 37 | $saved_filename = './0'; |
7e35a6a8 DL |
38 | |
39 | cmp_ok($warns,'==',0,'no warns at start'); | |
55d729e4 | 40 | |
f912a474 | 41 | ok(open(FILE,">$saved_filename"),'created work file'); |
55d729e4 GS |
42 | print FILE "1\n"; |
43 | print FILE "0"; | |
44 | close(FILE); | |
45 | ||
95e8664e | 46 | open(FILE,"<$saved_filename"); |
7e35a6a8 | 47 | ok(defined(FILE),'opened work file'); |
55d729e4 GS |
48 | my $seen = 0; |
49 | my $dummy; | |
50 | while (my $name = <FILE>) | |
51 | { | |
52 | $seen++ if $name eq '0'; | |
7e35a6a8 DL |
53 | } |
54 | cmp_ok($seen,'==',1,'seen in while()'); | |
55d729e4 GS |
55 | |
56 | seek(FILE,0,0); | |
57 | $seen = 0; | |
58 | my $line = ''; | |
7e35a6a8 | 59 | do |
55d729e4 GS |
60 | { |
61 | $seen++ if $line eq '0'; | |
62 | } while ($line = <FILE>); | |
7e35a6a8 | 63 | cmp_ok($seen,'==',1,'seen in do/while'); |
55d729e4 GS |
64 | |
65 | seek(FILE,0,0); | |
7e35a6a8 DL |
66 | $seen = 0; |
67 | while (($seen ? $dummy : $name) = <FILE> ) | |
55d729e4 GS |
68 | { |
69 | $seen++ if $name eq '0'; | |
70 | } | |
7e35a6a8 | 71 | cmp_ok($seen,'==',1,'seen in while() ternary'); |
55d729e4 GS |
72 | |
73 | seek(FILE,0,0); | |
7e35a6a8 DL |
74 | $seen = 0; |
75 | my %where; | |
55d729e4 GS |
76 | while ($where{$seen} = <FILE>) |
77 | { | |
78 | $seen++ if $where{$seen} eq '0'; | |
79 | } | |
7e35a6a8 | 80 | cmp_ok($seen,'==',1,'seen in hash while()'); |
7120fed6 | 81 | close FILE; |
55d729e4 | 82 | |
7b903762 | 83 | opendir(DIR,'.'); |
7e35a6a8 | 84 | ok(defined(DIR),'opened current directory'); |
55d729e4 GS |
85 | $seen = 0; |
86 | while (my $name = readdir(DIR)) | |
87 | { | |
b2b3adea | 88 | $seen++ if $name eq $wanted_filename; |
7e35a6a8 DL |
89 | } |
90 | cmp_ok($seen,'==',1,'saw work file once'); | |
55d729e4 GS |
91 | |
92 | rewinddir(DIR); | |
7e35a6a8 | 93 | $seen = 0; |
55d729e4 GS |
94 | $dummy = ''; |
95 | while (($seen ? $dummy : $name) = readdir(DIR)) | |
96 | { | |
b2b3adea | 97 | $seen++ if $name eq $wanted_filename; |
55d729e4 | 98 | } |
7e35a6a8 | 99 | cmp_ok($seen,'>',0,'saw file in while() ternary'); |
55d729e4 GS |
100 | |
101 | rewinddir(DIR); | |
7e35a6a8 | 102 | $seen = 0; |
55d729e4 GS |
103 | while ($where{$seen} = readdir(DIR)) |
104 | { | |
b2b3adea | 105 | $seen++ if $where{$seen} eq $wanted_filename; |
55d729e4 | 106 | } |
7e35a6a8 | 107 | cmp_ok($seen,'==',1,'saw file in hash while()'); |
55d729e4 GS |
108 | |
109 | $seen = 0; | |
110 | while (my $name = glob('*')) | |
111 | { | |
b2b3adea | 112 | $seen++ if $name eq $wanted_filename; |
7e35a6a8 DL |
113 | } |
114 | cmp_ok($seen,'==',1,'saw file in glob while()'); | |
55d729e4 | 115 | |
7e35a6a8 | 116 | $seen = 0; |
55d729e4 GS |
117 | $dummy = ''; |
118 | while (($seen ? $dummy : $name) = glob('*')) | |
119 | { | |
b2b3adea | 120 | $seen++ if $name eq $wanted_filename; |
55d729e4 | 121 | } |
7e35a6a8 | 122 | cmp_ok($seen,'>',0,'saw file in glob hash while() ternary'); |
55d729e4 | 123 | |
7e35a6a8 | 124 | $seen = 0; |
55d729e4 GS |
125 | while ($where{$seen} = glob('*')) |
126 | { | |
b2b3adea | 127 | $seen++ if $where{$seen} eq $wanted_filename; |
55d729e4 | 128 | } |
7e35a6a8 | 129 | cmp_ok($seen,'==',1,'seen in glob hash while()'); |
55d729e4 | 130 | |
95e8664e | 131 | unlink($saved_filename); |
7e35a6a8 | 132 | ok(!(-f $saved_filename),'work file unlinked'); |
55d729e4 GS |
133 | |
134 | my %hash = (0 => 1, 1 => 2); | |
135 | ||
136 | $seen = 0; | |
137 | while (my $name = each %hash) | |
138 | { | |
139 | $seen++ if $name eq '0'; | |
7e35a6a8 DL |
140 | } |
141 | cmp_ok($seen,'==',1,'seen in each'); | |
55d729e4 | 142 | |
7e35a6a8 | 143 | $seen = 0; |
55d729e4 GS |
144 | $dummy = ''; |
145 | while (($seen ? $dummy : $name) = each %hash) | |
146 | { | |
147 | $seen++ if $name eq '0'; | |
148 | } | |
7e35a6a8 | 149 | cmp_ok($seen,'==',1,'seen in each ternary'); |
55d729e4 | 150 | |
7e35a6a8 | 151 | $seen = 0; |
55d729e4 GS |
152 | while ($where{$seen} = each %hash) |
153 | { | |
154 | $seen++ if $where{$seen} eq '0'; | |
155 | } | |
7e35a6a8 | 156 | cmp_ok($seen,'==',1,'seen in each hash'); |
55d729e4 | 157 | |
7e35a6a8 | 158 | cmp_ok($warns,'==',0,'no warns at finish'); |