fix test in with blead
[gitmo/Moose.git] / t / basics / create.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More;
7 use Test::Fatal;
8
9 use Class::Load 'is_class_loaded';
10
11 {
12     package Class;
13     use Moose;
14
15     package Foo;
16     use Moose::Role;
17     sub foo_role_applied { 1 }
18
19     package Conflicts::With::Foo;
20     use Moose::Role;
21     sub foo_role_applied { 0 }
22
23     package Not::A::Role;
24     sub lol_wut { 42 }
25 }
26
27 my $new_class;
28
29 is( exception {
30     $new_class = Moose::Meta::Class->create(
31         'Class::WithFoo',
32         superclasses => ['Class'],
33         roles        => ['Foo'],
34     );
35 }, undef, 'creating lives' );
36 ok $new_class;
37
38 my $with_foo = Class::WithFoo->new;
39
40 ok $with_foo->foo_role_applied;
41 isa_ok $with_foo, 'Class', '$with_foo';
42
43 like( exception {
44     Moose::Meta::Class->create(
45         'Made::Of::Fail',
46         superclasses => ['Class'],
47         roles => 'Foo', # "oops"
48     );
49 }, qr/You must pass an ARRAY ref of roles/ );
50
51 ok !is_class_loaded('Made::Of::Fail'), "did not create Made::Of::Fail";
52
53 isnt( exception {
54     Moose::Meta::Class->create(
55         'Continuing::To::Fail',
56         superclasses => ['Class'],
57         roles        => ['Foo', 'Conflicts::With::Foo'],
58     );
59 }, undef, 'conflicting roles == death' );
60
61 # XXX: Continuing::To::Fail gets created anyway
62
63 done_testing;