Fix many
[gitmo/Mouse.git] / t / 050_metaclasses / failing / 023_easy_init_meta.t
CommitLineData
41888e7d 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More tests => 13;
7use Test::Mouse qw(does_ok);
8
9{
10 package Foo::Trait::Class;
11 use Mouse::Role;
12}
13
14{
15 package Foo::Trait::Attribute;
16 use Mouse::Role;
17}
18
19{
20 package Foo::Role::Base;
21 use Mouse::Role;
22}
23
24{
25 package Foo::Exporter;
26 use Mouse::Exporter;
27
28 Mouse::Exporter->setup_import_methods(
29 metaclass_roles => ['Foo::Trait::Class'],
30 attribute_metaclass_roles => ['Foo::Trait::Attribute'],
31 base_class_roles => ['Foo::Role::Base'],
32 );
33}
34
35{
36 package Foo;
37 use Mouse;
38 Foo::Exporter->import;
39
40 has foo => (is => 'ro');
41
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');
45}
46
47{
48 package Foo::Exporter::WithMouse;
49 use Mouse ();
50 use Mouse::Exporter;
51
52 my ($import, $unimport, $init_meta) =
53 Mouse::Exporter->build_import_methods(
54 also => 'Mouse',
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)],
59 );
60
61 sub init_meta {
62 my $package = shift;
63 my %options = @_;
64 ::pass('custom init_meta was called');
65 Mouse->init_meta(%options);
66 return $package->$init_meta(%options);
67 }
68}
69
70{
71 package Foo2;
72 Foo::Exporter::WithMouse->import;
73
74 has(foo => (is => 'ro'));
75
76 ::isa_ok('Foo2', 'Mouse::Object');
77 ::isa_ok(Foo2->meta, 'Mouse::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');
81}
82
83{
84 package Foo::Role;
85 use Mouse::Role;
86 Foo::Exporter->import;
87
88 ::does_ok(Foo::Role->meta, 'Foo::Trait::Class');
89}
90
91{
92 package Foo::Exporter::WithMouseRole;
93 use Mouse::Role ();
94 use Mouse::Exporter;
95
96 my ($import, $unimport, $init_meta) =
97 Mouse::Exporter->build_import_methods(
98 also => 'Mouse::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)],
103 );
104
105 sub init_meta {
106 my $package = shift;
107 my %options = @_;
108 ::pass('custom init_meta was called');
109 Mouse::Role->init_meta(%options);
110 return $package->$init_meta(%options);
111 }
112}
113
114{
115 package Foo2::Role;
116 Foo::Exporter::WithMouseRole->import;
117
118 ::isa_ok(Foo2::Role->meta, 'Mouse::Meta::Role');
119 ::does_ok(Foo2::Role->meta, 'Foo::Trait::Class');
120}