Make get_code_info "public"(er)
[gitmo/Class-MOP.git] / t / 082_get_code_info.t
CommitLineData
423ea917 1use strict;
2use warnings;
3
532e6d2f 4use Test::More tests => 6;
5use Sub::Name 'subname';
e896822d 6
7BEGIN {
351e5029 8 $^P &= ~0x200; # Don't munger anonymous sub names
e896822d 9}
423ea917 10
11BEGIN { use_ok("Class::MOP") }
12
423ea917 13
14sub code_name_is ($$$;$) {
15 my ( $code, $stash, $name, $desc ) = @_;
16 $desc ||= "sub name is ${stash}::$name";
17
18 is_deeply(
19 [ Class::MOP::get_code_info($code) ],
20 [ $stash, $name ],
21 $desc,
22 );
23}
24
25code_name_is( sub {}, main => "__ANON__" );
26
27code_name_is( subname("Foo::bar", sub {}), Foo => "bar" );
28
29code_name_is( subname("", sub {}), "main" => "" );
30
31require Class::MOP::Method;
32code_name_is( \&Class::MOP::Method::name, "Class::MOP::Method", "name" );
33
1b7e9bae 34{
35 package Foo;
36
37 sub MODIFY_CODE_ATTRIBUTES {
38 my ($class, $code) = @_;
39 ::ok(!Class::MOP::get_code_info($code), "no name for a coderef that's still compiling");
40 return ();
41 }
42
43 sub foo : Bar {}
44}