Added code to fixup line numbers, inline constructor, and load modules that construct...
[gitmo/MooseX-Compiler.git] / t / fixup-line-numbers.t
CommitLineData
f56affb6 1use strict;
2use warnings;
3
4use lib 't/lib';
5
6use Test::Requires {
7 'IPC::Run3' => 0,
8};
9
10use Test::MooseX::Compiler qw( save_class );
11use Test::More 0.88;
12
13use IPC::Run3 qw( run3 );
14
15use MooseX::Compiler;
16
17{
18 my $code = <<'EOF';
19package Test::Class1;
20
21use strict;
22use warnings;
23
24use Moose;
25
26# should be line 9 below
27sub line { return __LINE__ }
28
291;
30EOF
31
32 my $class = 'Test::Class1';
33 save_class( $class, $code );
34
35 my $compiler = MooseX::Compiler->new(
36 class => $class,
37 );
38
39 my $compiled = $compiler->compile_class();
40
41 my $output;
42 my $error;
43
44 # We need to compile the code in a fresh process to see if the line
45 # numbers are correct.
46 run3(
47 [
48 $^X, '-e',
49 $compiled . "\npackage main;\nprint Test::Class1->line();"
50 ],
51 \undef,
52 \$output,
53 \$error,
54 );
55
56 die $error if defined $error && length $error;
57
58 is(
59 $output,
60 9,
61 'compilation does not break line numbers'
62 );
63}
64
65done_testing();