Remove our (now broken) dzil GatherDir subclass
[gitmo/Moose.git] / t / bugs / traits_with_exporter.t
CommitLineData
e2a758ad 1#!/usr/bin/perl
2
3use lib "t/lib";
4use strict;
5use warnings;
6
7use Test::More;
8
9BEGIN {
10 package MyExporterRole;
11
12 use Moose ();
13 use Moose::Exporter;
14
15 Moose::Exporter->setup_import_methods(
16 also => 'Moose',
17 );
18
19 sub init_meta {
20 my ($class,%args) = @_;
21
22 my $meta = Moose->init_meta( %args );
23
24 Moose::Util::MetaRole::apply_metaroles(
25 for => $meta,
26 class_metaroles => {
27 class => ['MyMetaRole'],
28 },
29 );
30
31 return $meta;
32 }
33
34 $INC{'MyExporterRole.pm'} = __FILE__;
35}
36
37{
38 package MyMetaRole;
39 use Moose::Role;
40
41 sub some_meta_class_method {
42 return "HEY"
43 }
44}
45
46{
47 package MyTrait;
48 use Moose::Role;
49
50 sub some_meta_class_method_defined_by_trait {
51 return "HO"
52 }
53
54 {
55 package Moose::Meta::Class::Custom::Trait::MyClassTrait;
56 use strict;
57 use warnings;
58 sub register_implementation { return 'MyTrait' }
59 }
60}
61
62{
63 package MyClass;
64 use MyExporterRole -traits => 'MyClassTrait';
65}
66
67
68
69my $my_class = MyClass->new;
70
71isa_ok($my_class,'MyClass');
72
73my $meta = $my_class->meta();
74# Check if MyMetaRole has been applied
75ok($meta->can('some_meta_class_method'),'Meta class has some_meta_class_method');
76# Check if MyTrait has been applied
77ok($meta->can('some_meta_class_method_defined_by_trait'),'Meta class has some_meta_class_method_defined_by_trait');
78
79done_testing;