15a2ce1a5fd9682a61aa222323660daa97264e32
[gitmo/Eval-Closure.git] / t / description.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More;
5 use Test::Fatal;
6
7 use Eval::Closure;
8
9 my $source = <<'SOURCE';
10 sub {
11     Carp::confess("foo")
12 }
13 SOURCE
14
15 {
16     my $code = eval_closure(
17         source => $source,
18     );
19
20     like(
21         exception { $code->() },
22         qr/^foo at \(eval \d+\) line \d+\n/,
23         "no location info if context isn't passed"
24     );
25 }
26
27 {
28     my $code = eval_closure(
29         source      => $source,
30         description => 'accessor foo (defined at Class.pm line 282)',
31     );
32
33     like(
34         exception { $code->() },
35         qr/^foo at accessor foo \(defined at Class\.pm line 282\) line 2\n/,
36         "description is set"
37     );
38 }
39
40 {
41     my $code = eval_closure(
42         source      => $source,
43         line        => 100,
44         description => 'accessor foo (defined at Class.pm line 282)',
45     );
46
47     like(
48         exception { $code->() },
49         qr/^foo at accessor foo \(defined at Class\.pm line 282\) line 101\n/,
50         "description is set"
51     );
52 }
53 done_testing;