File: method-installer-redefine.t

package info (click to toggle)
libdevel-declare-perl 0.006017-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 376 kB
  • sloc: ansic: 752; perl: 608; makefile: 2
file content (43 lines) | stat: -rw-r--r-- 764 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use strict;
use warnings;
use Test::More tests => 5;
use Devel::Declare::MethodInstaller::Simple;

BEGIN {
  Devel::Declare::MethodInstaller::Simple->install_methodhandler(
    name => 'method',
    into => 'main',
  );
}

BEGIN {
  no warnings 'redefine';
  Devel::Declare::MethodInstaller::Simple->install_methodhandler(
    name => 'method_quiet',
    into => 'main',
  );
}

ok(!main->can('foo'), 'foo() not installed yet');

method foo {
    $_[0]->method
}

ok(main->can('foo'), 'foo() installed at runtime');

my @warnings;
$SIG{__WARN__} = sub { push @warnings, $_[0] };

@warnings = ();
method foo {
$_[0]->method;
}
is scalar(@warnings), 1;
like $warnings[0], qr/redefined/;

@warnings = ();
method_quiet foo {
$_[0]->method;
}
is_deeply \@warnings, [];