Mouse::Util::does_role() respects $thing->does() method
[gitmo/Mouse.git] / t / 010_basics / 020-global-destruction.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More;
7
8 {
9     package Foo;
10     use Mouse;
11
12     sub DEMOLISH {
13         my $self = shift;
14         my ($igd) = @_;
15         ::ok(
16             !$igd,
17             'in_global_destruction state is passed to DEMOLISH properly (false)'
18         );
19     }
20 }
21
22 {
23     my $foo = Foo->new;
24 }
25
26 {
27     package Bar;
28     use Mouse;
29
30     sub DEMOLISH {
31         my $self = shift;
32         my ($igd) = @_;
33         ::ok(
34             !$igd,
35             'in_global_destruction state is passed to DEMOLISH properly (false)'
36         );
37     }
38
39     __PACKAGE__->meta->make_immutable;
40 }
41
42 {
43     my $bar = Bar->new;
44 }
45
46 $? = 0;
47
48 my $blib = $INC{'blib.pm'} ? ' -Mblib ' : '';
49 my @status = `$^X $blib t/010_basics/020-global-destruction-helper.pl`;
50
51 ok $status[0], 'in_global_destruction state is passed to DEMOLISH properly (true)';
52 ok $status[1], 'in_global_destruction state is passed to DEMOLISH properly (true)';
53
54 is $?, 0, 'exited successfully';
55
56 done_testing;