File Coverage

blib/lib/Alt/Assert.pm
Criterion Covered Total %
statement 26 26 100.0
branch 6 6 100.0
condition 1 3 33.3
subroutine 5 5 100.0
pod 0 1 0.0
total 38 41 92.6


line stmt bran cond sub pod time code
1 2     2   1435 use strict; use warnings;
  2     2   4  
  2         63  
  2         8  
  2         2  
  2         496  
2             package Alt::Assert;
3              
4             sub assert {
5 4     4 0 5 my $self = shift;
6 4   33     9 my $mod = shift || caller();
7              
8 4 100       86 my ($orig, $phrase) = $mod =~ /^Alt::(\w+(?:::\w+)*)::(\w+)$/
9             or die "Bad syntax in alternate module name '$mod', should be ".
10             "Alt::::\n";
11 3         5 my $origf = $orig;
12 3         5 $origf =~ s!::!/!g; $origf .= ".pm";
  3         3  
13 3         719 require $origf; # if user hasn't loaded the module, load it for them
14              
15 3 100       137 defined(&{"$orig\::ALT"})
  3         52  
16             or die "$orig does not define ALT, might not be from the same ".
17             "distribution as $mod\n";
18              
19 2         7 my $alt = $orig->ALT;
20 2 100       38 $alt eq $phrase
21             or die "$orig has ALT set to '$alt' instead of '$phrase', ".
22             "might not be from the same distribution as $mod\n";
23             }
24              
25             sub import {
26 4     4   3517 my $self = shift;
27 4         10 my $caller = caller();
28              
29             # export assert()
30             {
31 2     2   10 no strict;
  2         2  
  2         122  
  4         109  
32 4         6 *{"$caller\::assert"} = \&assert;
  4         19  
33             }
34 4         7 $self->assert($caller);
35             }
36              
37             1;