Commit | Line | Data |
9e60f0d8 |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use lib 't/lib'; |
5 | |
a44ebace |
6 | use Test::Requires { |
7 | 'MooseX::StrictConstructor' => '0.01', |
8 | }; |
9 | |
9e60f0d8 |
10 | use Test::MooseX::Compiler qw( save_class ); |
11 | use Test::More 0.88; |
12 | |
13 | use MooseX::Compiler; |
14 | |
15 | { |
16 | my $code = <<'EOF'; |
17 | package Test::Class1; |
18 | |
19 | use strict; |
20 | use warnings; |
21 | |
22 | use Moose; |
23 | |
24 | sub foo { 42 } |
25 | |
26 | 1; |
27 | EOF |
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'; |
52 | package Test::Class2; |
53 | |
54 | use strict; |
55 | use warnings; |
56 | |
57 | use Moose 0.1; |
58 | |
59 | sub foo { 42 } |
60 | |
61 | 1; |
62 | EOF |
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'; |
87 | package Test::Class3; |
88 | |
89 | use strict; |
90 | use warnings; |
91 | |
92 | use Moose; |
93 | use MooseX::StrictConstructor; |
94 | |
95 | sub foo { 42 } |
96 | |
97 | 1; |
98 | EOF |
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'; |
135 | package Test::Class4; |
136 | |
137 | use strict; |
138 | use warnings; |
139 | |
140 | use Moose; |
141 | use MooseX::StrictConstructor 0.01; |
142 | |
143 | sub foo { 42 } |
144 | |
145 | 1; |
146 | EOF |
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 |
181 | done_testing(); |