Commit | Line | Data |
cf600c83 |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use Test::More; |
5 | use Test::Exception; |
6 | |
7 | use Moose (); |
8 | use Moose::Meta::Class; |
9 | use Moose::Util::MetaRole; |
10 | |
11 | { |
12 | package Foo; |
13 | use Moose; |
14 | } |
15 | |
16 | { |
17 | package Role::Bar; |
18 | use Moose::Role; |
19 | } |
20 | |
21 | my $anon_name; |
22 | |
23 | { |
24 | my $anon_class = Moose::Meta::Class->create_anon_class( |
25 | superclasses => ['Foo'], |
26 | cache => 1, |
27 | ); |
28 | |
29 | $anon_name = $anon_class->name; |
30 | |
31 | ok( $anon_name->meta, 'anon class has a metaclass' ); |
32 | } |
33 | |
34 | ok( |
35 | $anon_name->meta, |
36 | 'cached anon class still has a metaclass after \$anon_class goes out of scope' |
37 | ); |
38 | |
39 | Moose::Util::MetaRole::apply_metaroles( |
40 | for => $anon_name, |
41 | class_metaroles => { |
42 | class => ['Role::Bar'], |
43 | }, |
44 | ); |
45 | |
46 | BAIL_OUT('Cannot continue if the anon class does not have a metaclass') |
47 | unless $anon_name->can('meta'); |
48 | |
49 | my $meta = $anon_name->meta; |
50 | ok( $meta, 'cached anon class still has a metaclass applying a metarole' ); |
51 | |
52 | done_testing; |