also allow suppressing the meta method during CMOP::Class->create
[gitmo/Class-MOP.git] / t / 090_no_meta_method.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More;
5 use Test::Exception;
6 use Class::MOP;
7
8 {
9     {
10         package Foo;
11         use metaclass no_meta => 1;
12     }
13
14     my $meta = Class::MOP::class_of('Foo');
15     ok(!$meta->has_method('meta'), "no meta method was installed");
16     $meta->add_method(meta => sub { die 'META' });
17     lives_ok { $meta->find_method_by_name('meta') } "can do meta-level stuff";
18     lives_ok { $meta->make_immutable } "can do meta-level stuff";
19     lives_ok { $meta->class_precedence_list } "can do meta-level stuff";
20 }
21
22 {
23     my $meta = Class::MOP::Class->create('Bar', no_meta => 1);
24     ok(!$meta->has_method('meta'), "no meta method was installed");
25     $meta->add_method(meta => sub { die 'META' });
26     lives_ok { $meta->find_method_by_name('meta') } "can do meta-level stuff";
27     lives_ok { $meta->make_immutable } "can do meta-level stuff";
28     lives_ok { $meta->class_precedence_list } "can do meta-level stuff";
29 }
30
31 done_testing;