first pass at testing
[gitmo/MooseX-Antlers.git] / t / one.t
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;