File Coverage

blib/lib/JMAP/Tester/LogWriter.pm
Criterion Covered Total %
statement 37 37 100.0
branch 2 4 50.0
condition n/a
subroutine 13 13 100.0
pod 0 3 0.0
total 52 57 91.2


line stmt bran cond sub pod time code
1 3     3   23316 use v5.14.0;
  3         7  
2             package JMAP::Tester::LogWriter 0.110;
3              
4 3     3   382 use Moo::Role;
  3         11783  
  3         14  
5              
6             requires 'write';
7              
8 3     3   1473 use namespace::clean;
  3         12953  
  3         35  
9              
10             {
11             package JMAP::Tester::LogWriter::Code 0.110;
12              
13 3     3   1127 use Moo;
  3         2095  
  3         12  
14 3     3   1807 use namespace::clean;
  3         15  
  3         13  
15             with 'JMAP::Tester::LogWriter';
16             has code => (is => 'ro', required => 1);
17 16     16 0 327584 sub write { $_[0]->code->($_[1]) }
18             }
19              
20             {
21             package JMAP::Tester::LogWriter::Handle 0.110;
22              
23 3     3   1299 use Moo;
  3         5  
  3         10  
24 3     3   819 use namespace::clean;
  3         4  
  3         8  
25             with 'JMAP::Tester::LogWriter';
26             has handle => (is => 'ro', required => 1);
27 3     3 0 8349 sub write { $_[0]->handle->print($_[1]) }
28             }
29              
30             {
31             package JMAP::Tester::LogWriter::Filename 0.110;
32              
33 3     3   1349 use Moo;
  3         5  
  3         19  
34 3     3   829 use namespace::clean;
  3         3  
  3         10  
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 1     1 0 2485 sub write { $_[0]->_ensure_handle->print($_[1]) }
45              
46             sub _ensure_handle {
47 1     1   7 my ($self) = @_;
48 1 50       10 return $self->_handle if $self->_pid == $$;
49              
50 1         15 my $fn = $self->filename_template =~ s/\{T\}/$^T/gr =~ s/\{PID\}/$$/gr;
51 1 50       130 open my $fh, '>>', $fn or Carp::confess("can't open $fn for writing: $!");
52              
53 1         13 $fh->autoflush(1);
54              
55 1         48 $self->_handle($fh);
56 1         6 $self->_pid($$);
57 1         4 return $fh;
58             }
59             }
60              
61             1;
62              
63             __END__