summaryrefslogtreecommitdiff
path: root/t/compat/inc_hash.t
blob: 25f6b47291b4fcb9e76400c744a93a9443f3c58f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
use strict;
use warnings;
use Test::More;
use lib 't/lib';

use Moose ();
use Module::Runtime 'module_notional_filename';

sub inc_ok {
    local $Test::Builder::Level = $Test::Builder::Level + 1;
    my ($class) = @_;
    is($INC{module_notional_filename($class)}, '(set by Moose)');
}

sub no_inc_ok {
    local $Test::Builder::Level = $Test::Builder::Level + 1;
    my ($class) = @_;
    ok(!exists $INC{module_notional_filename($class)});
}

{
    no_inc_ok('Foo');
    my $meta = Moose::Meta::Class->create('Foo');
    inc_ok('Foo');
}
inc_ok('Foo');

{
    no_inc_ok('Bar');
    ok(!exists $INC{module_notional_filename('Bar')});
    my $meta = Class::MOP::Package->create('Bar');
    inc_ok('Bar');
}
inc_ok('Bar');

my $anon_name;
{
    my $meta = Moose::Meta::Class->create_anon_class;
    $anon_name = $meta->name;
    inc_ok($anon_name);
}
no_inc_ok($anon_name);

{
    no_inc_ok('Real::Package');
    require Real::Package;
    like($INC{module_notional_filename('Real::Package')}, qr{t.lib.Real.Package\.pm$});
    my $meta = Moose::Meta::Class->create('Real::Package');
    like($INC{module_notional_filename('Real::Package')}, qr{t.lib.Real.Package\.pm$});
}
like($INC{module_notional_filename('Real::Package')}, qr{t.lib.Real.Package\.pm$});

BEGIN { no_inc_ok('UseMoose') }
{
    package UseMoose;
    use Moose;
}
BEGIN { inc_ok('UseMoose') }

BEGIN { no_inc_ok('UseMooseRole') }
{
    package UseMooseRole;
    use Moose::Role;
}
BEGIN { inc_ok('UseMooseRole') }

BEGIN {
    package My::Custom::Moose;
    use Moose::Exporter;

    Moose::Exporter->setup_import_methods(
        also => ['Moose'],
    );
    $INC{::module_notional_filename(__PACKAGE__)} = __FILE__;
}

BEGIN { no_inc_ok('UseMooseCustom') }
{
    package UseMooseCustom;
    use My::Custom::Moose;
}
BEGIN { inc_ok('UseMooseCustom') }

BEGIN {
    package My::Custom::Moose::Role;
    use Moose::Exporter;

    Moose::Exporter->setup_import_methods(
        also => ['Moose::Role'],
    );
    $INC{::module_notional_filename(__PACKAGE__)} = __FILE__;
}

BEGIN { no_inc_ok('UseMooseCustomRole') }
{
    package UseMooseCustomRole;
    use My::Custom::Moose::Role;
}
BEGIN { inc_ok('UseMooseCustomRole') }

done_testing;