File Coverage

blib/lib/Sentry/Stacktrace/Frame.pm
Criterion Covered Total %
statement 41 41 100.0
branch n/a
condition 2 3 66.6
subroutine 10 10 100.0
pod 0 2 0.0
total 53 56 94.6


line stmt bran cond sub pod time code
1             package Sentry::Stacktrace::Frame;
2 6     6   265585 use Mojo::Base -base, -signatures;
  6         32  
  6         45  
3              
4 6     6   1914 use Config qw(%Config);
  6         17  
  6         320  
5 6     6   45 use Mojo::File;
  6         25  
  6         265  
6 6     6   29 use Mojo::Home;
  6         10  
  6         260  
7 6     6   1429 use Sentry::SourceFileRegistry;
  6         15  
  6         73  
8              
9             has [qw(module filename line subroutine)];
10             has _source_file_registry => sub { Sentry::SourceFileRegistry->new };
11             has _home => sub { Mojo::Home->new->detect };
12              
13 8     8   13 sub _is_in_app ($self) {
  8         9  
  8         11  
14             return substr($self->filename, 0, 1) ne '/'
15 8   66     23 || ( index($self->filename, $Config{siteprefix}) == -1
16             && index($self->filename, $self->_home) > -1);
17             }
18              
19 8     8   14 sub _map_file_to_context ($self) {
  8         13  
  8         9  
20 8         21 return $self->_source_file_registry->get_context_lines($self->filename,
21             $self->line);
22             }
23              
24 8     8   299 sub _relative_filename ($self) {
  8         12  
  8         11  
25 8         18 return Mojo::File::path($self->filename)->to_rel($self->_home)->to_string;
26             }
27              
28 8     8 0 345333 sub TO_JSON ($self) {
  8         13  
  8         13  
29             return {
30             in_app => \($self->_is_in_app()),
31             abs_path => $self->filename,
32             file_name => $self->_relative_filename,
33             lineno => $self->line,
34             module => $self->module,
35             function => $self->subroutine,
36 8         26 %{ $self->_map_file_to_context() },
  8         1071  
37             };
38             }
39              
40 2     2 0 2 sub from_caller ($package, $module, $filename, $line, $subroutine, @args) {
  2         4  
  2         3  
  2         2  
  2         3  
  2         2  
  2         3  
  2         2  
41 2         9 return $package->new({
42             module => $module,
43             filename => $filename,
44             line => $line,
45             subroutine => $subroutine
46             });
47             }
48              
49             1;