File Coverage

blib/lib/Devel/Probe.pm
Criterion Covered Total %
statement 37 37 100.0
branch 11 14 78.5
condition 4 6 66.6
subroutine 5 5 100.0
pod 0 1 0.0
total 57 63 90.4


line stmt bran cond sub pod time code
1             package Devel::Probe;
2 4     4   298443 use strict;
  4         43  
  4         120  
3 4     4   21 use warnings;
  4         7  
  4         105  
4              
5 4     4   20 use XSLoader;
  4         8  
  4         1435  
6              
7             our $VERSION = '0.000004';
8             XSLoader::load( 'Devel::Probe', $VERSION );
9              
10             sub import {
11 4     4   30 my ($class) = @_;
12 4         5040 Devel::Probe::install();
13             }
14              
15             my @probe_type_names = (
16             'none',
17             'once',
18             'permanent',
19             );
20             my %probe_type_name_to_type = map { $probe_type_names[$_] => $_ }
21             (0..scalar(@probe_type_names)-1);
22              
23             sub config {
24 1     1 0 2261 my ($config) = @_;
25              
26 1         6 Devel::Probe::disable();
27 1 50       3 return unless $config;
28              
29 1         3 foreach my $action (@{ $config->{actions} }) {
  1         4  
30 7 100       16 if ($action->{action} eq 'enable') {
31 1         4 Devel::Probe::enable();
32 1         5 next;
33             }
34 6 100       14 if ($action->{action} eq 'disable') {
35 1         3 Devel::Probe::disable();
36 1         2 next;
37             }
38 5 100       11 if ($action->{action} eq 'dump') {
39 1         78 Devel::Probe::dump();
40 1         5 next;
41             }
42 4 100       8 if ($action->{action} eq 'clear') {
43 1         7 Devel::Probe::clear();
44 1         1 next;
45             }
46 3 50       8 if ($action->{action} eq 'define') {
47 3         6 my $file = $action->{file};
48 3 50       8 next unless $file;
49              
50 3   100     18 my $type_name = $action->{type} // 'once';
51 3   50     9 my $type = $probe_type_name_to_type{$type_name} // 1;
52 3   50     5 foreach my $line (@{ $action->{lines} // [] }) {
  3         17  
53 3         27 Devel::Probe::add_probe($file, $line, $type);
54             }
55 3         9 next;
56             }
57             }
58             }
59              
60             1;
61             __END__