Merge lp:~percona-toolkit-dev/percona-toolkit/fix-1073532-Mo-Scalar-Util-PP into lp:percona-toolkit/2.1
- fix-1073532-Mo-Scalar-Util-PP
- Merge into 2.1
Proposed by
Brian Fraser
Status: | Merged |
---|---|
Approved by: | Daniel Nichter |
Approved revision: | 442 |
Merged at revision: | 447 |
Proposed branch: | lp:~percona-toolkit-dev/percona-toolkit/fix-1073532-Mo-Scalar-Util-PP |
Merge into: | lp:percona-toolkit/2.1 |
Diff against target: |
409 lines (+114/-61) 12 files modified
bin/pt-archiver (+7/-6) bin/pt-deadlock-logger (+7/-6) bin/pt-kill (+7/-6) bin/pt-online-schema-change (+7/-6) bin/pt-slave-delay (+7/-6) bin/pt-slave-find (+7/-6) bin/pt-slave-restart (+7/-6) bin/pt-table-checksum (+7/-6) bin/pt-variable-advisor (+7/-6) lib/Mo.pm (+7/-7) t/lib/Mo/isa.t (+16/-0) t/lib/Mo/isa_subtest.pm (+28/-0) |
To merge this branch: | bzr merge lp:~percona-toolkit-dev/percona-toolkit/fix-1073532-Mo-Scalar-Util-PP |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Daniel Nichter | Approve | ||
Review via email:
|
Commit message
Description of the change
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'bin/pt-archiver' |
2 | --- bin/pt-archiver 2012-10-31 01:12:57 +0000 |
3 | +++ bin/pt-archiver 2012-10-31 15:31:23 +0000 |
4 | @@ -1104,14 +1104,15 @@ |
5 | use warnings qw( FATAL all ); |
6 | |
7 | use Carp (); |
8 | -use Scalar::Util (); |
9 | +use Scalar::Util qw(looks_like_number blessed); |
10 | + |
11 | |
12 | our %TYPES = ( |
13 | - Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, |
14 | - Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, |
15 | - Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, |
16 | + Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) }, |
17 | + Num => sub { defined $_[0] && looks_like_number($_[0]) }, |
18 | + Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) }, |
19 | Str => sub { defined $_[0] }, |
20 | - Object => sub { defined $_[0] && &Scalar::Util::blessed }, |
21 | + Object => sub { defined $_[0] && blessed($_[0]) }, |
22 | FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, |
23 | |
24 | map { |
25 | @@ -1285,7 +1286,7 @@ |
26 | $method = sub { |
27 | if ( $#_ ) { |
28 | Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) |
29 | - unless blessed($_[1]) && $_[1]->does($role) |
30 | + unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) } |
31 | } |
32 | goto &$original_method |
33 | }; |
34 | |
35 | === modified file 'bin/pt-deadlock-logger' |
36 | --- bin/pt-deadlock-logger 2012-10-31 09:18:34 +0000 |
37 | +++ bin/pt-deadlock-logger 2012-10-31 15:31:23 +0000 |
38 | @@ -1101,14 +1101,15 @@ |
39 | use warnings qw( FATAL all ); |
40 | |
41 | use Carp (); |
42 | -use Scalar::Util (); |
43 | +use Scalar::Util qw(looks_like_number blessed); |
44 | + |
45 | |
46 | our %TYPES = ( |
47 | - Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, |
48 | - Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, |
49 | - Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, |
50 | + Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) }, |
51 | + Num => sub { defined $_[0] && looks_like_number($_[0]) }, |
52 | + Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) }, |
53 | Str => sub { defined $_[0] }, |
54 | - Object => sub { defined $_[0] && &Scalar::Util::blessed }, |
55 | + Object => sub { defined $_[0] && blessed($_[0]) }, |
56 | FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, |
57 | |
58 | map { |
59 | @@ -1282,7 +1283,7 @@ |
60 | $method = sub { |
61 | if ( $#_ ) { |
62 | Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) |
63 | - unless blessed($_[1]) && $_[1]->does($role) |
64 | + unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) } |
65 | } |
66 | goto &$original_method |
67 | }; |
68 | |
69 | === modified file 'bin/pt-kill' |
70 | --- bin/pt-kill 2012-10-31 09:18:34 +0000 |
71 | +++ bin/pt-kill 2012-10-31 15:31:23 +0000 |
72 | @@ -1108,14 +1108,15 @@ |
73 | use warnings qw( FATAL all ); |
74 | |
75 | use Carp (); |
76 | -use Scalar::Util (); |
77 | +use Scalar::Util qw(looks_like_number blessed); |
78 | + |
79 | |
80 | our %TYPES = ( |
81 | - Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, |
82 | - Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, |
83 | - Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, |
84 | + Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) }, |
85 | + Num => sub { defined $_[0] && looks_like_number($_[0]) }, |
86 | + Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) }, |
87 | Str => sub { defined $_[0] }, |
88 | - Object => sub { defined $_[0] && &Scalar::Util::blessed }, |
89 | + Object => sub { defined $_[0] && blessed($_[0]) }, |
90 | FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, |
91 | |
92 | map { |
93 | @@ -1289,7 +1290,7 @@ |
94 | $method = sub { |
95 | if ( $#_ ) { |
96 | Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) |
97 | - unless blessed($_[1]) && $_[1]->does($role) |
98 | + unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) } |
99 | } |
100 | goto &$original_method |
101 | }; |
102 | |
103 | === modified file 'bin/pt-online-schema-change' |
104 | --- bin/pt-online-schema-change 2012-10-31 09:18:34 +0000 |
105 | +++ bin/pt-online-schema-change 2012-10-31 15:31:23 +0000 |
106 | @@ -1114,14 +1114,15 @@ |
107 | use warnings qw( FATAL all ); |
108 | |
109 | use Carp (); |
110 | -use Scalar::Util (); |
111 | +use Scalar::Util qw(looks_like_number blessed); |
112 | + |
113 | |
114 | our %TYPES = ( |
115 | - Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, |
116 | - Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, |
117 | - Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, |
118 | + Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) }, |
119 | + Num => sub { defined $_[0] && looks_like_number($_[0]) }, |
120 | + Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) }, |
121 | Str => sub { defined $_[0] }, |
122 | - Object => sub { defined $_[0] && &Scalar::Util::blessed }, |
123 | + Object => sub { defined $_[0] && blessed($_[0]) }, |
124 | FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, |
125 | |
126 | map { |
127 | @@ -1295,7 +1296,7 @@ |
128 | $method = sub { |
129 | if ( $#_ ) { |
130 | Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) |
131 | - unless blessed($_[1]) && $_[1]->does($role) |
132 | + unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) } |
133 | } |
134 | goto &$original_method |
135 | }; |
136 | |
137 | === modified file 'bin/pt-slave-delay' |
138 | --- bin/pt-slave-delay 2012-10-31 09:18:34 +0000 |
139 | +++ bin/pt-slave-delay 2012-10-31 15:31:23 +0000 |
140 | @@ -1101,14 +1101,15 @@ |
141 | use warnings qw( FATAL all ); |
142 | |
143 | use Carp (); |
144 | -use Scalar::Util (); |
145 | +use Scalar::Util qw(looks_like_number blessed); |
146 | + |
147 | |
148 | our %TYPES = ( |
149 | - Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, |
150 | - Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, |
151 | - Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, |
152 | + Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) }, |
153 | + Num => sub { defined $_[0] && looks_like_number($_[0]) }, |
154 | + Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) }, |
155 | Str => sub { defined $_[0] }, |
156 | - Object => sub { defined $_[0] && &Scalar::Util::blessed }, |
157 | + Object => sub { defined $_[0] && blessed($_[0]) }, |
158 | FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, |
159 | |
160 | map { |
161 | @@ -1282,7 +1283,7 @@ |
162 | $method = sub { |
163 | if ( $#_ ) { |
164 | Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) |
165 | - unless blessed($_[1]) && $_[1]->does($role) |
166 | + unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) } |
167 | } |
168 | goto &$original_method |
169 | }; |
170 | |
171 | === modified file 'bin/pt-slave-find' |
172 | --- bin/pt-slave-find 2012-10-31 09:18:34 +0000 |
173 | +++ bin/pt-slave-find 2012-10-31 15:31:23 +0000 |
174 | @@ -1080,14 +1080,15 @@ |
175 | use warnings qw( FATAL all ); |
176 | |
177 | use Carp (); |
178 | -use Scalar::Util (); |
179 | +use Scalar::Util qw(looks_like_number blessed); |
180 | + |
181 | |
182 | our %TYPES = ( |
183 | - Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, |
184 | - Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, |
185 | - Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, |
186 | + Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) }, |
187 | + Num => sub { defined $_[0] && looks_like_number($_[0]) }, |
188 | + Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) }, |
189 | Str => sub { defined $_[0] }, |
190 | - Object => sub { defined $_[0] && &Scalar::Util::blessed }, |
191 | + Object => sub { defined $_[0] && blessed($_[0]) }, |
192 | FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, |
193 | |
194 | map { |
195 | @@ -1261,7 +1262,7 @@ |
196 | $method = sub { |
197 | if ( $#_ ) { |
198 | Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) |
199 | - unless blessed($_[1]) && $_[1]->does($role) |
200 | + unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) } |
201 | } |
202 | goto &$original_method |
203 | }; |
204 | |
205 | === modified file 'bin/pt-slave-restart' |
206 | --- bin/pt-slave-restart 2012-10-31 09:18:34 +0000 |
207 | +++ bin/pt-slave-restart 2012-10-31 15:31:23 +0000 |
208 | @@ -1222,14 +1222,15 @@ |
209 | use warnings qw( FATAL all ); |
210 | |
211 | use Carp (); |
212 | -use Scalar::Util (); |
213 | +use Scalar::Util qw(looks_like_number blessed); |
214 | + |
215 | |
216 | our %TYPES = ( |
217 | - Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, |
218 | - Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, |
219 | - Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, |
220 | + Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) }, |
221 | + Num => sub { defined $_[0] && looks_like_number($_[0]) }, |
222 | + Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) }, |
223 | Str => sub { defined $_[0] }, |
224 | - Object => sub { defined $_[0] && &Scalar::Util::blessed }, |
225 | + Object => sub { defined $_[0] && blessed($_[0]) }, |
226 | FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, |
227 | |
228 | map { |
229 | @@ -1403,7 +1404,7 @@ |
230 | $method = sub { |
231 | if ( $#_ ) { |
232 | Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) |
233 | - unless blessed($_[1]) && $_[1]->does($role) |
234 | + unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) } |
235 | } |
236 | goto &$original_method |
237 | }; |
238 | |
239 | === modified file 'bin/pt-table-checksum' |
240 | --- bin/pt-table-checksum 2012-10-31 09:18:34 +0000 |
241 | +++ bin/pt-table-checksum 2012-10-31 15:31:23 +0000 |
242 | @@ -2774,14 +2774,15 @@ |
243 | use warnings qw( FATAL all ); |
244 | |
245 | use Carp (); |
246 | -use Scalar::Util (); |
247 | +use Scalar::Util qw(looks_like_number blessed); |
248 | + |
249 | |
250 | our %TYPES = ( |
251 | - Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, |
252 | - Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, |
253 | - Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, |
254 | + Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) }, |
255 | + Num => sub { defined $_[0] && looks_like_number($_[0]) }, |
256 | + Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) }, |
257 | Str => sub { defined $_[0] }, |
258 | - Object => sub { defined $_[0] && &Scalar::Util::blessed }, |
259 | + Object => sub { defined $_[0] && blessed($_[0]) }, |
260 | FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, |
261 | |
262 | map { |
263 | @@ -2955,7 +2956,7 @@ |
264 | $method = sub { |
265 | if ( $#_ ) { |
266 | Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) |
267 | - unless blessed($_[1]) && $_[1]->does($role) |
268 | + unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) } |
269 | } |
270 | goto &$original_method |
271 | }; |
272 | |
273 | === modified file 'bin/pt-variable-advisor' |
274 | --- bin/pt-variable-advisor 2012-10-31 09:18:34 +0000 |
275 | +++ bin/pt-variable-advisor 2012-10-31 15:31:23 +0000 |
276 | @@ -1105,14 +1105,15 @@ |
277 | use warnings qw( FATAL all ); |
278 | |
279 | use Carp (); |
280 | -use Scalar::Util (); |
281 | +use Scalar::Util qw(looks_like_number blessed); |
282 | + |
283 | |
284 | our %TYPES = ( |
285 | - Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, |
286 | - Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, |
287 | - Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, |
288 | + Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) }, |
289 | + Num => sub { defined $_[0] && looks_like_number($_[0]) }, |
290 | + Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) }, |
291 | Str => sub { defined $_[0] }, |
292 | - Object => sub { defined $_[0] && &Scalar::Util::blessed }, |
293 | + Object => sub { defined $_[0] && blessed($_[0]) }, |
294 | FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, |
295 | |
296 | map { |
297 | @@ -1286,7 +1287,7 @@ |
298 | $method = sub { |
299 | if ( $#_ ) { |
300 | Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) |
301 | - unless blessed($_[1]) && $_[1]->does($role) |
302 | + unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) } |
303 | } |
304 | goto &$original_method |
305 | }; |
306 | |
307 | === modified file 'lib/Mo.pm' |
308 | --- lib/Mo.pm 2012-07-11 18:04:50 +0000 |
309 | +++ lib/Mo.pm 2012-10-31 15:31:23 +0000 |
310 | @@ -41,19 +41,19 @@ |
311 | use warnings qw( FATAL all ); |
312 | |
313 | use Carp (); |
314 | -use Scalar::Util (); |
315 | +use Scalar::Util qw(looks_like_number blessed); |
316 | |
317 | # Basic types for isa. If you want a new type, either add it here, |
318 | # or give isa a coderef. |
319 | + |
320 | our %TYPES = ( |
321 | - Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, |
322 | - Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, |
323 | - Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, |
324 | + Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) }, |
325 | + Num => sub { defined $_[0] && looks_like_number($_[0]) }, |
326 | + Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) }, |
327 | Str => sub { defined $_[0] }, |
328 | - Object => sub { defined $_[0] && &Scalar::Util::blessed }, |
329 | + Object => sub { defined $_[0] && blessed($_[0]) }, |
330 | FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, |
331 | |
332 | - # Ref types: |
333 | map { |
334 | my $type = /R/ ? $_ : uc $_; |
335 | $_ . "Ref" => sub { ref $_[0] eq $type } |
336 | @@ -245,7 +245,7 @@ |
337 | $method = sub { |
338 | if ( $#_ ) { |
339 | Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) |
340 | - unless blessed($_[1]) && $_[1]->does($role) |
341 | + unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) } |
342 | } |
343 | goto &$original_method |
344 | }; |
345 | |
346 | === modified file 't/lib/Mo/isa.t' |
347 | --- t/lib/Mo/isa.t 2012-07-19 21:38:35 +0000 |
348 | +++ t/lib/Mo/isa.t 2012-10-31 15:31:23 +0000 |
349 | @@ -9,6 +9,7 @@ |
350 | use strict; |
351 | use warnings FATAL => 'all'; |
352 | use English qw(-no_match_vars); |
353 | +use PerconaTest (); |
354 | use Test::More; |
355 | |
356 | sub dies_ok (&;$) { |
357 | @@ -182,4 +183,19 @@ |
358 | my $method = "my$type"; |
359 | dies_ok { $foo->$method(undef) } "$type attr set to undef dies" } |
360 | |
361 | + |
362 | +use Config; |
363 | +use File::Spec; |
364 | +use IPC::Cmd (); |
365 | +my $thisperl = $^X; |
366 | +if ($^O ne 'VMS') |
367 | + {$thisperl .= $Config{_exe} unless $thisperl =~ m/$Config{_exe}$/i;} |
368 | + |
369 | +my $pm_test = File::Spec->catfile($PerconaTest::trunk, qw(t lib Mo isa_subtest.pm)); |
370 | + |
371 | +ok( |
372 | + scalar(IPC::Cmd::run(command => [$thisperl, $pm_test])), |
373 | + "Mo types work with Scalar::Util::PP", |
374 | +); |
375 | + |
376 | done_testing; |
377 | |
378 | === added file 't/lib/Mo/isa_subtest.pm' |
379 | --- t/lib/Mo/isa_subtest.pm 1970-01-01 00:00:00 +0000 |
380 | +++ t/lib/Mo/isa_subtest.pm 2012-10-31 15:31:23 +0000 |
381 | @@ -0,0 +1,28 @@ |
382 | +BEGIN { |
383 | + require Scalar::Util::PP; |
384 | + *Scalar::Util:: = \*Scalar::Util::PP::; |
385 | + $INC{"Scalar/Util.pm"} = __FILE__; |
386 | +}; |
387 | + |
388 | +BEGIN { |
389 | + die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n" |
390 | + unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH}; |
391 | + unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib"; |
392 | +}; |
393 | + |
394 | +use strict; |
395 | +use warnings; |
396 | + |
397 | +{ |
398 | + package isa_subtest; |
399 | + use Mo; |
400 | + |
401 | + has attr => ( |
402 | + is => 'rw', |
403 | + isa => 'Int', |
404 | + ); |
405 | + |
406 | + 1; |
407 | +} |
408 | + |
409 | +isa_subtest->new(attr => 100); |
+my $pm_test = File::Spec- >catfile( $PerconaTest: :trunk, qw(t lib Mo isa_subtest.pm));
both otherwise it passes tests.