Commit | Line | Data |
f56affb6 |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use lib 't/lib'; |
5 | |
6 | use Test::Requires { |
7 | 'IPC::Run3' => 0, |
8 | }; |
9 | |
10 | use Test::MooseX::Compiler qw( save_class ); |
11 | use Test::More 0.88; |
12 | |
13 | use IPC::Run3 qw( run3 ); |
14 | |
15 | use MooseX::Compiler; |
16 | |
17 | { |
18 | my $code = <<'EOF'; |
19 | package Test::Class1; |
20 | |
21 | use strict; |
22 | use warnings; |
23 | |
24 | use Moose; |
25 | |
26 | # should be line 9 below |
27 | sub line { return __LINE__ } |
28 | |
29 | 1; |
30 | EOF |
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 | |
65 | done_testing(); |