File: 05-stacktrace.t

package info (click to toggle)
libparse-errorstring-perl-perl 0.27-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 220 kB
  • sloc: perl: 2,059; makefile: 2
file content (40 lines) | stat: -rw-r--r-- 1,150 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/perl

use strict;
use warnings;

use Test::More tests => 8;
use Parse::ErrorString::Perl;


# use strict;
# use warnings;
# use diagnostics '-traceonly';
#
# sub dying { my $illegal = 10 / 0;}
# sub calling {dying()}
#
# calling();


my $msg = <<'ENDofMSG';
Uncaught exception from user code:
	Illegal division by zero at error.pl line 5.
 at error.pl line 5
	main::dying() called at error.pl line 6
	main::calling() called at error.pl line 8
ENDofMSG

my $parser = Parse::ErrorString::Perl->new;
my @errors = $parser->parse_string($msg);
is( scalar(@errors), 1, 'message results' );
my @stacktrace = $errors[0]->stack;
is( scalar(@stacktrace),          2,                 'stacktrace results' );
is( $stacktrace[0]->sub,          'main::dying()',   'stack 1 sub' );
is( $stacktrace[0]->file_msgpath, 'error.pl',        'stack 1 file_msgpath' );
is( $stacktrace[0]->line,         6,                 'stack 1 line' );
is( $stacktrace[1]->sub,          'main::calling()', 'stack 2 sub' );
is( $stacktrace[1]->file_msgpath, 'error.pl',        'stack 2 file_msgpath' );
is( $stacktrace[1]->line,         8,                 'stack 2 line' );