bump version expecting devrel
[gitmo/Role-Tiny.git] / t / role-basic-bugs.t
CommitLineData
4a582a37 1#!/usr/bin/env perl
2
3use lib 'lib', 't/role-basic/lib';
4use MyTests;
5
6# multiple roles with the same role
7{
8 package RoleC;
9 use Role::Tiny::Restricted;
10 sub baz { 'baz' }
11
12 package RoleB;
13 use Role::Tiny::Restricted;
14 with 'RoleC';
15 sub bar { 'bar' }
16
17 package RoleA;
18 use Role::Tiny::Restricted;
19 with 'RoleC';
20 sub foo { 'foo' }
21
22 package Foo;
23 use strict;
24 use warnings;
25 use Role::Tiny::Restricted 'with';
26 ::is( ::exception {
27 with 'RoleA', 'RoleB';
28 }, undef, 'Composing multiple roles which use the same role should not have conflicts' );
29 sub new { bless {} => shift }
30
31 my $object = Foo->new;
32 foreach my $method (qw/foo bar baz/) {
33 ::can_ok $object, $method;
34 ::is $object->$method, $method,
35 '... and all methods should be composed in correctly';
36 }
37}
38
39{
40 no warnings 'redefine';
41 local *UNIVERSAL::can = sub { 1 };
42 eval <<' END';
43 package Can::Can;
44 use Role::Tiny::Restricted 'with';
45 with 'A::NonExistent::Role';
46 END
47 my $error = $@ || '';
48 like $error, qr{^Can't locate A/NonExistent/Role.pm},
49 'If ->can always returns true, we should still not think we loaded the role'
50 or diag "Error found: $error";
51}
52
53done_testing;