Commit | Line | Data |
9540f4e4 |
1 | use strict; |
2 | use warnings; |
3 | use FindBin qw($Bin); |
4 | use File::Spec::Functions; |
cfed50f2 |
5 | use File::Spec::Unix (); # need this for %INC munging |
9540f4e4 |
6 | use Test::More; |
7 | use lib 't/lib'; |
8 | |
8019c4d8 |
9 | BEGIN { |
7a1ba8bd |
10 | plan skip_all => "Sub::Name not available" |
11 | unless eval { require Sub::Name }; |
12 | |
ba8c183b |
13 | require Class::Accessor::Grouped; |
7a1ba8bd |
14 | |
ba8c183b |
15 | my $xsa_ver = $Class::Accessor::Grouped::__minimum_xsa_version; |
16 | eval { |
17 | require Class::XSAccessor; |
18 | Class::XSAccessor->VERSION ($xsa_ver); |
19 | }; |
20 | plan skip_all => "Class::XSAccessor >= $xsa_ver not available" |
21 | if $@; |
8019c4d8 |
22 | } |
9540f4e4 |
23 | |
28344104 |
24 | # rerun the regular 3 tests under XSAccessor |
8019c4d8 |
25 | $Class::Accessor::Grouped::USE_XS = 1; |
cfed50f2 |
26 | for my $tname (qw/accessors.t accessors_ro.t accessors_wo.t/) { |
27 | |
28 | subtest "$tname with USE_XS (pass $_)" => sub { |
29 | my $tfn = catfile($Bin, $tname); |
30 | |
f7cf6867 |
31 | for ( |
e6f2993f |
32 | qw|AccessorGroups.pm AccessorGroups/BeenThereDoneThat.pm AccessorGroupsRO.pm AccessorGroupsSubclass.pm AccessorGroupsWO.pm|, |
cfed50f2 |
33 | File::Spec::Unix->catfile ($tfn), |
f7cf6867 |
34 | ) { |
35 | delete $INC{$_}; |
36 | no strict 'refs'; |
37 | if (my ($mod) = $_ =~ /(.+)\.pm$/ ) { |
38 | %{"${mod}::"} = (); |
39 | } |
40 | } |
cfed50f2 |
41 | |
42 | local $SIG{__WARN__} = sub { warn @_ unless $_[0] =~ /subroutine .+ redefined/i }; |
43 | |
44 | do($tfn); |
45 | |
46 | } for (1 .. 2); |
8019c4d8 |
47 | } |
48 | |
49 | done_testing; |