Commit | Line | Data |
849d5e34 |
1 | #!./perl -w |
1a3850a5 |
2 | |
3 | BEGIN { |
4 | chdir 't' if -d 't'; |
20822f61 |
5 | @INC = '../lib'; |
1a3850a5 |
6 | } |
7 | |
849d5e34 |
8 | use Test; |
9 | |
10 | BEGIN { plan tests => 6 } |
11 | |
12 | use strict; |
1a3850a5 |
13 | |
14 | use File::CheckTree; |
849d5e34 |
15 | use File::Spec; # used to get absolute paths |
16 | |
17 | # We assume that we start from the perl "t" directory. |
18 | # Will move up one level to make it easier to generate |
19 | # reliable pathnames for testing File::CheckTree |
20 | |
86dc4f03 |
21 | chdir(File::Spec->updir) or die "cannot change to parent of t/ directory: $!"; |
849d5e34 |
22 | |
23 | |
24 | #### TEST 1 -- No warnings #### |
25 | # usings both relative and full paths, indented comments |
26 | |
27 | { |
28 | my ($num_warnings, $path_to_README); |
29 | $path_to_README = File::Spec->rel2abs('README'); |
30 | |
31 | my @warnings; |
32 | local $SIG{__WARN__} = sub { push @warnings, "@_" }; |
33 | |
34 | eval { |
35 | $num_warnings = validate qq{ |
36 | lib -d |
37 | # comment, followed "blank" line (w/ whitespace): |
38 | |
39 | # indented comment, followed blank line (w/o whitespace): |
40 | |
41 | README -f |
42 | $path_to_README -e || warn |
43 | }; |
44 | }; |
45 | |
46 | if ( !$@ && !@warnings && defined($num_warnings) && $num_warnings == 0 ) { |
47 | ok(1); |
48 | } |
49 | else { |
50 | ok(0); |
51 | } |
52 | } |
53 | |
54 | |
55 | #### TEST 2 -- One warning #### |
56 | |
57 | { |
58 | my ($num_warnings, @warnings); |
59 | |
60 | local $SIG{__WARN__} = sub { push @warnings, "@_" }; |
61 | |
62 | eval { |
63 | $num_warnings = validate qq{ |
64 | lib -f |
65 | README -f |
66 | }; |
67 | }; |
68 | |
69 | if ( !$@ && @warnings == 1 |
70 | && $warnings[0] =~ /lib is not a plain file/ |
71 | && defined($num_warnings) |
72 | && $num_warnings == 1 ) |
73 | { |
74 | ok(1); |
75 | } |
76 | else { |
77 | ok(0); |
78 | } |
79 | } |
80 | |
1a3850a5 |
81 | |
849d5e34 |
82 | #### TEST 3 -- Multiple warnings #### |
83 | # including first warning only from a bundle of tests, |
84 | # generic "|| warn", default "|| warn" and "|| warn '...' " |
1a3850a5 |
85 | |
849d5e34 |
86 | { |
87 | my ($num_warnings, @warnings); |
1a3850a5 |
88 | |
849d5e34 |
89 | local $SIG{__WARN__} = sub { push @warnings, "@_" }; |
90 | |
91 | eval { |
92 | $num_warnings = validate q{ |
93 | lib -effd |
94 | README -f || die |
95 | README -d || warn |
96 | lib -f || warn "my warning: $file\n" |
97 | }; |
98 | }; |
99 | |
100 | if ( !$@ && @warnings == 3 |
101 | && $warnings[0] =~ /lib is not a plain file/ |
102 | && $warnings[1] =~ /README is not a directory/ |
103 | && $warnings[2] =~ /my warning: lib/ |
104 | && defined($num_warnings) |
105 | && $num_warnings == 3 ) |
106 | { |
107 | ok(1); |
108 | } |
109 | else { |
110 | ok(0); |
111 | } |
112 | } |
113 | |
114 | |
115 | #### TEST 4 -- cd directive #### |
116 | # cd directive followed by relative paths, followed by full paths |
117 | { |
118 | my ($num_warnings, @warnings, $path_to_libFile, $path_to_dist); |
026a9d8a |
119 | $path_to_libFile = File::Spec->rel2abs(File::Spec->catdir('lib','File')); |
849d5e34 |
120 | $path_to_dist = File::Spec->rel2abs(File::Spec->curdir); |
121 | |
122 | local $SIG{__WARN__} = sub { push @warnings, "@_" }; |
123 | |
124 | eval { |
125 | $num_warnings = validate qq{ |
126 | lib -d || die |
127 | $path_to_libFile cd |
128 | Spec -e |
129 | Spec -f |
130 | $path_to_dist cd |
131 | README -ef |
132 | INSTALL -d || warn |
133 | $path_to_libFile -d || die |
134 | }; |
135 | }; |
136 | |
137 | if ( !$@ && @warnings == 2 |
138 | && $warnings[0] =~ /Spec is not a plain file/ |
139 | && $warnings[1] =~ /INSTALL is not a directory/ |
140 | && defined($num_warnings) |
141 | && $num_warnings == 2 ) |
142 | { |
143 | ok(1); |
144 | } |
145 | else { |
146 | ok(0); |
147 | } |
148 | } |
149 | |
150 | |
151 | #### TEST 5 -- Exception #### |
152 | # test with generic "|| die" |
153 | { |
154 | my $num_warnings; |
155 | |
156 | eval { |
157 | $num_warnings = validate q{ |
158 | lib -ef || die |
159 | README -d |
160 | }; |
161 | }; |
162 | |
163 | if ( $@ && $@ =~ /lib is not a plain file/ |
164 | && not defined $num_warnings ) |
165 | { |
166 | ok(1); |
167 | } |
168 | else { |
169 | ok(0); |
170 | } |
171 | } |
172 | |
173 | |
174 | #### TEST 6 -- Exception #### |
175 | # test with "|| die 'my error message'" |
176 | { |
177 | my $num_warnings; |
178 | |
179 | eval { |
180 | $num_warnings = validate q{ |
181 | lib -ef || die "yadda $file yadda...\n" |
182 | README -d |
183 | }; |
184 | }; |
185 | |
186 | if ( $@ && $@ =~ /yadda lib yadda/ |
187 | && not defined $num_warnings ) |
188 | { |
189 | ok(1); |
190 | } |
191 | else { |
192 | ok(0); |
193 | } |
194 | } |