tests for redefined subroutine warnings.
[p5sagit/Devel-Declare.git] / t / method-installer-redefine.t
1 use strict;
2 use warnings;
3 use Test::More tests => 4;
4 use Test::Warn;
5 use Devel::Declare::MethodInstaller::Simple;
6
7 BEGIN {
8   Devel::Declare::MethodInstaller::Simple->install_methodhandler(
9     name => 'method',
10     into => 'main',
11   );
12 }
13
14 BEGIN {
15   no warnings 'redefine';
16   Devel::Declare::MethodInstaller::Simple->install_methodhandler(
17     name => 'method_quiet',
18     into => 'main',
19   );
20 }
21
22 ok(!main->can('foo'), 'foo() not installed yet');
23
24 method foo {
25     $_[0]->method
26 }
27
28 use Test::Warn;
29
30 ok(main->can('foo'), 'foo() installed at runtime');
31
32 warnings_like {
33     method foo {
34         $_[0]->method;
35     }
36 } qr/redefined/;
37
38 warnings_are {
39     method_quiet foo {
40         $_[0]->method;
41     }
42 } [], 'no warnings';