2 # This is automatically generated by author/import-moose-test.pl.
3 # DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!!
4 use t::lib::MooseCompat;
10 $TODO = q{Mouse is not yet completed};
18 has foo => ( is => "ro" );
22 metaclass => "Mouse::Meta::Class",
23 error_class => "Mouse::Error::Croak",
27 has foo => ( is => "ro" );
32 extends 'Mouse::Object', 'Mouse::Error::Default';
34 has message => ( isa => "Str", is => "ro" );
35 has attr => ( isa => "Mouse::Meta::Attribute", is => "ro" );
36 has method => ( isa => "Mouse::Meta::Method", is => "ro" );
37 has metaclass => ( isa => "Mouse::Meta::Class", is => "ro" );
38 has data => ( is => "ro" );
39 has line => ( isa => "Int", is => "ro" );
40 has file => ( isa => "Str", is => "ro" );
41 has last_error => ( isa => "Any", is => "ro" );
46 metaclass => "Mouse::Meta::Class",
47 error_class => "Baz::Error",
51 has foo => ( is => "ro" );
55 sub blah { $line = __LINE__; shift->foo(4) }
62 ok( my $e = $@, "got some error" );
71 my $e = create_error( Foo->new );
72 ok( !ref( $e->{error} ), "error is a string" );
73 like( $e->{error}, qr/line $e->{line}\n.*\n/s, "confess" );
77 my $e = create_error( Bar->new );
78 ok( !ref( $e->{error} ), "error is a string" );
79 like( $e->{error}, qr/line $e->{line}$/s, "croak" );
83 my $e = create_error( my $baz = Baz->new );
84 isa_ok( $e->{error}, "Baz::Error" );
85 unlike( $e->{error}->message, qr/line $e->{line}/s,
86 "no line info, just a message" );
87 isa_ok( $e->{error}->metaclass, "Mouse::Meta::Class", "metaclass" );
88 is( $e->{error}->metaclass, Baz->meta, "metaclass value" );
89 isa_ok( $e->{error}->attr, "Mouse::Meta::Attribute", "attr" );
90 is( $e->{error}->attr, Baz->meta->get_attribute("foo"), "attr value" );
91 isa_ok( $e->{error}->method, "Mouse::Meta::Method", "method" );
92 is( $e->{error}->method, Baz->meta->get_method("foo"), "method value" );
93 is( $e->{error}->line, $e->{line}, "line attr" );
94 is( $e->{error}->file, $e->{file}, "file attr" );
95 is_deeply( $e->{error}->data, [ $baz, 4 ], "captured args" );
96 like( $e->{error}->last_error, qr/Blah/, "last error preserved" );
112 Mouse::Util::MetaRole::apply_metaroles(
114 class_metaroles => { class => ['Role::Foo'] },
119 package Baz::Sub::Sub;
121 metaclass => 'Mouse::Meta::Class',
122 error_class => 'Mouse::Error::Croak',
126 ::dies_ok { extends 'Baz::Sub' } 'error_class is included in metaclass compatibility checks';
133 metaclass => 'Mouse::Meta::Class',
134 error_class => 'Mouse::Error::Croak',
139 Mouse::Util::MetaRole::apply_metaroles(
141 class_metaroles => { class => ['Role::Foo'] },
145 ok( Foo::Sub->meta->error_class->isa('Mouse::Error::Croak'),
146 q{Foo::Sub's error_class still isa Mouse::Error::Croak} );
149 package Foo::Sub::Sub;
152 ::lives_ok { extends 'Foo::Sub' } 'error_class differs by role so incompat is handled';
154 Mouse::Util::MetaRole::apply_metaroles(
156 class_metaroles => { error => ['Role::Foo'] },
160 ok( Foo::Sub::Sub->meta->error_class->meta->does_role('Role::Foo'),
161 q{Foo::Sub::Sub's error_class does Role::Foo} );
162 ok( Foo::Sub::Sub->meta->error_class->isa('Mouse::Error::Croak'),
163 q{Foo::Sub::Sub's error_class now subclasses Mouse::Error::Croak} );