6 use Test::More tests => 13;
7 use Test::Moose qw(does_ok);
10 package Foo::Trait::Class;
15 package Foo::Trait::Attribute;
20 package Foo::Role::Base;
25 package Foo::Exporter;
28 Moose::Exporter->setup_import_methods(
29 metaclass_roles => ['Foo::Trait::Class'],
30 attribute_metaclass_roles => ['Foo::Trait::Attribute'],
31 base_class_roles => ['Foo::Role::Base'],
38 Foo::Exporter->import;
40 has foo => (is => 'ro');
42 ::does_ok(Foo->meta, 'Foo::Trait::Class');
43 ::does_ok(Foo->meta->get_attribute('foo'), 'Foo::Trait::Attribute');
44 ::does_ok('Foo', 'Foo::Role::Base');
48 package Foo::Exporter::WithMoose;
52 my ($import, $unimport, $init_meta) =
53 Moose::Exporter->build_import_methods(
55 metaclass_roles => ['Foo::Trait::Class'],
56 attribute_metaclass_roles => ['Foo::Trait::Attribute'],
57 base_class_roles => ['Foo::Role::Base'],
58 install => [qw(import unimport)],
64 ::pass('custom init_meta was called');
65 Moose->init_meta(%options);
66 return $package->$init_meta(%options);
72 Foo::Exporter::WithMoose->import;
74 has(foo => (is => 'ro'));
76 ::isa_ok('Foo2', 'Moose::Object');
77 ::isa_ok(Foo2->meta, 'Moose::Meta::Class');
78 ::does_ok(Foo2->meta, 'Foo::Trait::Class');
79 ::does_ok(Foo2->meta->get_attribute('foo'), 'Foo::Trait::Attribute');
80 ::does_ok('Foo2', 'Foo::Role::Base');
86 Foo::Exporter->import;
88 ::does_ok(Foo::Role->meta, 'Foo::Trait::Class');
92 package Foo::Exporter::WithMooseRole;
96 my ($import, $unimport, $init_meta) =
97 Moose::Exporter->build_import_methods(
98 also => 'Moose::Role',
99 metaclass_roles => ['Foo::Trait::Class'],
100 attribute_metaclass_roles => ['Foo::Trait::Attribute'],
101 base_class_roles => ['Foo::Role::Base'],
102 install => [qw(import unimport)],
108 ::pass('custom init_meta was called');
109 Moose::Role->init_meta(%options);
110 return $package->$init_meta(%options);
116 Foo::Exporter::WithMooseRole->import;
118 ::isa_ok(Foo2::Role->meta, 'Moose::Meta::Role');
119 ::does_ok(Foo2::Role->meta, 'Foo::Trait::Class');