File Coverage

blib/lib/JMAP/Tester/LogWriter.pm
Criterion Covered Total %
statement 27 37 72.9
branch 0 4 0.0
condition n/a
subroutine 10 13 76.9
pod 0 3 0.0
total 37 57 64.9


line stmt bran cond sub pod time code
1 7     7   247326 use v5.14.0;
  7         31  
2             package JMAP::Tester::LogWriter 0.109;
3              
4 7     7   473 use Moo::Role;
  7         14225  
  7         48  
5              
6             requires 'write';
7              
8 7     7   4740 use namespace::clean;
  7         40920  
  7         82  
9              
10             {
11             package JMAP::Tester::LogWriter::Code 0.109;
12              
13 7     7   3497 use Moo;
  7         5867  
  7         88  
14 7     7   5624 use namespace::clean;
  7         27  
  7         37  
15             with 'JMAP::Tester::LogWriter';
16             has code => (is => 'ro', required => 1);
17 6     6 0 16 sub write { $_[0]->code->($_[1]) }
18             }
19              
20             {
21             package JMAP::Tester::LogWriter::Handle 0.109;
22              
23 7     7   4677 use Moo;
  7         23  
  7         41  
24 7     7   3958 use namespace::clean;
  7         16  
  7         45  
25             with 'JMAP::Tester::LogWriter';
26             has handle => (is => 'ro', required => 1);
27 0     0 0   sub write { $_[0]->handle->print($_[1]) }
28             }
29              
30             {
31             package JMAP::Tester::LogWriter::Filename 0.109;
32              
33 7     7   4657 use Moo;
  7         15  
  7         44  
34 7     7   2837 use namespace::clean;
  7         14  
  7         44  
35             with 'JMAP::Tester::LogWriter';
36             has filename_template => (
37             is => 'ro',
38             default => 'jmap-tester-{T}-{PID}.log',
39             );
40              
41             has _handle => (is => 'rw');
42             has _pid => (is => 'rw', init_arg => undef, default => -1);
43              
44 0     0 0   sub write { $_[0]->_ensure_handle->print($_[1]) }
45              
46             sub _ensure_handle {
47 0     0     my ($self) = @_;
48 0 0         return $self->_handle if $self->_pid == $$;
49              
50 0           my $fn = $self->filename_template =~ s/\{T\}/$^T/gr =~ s/\{PID\}/$$/gr;
51 0 0         open my $fh, '>>', $fn or Carp::confess("can't open $fn for writing: $!");
52              
53 0           $fh->autoflush(1);
54              
55 0           $self->_handle($fh);
56 0           $self->_pid($$);
57 0           return $fh;
58             }
59             }
60              
61             1;
62              
63             __END__