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 | |
f56affb6 |
10 | use Test::MooseX::Compiler qw( save_fragment ); |
9e60f0d8 |
11 | use Test::More 0.88; |
12 | |
13 | use MooseX::Compiler; |
14 | |
15 | { |
16 | my $code = <<'EOF'; |
9e60f0d8 |
17 | use Moose; |
18 | |
19 | sub foo { 42 } |
9e60f0d8 |
20 | EOF |
21 | |
6029ad7b |
22 | my $class = 'Test::Class1'; |
f56affb6 |
23 | save_fragment( $class, $code ); |
9e60f0d8 |
24 | |
25 | my $compiler = MooseX::Compiler->new( |
6029ad7b |
26 | class => $class, |
9e60f0d8 |
27 | ); |
28 | |
29 | my $compiled = $compiler->compile_class(); |
a44ebace |
30 | |
9e60f0d8 |
31 | like( |
32 | $compiled, |
33 | qr/^\#\s*use Moose;\n/m, |
34 | 'use Moose declaration is commented out in compiled code' |
35 | ); |
36 | |
37 | unlike( |
38 | $compiled, |
39 | qr/^use Moose;\n/m, |
40 | 'original use Moose declaration is removed from compiled code' |
41 | ); |
42 | } |
43 | |
44 | { |
45 | my $code = <<'EOF'; |
9e60f0d8 |
46 | use Moose 0.1; |
47 | |
48 | sub foo { 42 } |
49 | |
50 | 1; |
51 | EOF |
52 | |
6029ad7b |
53 | my $class = 'Test::Class2'; |
f56affb6 |
54 | save_fragment( $class, $code ); |
9e60f0d8 |
55 | |
56 | my $compiler = MooseX::Compiler->new( |
6029ad7b |
57 | class => $class, |
9e60f0d8 |
58 | ); |
59 | |
60 | my $compiled = $compiler->compile_class(); |
a44ebace |
61 | |
9e60f0d8 |
62 | unlike( |
63 | $compiled, |
64 | qr/^\#\s*use Moose;\n/m, |
65 | 'use Moose declaration is not commented out in compiled code' |
66 | ); |
67 | |
68 | like( |
69 | $compiled, |
70 | qr/^use\s+Moose\s+0\.1\s+\(\)\s*;\n/m, |
71 | 'original use Moose declaration is preserved, but () is added to prevent importing' |
72 | ); |
73 | } |
74 | |
a44ebace |
75 | { |
76 | my $code = <<'EOF'; |
a44ebace |
77 | use Moose; |
78 | use MooseX::StrictConstructor; |
79 | |
80 | sub foo { 42 } |
a44ebace |
81 | EOF |
82 | |
6029ad7b |
83 | my $class = 'Test::Class3'; |
f56affb6 |
84 | save_fragment( $class, $code ); |
a44ebace |
85 | |
86 | my $compiler = MooseX::Compiler->new( |
6029ad7b |
87 | class => $class, |
a44ebace |
88 | ); |
89 | |
90 | my $compiled = $compiler->compile_class(); |
91 | |
92 | like( |
93 | $compiled, |
94 | qr/^\#\s*use Moose;\n/m, |
95 | 'use Moose declaration is commented out in compiled code' |
96 | ); |
97 | |
98 | like( |
99 | $compiled, |
100 | qr/^\#\s*use MooseX::StrictConstructor;\n/m, |
101 | 'use MooseX::StrictConstructor declaration is commented out in compiled code' |
102 | ); |
103 | |
104 | unlike( |
105 | $compiled, |
106 | qr/^use Moose;\n/m, |
107 | 'original use Moose declaration is removed from compiled code' |
108 | ); |
109 | |
110 | unlike( |
111 | $compiled, |
112 | qr/^use MooseX::StrictConstructor;\n/m, |
113 | 'original use MooseX::StrictConstructor declaration is removed from compiled code' |
114 | ); |
115 | } |
116 | |
117 | { |
118 | my $code = <<'EOF'; |
a44ebace |
119 | use Moose; |
120 | use MooseX::StrictConstructor 0.01; |
121 | |
122 | sub foo { 42 } |
a44ebace |
123 | EOF |
124 | |
6029ad7b |
125 | my $class = 'Test::Class4'; |
f56affb6 |
126 | save_fragment( $class, $code ); |
a44ebace |
127 | |
128 | my $compiler = MooseX::Compiler->new( |
6029ad7b |
129 | class => $class, |
a44ebace |
130 | ); |
131 | |
132 | my $compiled = $compiler->compile_class(); |
133 | |
134 | like( |
135 | $compiled, |
136 | qr/^\#\s*use Moose;\n/m, |
137 | 'use Moose declaration is commented out in compiled code' |
138 | ); |
139 | |
140 | unlike( |
141 | $compiled, |
142 | qr/^use Moose;\n/m, |
143 | 'original use Moose declaration is removed from compiled code' |
144 | ); |
145 | |
146 | unlike( |
147 | $compiled, |
148 | qr/^\#\s*use MooseX::StrictConstructor;\n/m, |
149 | 'use MooseX::StrictConstructor declaration is not commented out in compiled code' |
150 | ); |
151 | |
152 | like( |
153 | $compiled, |
154 | qr/^use\s+MooseX::StrictConstructor\s+0\.01\s+\(\)\s*;\n/m, |
155 | 'original use MooseX::StrictConstructor declaration is preserved, but () is added to prevent importing' |
156 | ); |
157 | } |
158 | |
9e60f0d8 |
159 | done_testing(); |