summaryrefslogtreecommitdiffstats
path: root/t/11-line-differences.t
diff options
context:
space:
mode:
Diffstat (limited to 't/11-line-differences.t')
-rw-r--r--t/11-line-differences.t61
1 files changed, 61 insertions, 0 deletions
diff --git a/t/11-line-differences.t b/t/11-line-differences.t
new file mode 100644
index 0000000..4dd3625
--- /dev/null
+++ b/t/11-line-differences.t
@@ -0,0 +1,61 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More;
+use Test::Requires 'Test::Output';
+
+use Eval::Closure;
+
+{
+ my $code = eval_closure(
+ source => 'sub { warn "foo" }',
+ description => 'bar',
+ );
+ { local $TODO = $] < 5.010 ? "line numbers from #line are slightly different" : undef;
+ stderr_is { $code->() } "foo at bar line 1.\n", "got the right line";
+ }
+}
+
+{
+ my $code = eval_closure(
+ source => <<'SOURCE',
+ sub {
+
+ warn "foo";
+
+ }
+SOURCE
+ description => 'bar',
+ );
+ { local $TODO = $] < 5.010 ? "line numbers from #line are slightly different" : undef;
+ stderr_is { $code->() } "foo at bar line 1.\n", "got the right line";
+ }
+}
+
+{
+ my $code = eval_closure(
+ source => <<'SOURCE',
+
+ sub {
+ warn "foo";
+ }
+SOURCE
+ description => 'bar',
+ );
+ { local $TODO = $] < 5.010 ? "line numbers from #line are slightly different" : undef;
+ stderr_is { $code->() } "foo at bar line 1.\n", "got the right line";
+ }
+}
+
+{
+ my $code = eval_closure(
+ source => '$sub',
+ environment => { '$sub' => \sub { warn "foo" } },
+ description => 'bar',
+ );
+ { local $TODO = $] < 5.010 ? "#line can't adjust line numbers inside non-evaled subs" : undef;
+ stderr_is { $code->() } "foo at bar line 1.\n", "got the right line";
+ }
+}
+
+done_testing;