File: extend-role-tiny.t

package info (click to toggle)
librole-tiny-perl 2.002004-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 292 kB
  • sloc: perl: 454; makefile: 2
file content (42 lines) | stat: -rw-r--r-- 907 bytes parent folder | download
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
use strict;
use warnings;
use Test::More;

BEGIN {
  package My::Role::Tiny::Extension;
  $INC{'My/Role/Tiny/Extension.pm'} = __FILE__;
  use Role::Tiny ();
  our @ISA = qw(Role::Tiny);

  my %lie;

  sub _install_subs {
    my $me = shift;
    my ($role) = @_;
    local $lie{$role} = 1;
    $me->SUPER::_install_subs(@_);
  }

  sub is_role {
    my ($me, $role) = @_;
    return 0
      if $lie{$role};
    $me->SUPER::is_role($role);
  }
}

my @warnings;
BEGIN {
  package My::Thing::Using::Extended::Role;
  My::Role::Tiny::Extension->import;
  local $SIG{__WARN__} = sub { push @warnings, @_ };
  My::Role::Tiny::Extension->import;
}

my $methods = My::Role::Tiny::Extension->_concrete_methods_of('My::Thing::Using::Extended::Role');
is join(', ', sort keys %$methods), '',
  'subs installed when creating a role are not methods';

# there will be warnings but we don't care about them

done_testing;