5cb5d078fc0812d29e0d1bfff19b80997b1b1ede
[gitmo/MooseX-Compiler.git] / t / remove-use-moose.t
1 use strict;
2 use warnings;
3
4 use lib 't/lib';
5
6 use Test::MooseX::Compiler qw( save_class );
7 use Test::More 0.88;
8
9 use MooseX::Compiler;
10
11 {
12     my $code = <<'EOF';
13 package Test::Class1;
14
15 use strict;
16 use warnings;
17
18 use Moose;
19
20 sub foo { 42 }
21
22 1;
23 EOF
24
25     save_class( 'Test::Class1', $code );
26
27     my $compiler = MooseX::Compiler->new(
28         class => 'Test::Class1',
29     );
30
31     my $compiled = $compiler->compile_class();
32     like(
33         $compiled,
34         qr/^\#\s*use Moose;\n/m,
35         'use Moose declaration is commented out in compiled code'
36     );
37
38     unlike(
39         $compiled,
40         qr/^use Moose;\n/m,
41         'original use Moose declaration is removed from compiled code'
42     );
43 }
44
45 {
46     my $code = <<'EOF';
47 package Test::Class2;
48
49 use strict;
50 use warnings;
51
52 use Moose 0.1;
53
54 sub foo { 42 }
55
56 1;
57 EOF
58
59     save_class( 'Test::Class1', $code );
60
61     my $compiler = MooseX::Compiler->new(
62         class => 'Test::Class1',
63     );
64
65     my $compiled = $compiler->compile_class();
66     unlike(
67         $compiled,
68         qr/^\#\s*use Moose;\n/m,
69         'use Moose declaration is not commented out in compiled code'
70     );
71
72     like(
73         $compiled,
74         qr/^use\s+Moose\s+0\.1\s+\(\)\s*;\n/m,
75         'original use Moose declaration is preserved, but () is added to prevent importing'
76     );
77 }
78
79 done_testing();