Commit | Line | Data |
a39b801f |
1 | use strict; |
2 | use warnings FATAL => 'all'; |
3 | use aliased 'MooseX::Antlers::EvalTracker'; |
4 | use aliased 'MooseX::Antlers::RefTracker'; |
5 | use aliased 'MooseX::Antlers::RefFilter'; |
6 | use B qw(perlstring); |
7 | use lib 't/lib'; |
8 | use Test::More; |
9 | |
10 | my %attr_refs; |
11 | my %attr_methods; |
12 | |
13 | { |
14 | require Moose; |
15 | my $orig = Moose->can('import'); |
16 | no warnings 'redefine'; |
17 | local *Moose::import = sub { |
18 | my $targ = caller; |
19 | Moose->$orig({ into => $targ }); |
20 | my $has = $targ->can('has'); |
21 | { |
22 | no strict 'refs'; |
23 | *{"${targ}::has"} = sub { |
24 | $attr_refs{$_[0]} = RefTracker->trace_refs( |
25 | '$attributes{'.perlstring($_[0]).'}' |
26 | => \@_ |
27 | ); |
28 | my $et = EvalTracker->new->enable; |
29 | $has->(@_); |
30 | $attr_methods{$_[0]} = $et->recorded_coderefs; |
31 | }; |
32 | } |
33 | }; |
34 | require One; |
35 | } |
36 | |
37 | ok(One->can('foo'), 'foo accessor installed'); |
38 | |
39 | use Data::Dump::Streamer; |
40 | |
41 | my $orig_foo_src = Dump(One->can('foo')); |
42 | |
43 | # write test_class method that checks method including call |
44 | # Class::Unload One |
45 | # build compiled source |
46 | # eval compiled source |
47 | # run test_class after that as well as before unload |
48 | |
49 | use Data::Dumper::Concise; |
50 | |
51 | #warn Dumper \%attr_refs; |
52 | #warn Dumper \%attr_methods; |
53 | |
54 | done_testing; |