Added code to fixup line numbers, inline constructor, and load modules that construct...
[gitmo/MooseX-Compiler.git] / t / fixup-line-numbers.t
diff --git a/t/fixup-line-numbers.t b/t/fixup-line-numbers.t
new file mode 100644 (file)
index 0000000..16deefd
--- /dev/null
@@ -0,0 +1,65 @@
+use strict;
+use warnings;
+
+use lib 't/lib';
+
+use Test::Requires {
+    'IPC::Run3' => 0,
+};
+
+use Test::MooseX::Compiler qw( save_class );
+use Test::More 0.88;
+
+use IPC::Run3 qw( run3 );
+
+use MooseX::Compiler;
+
+{
+    my $code = <<'EOF';
+package Test::Class1;
+
+use strict;
+use warnings;
+
+use Moose;
+
+# should be line 9 below
+sub line { return __LINE__ }
+
+1;
+EOF
+
+    my $class = 'Test::Class1';
+    save_class( $class, $code );
+
+    my $compiler = MooseX::Compiler->new(
+        class => $class,
+    );
+
+    my $compiled = $compiler->compile_class();
+
+    my $output;
+    my $error;
+
+    # We need to compile the code in a fresh process to see if the line
+    # numbers are correct.
+    run3(
+        [
+            $^X, '-e',
+            $compiled . "\npackage main;\nprint Test::Class1->line();"
+        ],
+        \undef,
+        \$output,
+        \$error,
+    );
+
+    die $error if defined $error && length $error;
+
+    is(
+        $output,
+        9,
+        'compilation does not break line numbers'
+    );
+}
+
+done_testing();