More tests for handling of use Moose and MX modules
[gitmo/MooseX-Compiler.git] / t / remove-use-moose.t
CommitLineData
9e60f0d8 1use strict;
2use warnings;
3
4use lib 't/lib';
5
a44ebace 6use Test::Requires {
7 'MooseX::StrictConstructor' => '0.01',
8};
9
9e60f0d8 10use Test::MooseX::Compiler qw( save_class );
11use Test::More 0.88;
12
13use MooseX::Compiler;
14
15{
16 my $code = <<'EOF';
17package Test::Class1;
18
19use strict;
20use warnings;
21
22use Moose;
23
24sub foo { 42 }
25
261;
27EOF
28
29 save_class( 'Test::Class1', $code );
30
31 my $compiler = MooseX::Compiler->new(
32 class => 'Test::Class1',
33 );
34
35 my $compiled = $compiler->compile_class();
a44ebace 36
9e60f0d8 37 like(
38 $compiled,
39 qr/^\#\s*use Moose;\n/m,
40 'use Moose declaration is commented out in compiled code'
41 );
42
43 unlike(
44 $compiled,
45 qr/^use Moose;\n/m,
46 'original use Moose declaration is removed from compiled code'
47 );
48}
49
50{
51 my $code = <<'EOF';
52package Test::Class2;
53
54use strict;
55use warnings;
56
57use Moose 0.1;
58
59sub foo { 42 }
60
611;
62EOF
63
64 save_class( 'Test::Class1', $code );
65
66 my $compiler = MooseX::Compiler->new(
67 class => 'Test::Class1',
68 );
69
70 my $compiled = $compiler->compile_class();
a44ebace 71
9e60f0d8 72 unlike(
73 $compiled,
74 qr/^\#\s*use Moose;\n/m,
75 'use Moose declaration is not commented out in compiled code'
76 );
77
78 like(
79 $compiled,
80 qr/^use\s+Moose\s+0\.1\s+\(\)\s*;\n/m,
81 'original use Moose declaration is preserved, but () is added to prevent importing'
82 );
83}
84
a44ebace 85{
86 my $code = <<'EOF';
87package Test::Class3;
88
89use strict;
90use warnings;
91
92use Moose;
93use MooseX::StrictConstructor;
94
95sub foo { 42 }
96
971;
98EOF
99
100 save_class( 'Test::Class1', $code );
101
102 my $compiler = MooseX::Compiler->new(
103 class => 'Test::Class1',
104 );
105
106 my $compiled = $compiler->compile_class();
107
108 like(
109 $compiled,
110 qr/^\#\s*use Moose;\n/m,
111 'use Moose declaration is commented out in compiled code'
112 );
113
114 like(
115 $compiled,
116 qr/^\#\s*use MooseX::StrictConstructor;\n/m,
117 'use MooseX::StrictConstructor declaration is commented out in compiled code'
118 );
119
120 unlike(
121 $compiled,
122 qr/^use Moose;\n/m,
123 'original use Moose declaration is removed from compiled code'
124 );
125
126 unlike(
127 $compiled,
128 qr/^use MooseX::StrictConstructor;\n/m,
129 'original use MooseX::StrictConstructor declaration is removed from compiled code'
130 );
131}
132
133{
134 my $code = <<'EOF';
135package Test::Class4;
136
137use strict;
138use warnings;
139
140use Moose;
141use MooseX::StrictConstructor 0.01;
142
143sub foo { 42 }
144
1451;
146EOF
147
148 save_class( 'Test::Class1', $code );
149
150 my $compiler = MooseX::Compiler->new(
151 class => 'Test::Class1',
152 );
153
154 my $compiled = $compiler->compile_class();
155
156 like(
157 $compiled,
158 qr/^\#\s*use Moose;\n/m,
159 'use Moose declaration is commented out in compiled code'
160 );
161
162 unlike(
163 $compiled,
164 qr/^use Moose;\n/m,
165 'original use Moose declaration is removed from compiled code'
166 );
167
168 unlike(
169 $compiled,
170 qr/^\#\s*use MooseX::StrictConstructor;\n/m,
171 'use MooseX::StrictConstructor declaration is not commented out in compiled code'
172 );
173
174 like(
175 $compiled,
176 qr/^use\s+MooseX::StrictConstructor\s+0\.01\s+\(\)\s*;\n/m,
177 'original use MooseX::StrictConstructor declaration is preserved, but () is added to prevent importing'
178 );
179}
180
9e60f0d8 181done_testing();