Simplify test code a bit
[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';
9e60f0d8 17use Moose;
18
19sub foo { 42 }
9e60f0d8 20EOF
21
6029ad7b 22 my $class = 'Test::Class1';
23 save_class( $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 46use Moose 0.1;
47
48sub foo { 42 }
49
501;
51EOF
52
6029ad7b 53 my $class = 'Test::Class2';
54 save_class( $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 77use Moose;
78use MooseX::StrictConstructor;
79
80sub foo { 42 }
a44ebace 81EOF
82
6029ad7b 83 my $class = 'Test::Class3';
84 save_class( $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 119use Moose;
120use MooseX::StrictConstructor 0.01;
121
122sub foo { 42 }
a44ebace 123EOF
124
6029ad7b 125 my $class = 'Test::Class4';
126 save_class( $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 159done_testing();