File Coverage

blib/lib/Time/Str/Util.pm
Criterion Covered Total %
statement 28 28 100.0
branch 4 8 50.0
condition 3 9 33.3
subroutine 7 7 100.0
pod 1 1 100.0
total 43 53 81.1


line stmt bran cond sub pod time code
1             package Time::Str::Util;
2 3     3   201493 use strict;
  3         6  
  3         121  
3 3     3   17 use warnings;
  3         7  
  3         120  
4 3     3   30 use v5.10.1;
  3         9  
5              
6 3     3   11 use Carp qw[croak];
  3         4  
  3         199  
7 3     3   23 use Exporter qw[import];
  3         5  
  3         527  
8              
9             BEGIN {
10 3     3   11 our $VERSION = '0.87';
11 3         7 our @EXPORT_OK = qw[ lower_bound
12             range_bounds
13             upper_bound ];
14 3         8 our %EXPORT_TAGS = ( all => \@EXPORT_OK );
15 3         6 our @CARP_NOT = qw[Time::Str::PP::Util];
16              
17 3         901 require Time::Str;
18 3         21 unless (Time::Str::IMPLEMENTATION() eq 'XS') {
19             require Time::Str::PP; Time::Str::PP::Util->import(@EXPORT_OK);
20             }
21            
22 1         147 push @EXPORT_OK, qw[ find_tzdb_directory ];
23             }
24              
25             {
26             # Directories to probe, in order of preference.
27             # Covers Linux, macOS, FreeBSD, Solaris, and Cygwin.
28             my @TZDB_CANDIDATES = qw(
29             /usr/share/zoneinfo
30             /usr/lib/zoneinfo
31             /usr/share/lib/zoneinfo
32             /etc/zoneinfo
33             /usr/share/zoneinfo.default
34             );
35              
36             sub find_tzdb_directory {
37 2 50   2 1 227431 @_ == 0 or croak q/Usage: find_tzdb_directory()/;
38              
39 4 50 33     474 return $ENV{TZDIR} if defined $ENV{TZDIR} && -d $ENV{TZDIR};
40              
41 2         6 foreach my $dir (@TZDB_CANDIDATES) {
42 10 50 33     310 return $dir if -d $dir && -f "$dir/UTC";
43             }
44              
45             # macOS: /var/db/timezone/zoneinfo is a symlink to the active version
46 2         9 my $macos = '/var/db/timezone/zoneinfo';
47 2 50 33     128 return $macos if -d $macos && -f "$macos/UTC";
48              
49 2         10 return undef;
50             }
51             }
52              
53             1;