File Coverage

blib/lib/JMAP/Tester/Logger.pm
Criterion Covered Total %
statement 22 22 100.0
branch n/a
condition n/a
subroutine 7 7 100.0
pod 0 1 0.0
total 29 30 96.6


line stmt bran cond sub pod time code
1 6     6   407322 use v5.20.0;
  6         28  
2             package JMAP::Tester::Logger 0.109;
3              
4 6     6   560 use Moo::Role;
  6         18106  
  6         44  
5              
6 6     6   4312 use experimental 'signatures';
  6         3320  
  6         46  
7              
8 6     6   4103 use JMAP::Tester::LogWriter;
  6         25  
  6         317  
9 6     6   1831 use Params::Util qw(_CODELIKE _HANDLE _SCALAR0);
  6         13637  
  6         724  
10              
11 6     6   45 use namespace::clean;
  6         23  
  6         48  
12              
13             has writer => (
14             is => 'ro',
15             isa => sub {
16             die "no writer provided" unless $_[0];
17             die "writer provided can't be called as code" unless $_[0]->does('JMAP::Tester::LogWriter');
18             },
19             coerce => sub {
20             my $value = $_[0];
21             return JMAP::Tester::LogWriter::Code->new({ code => $value })
22             if _CODELIKE($value);
23              
24             return JMAP::Tester::LogWriter::Handle->new({ handle => $value })
25             if _HANDLE($value);
26              
27             return JMAP::Tester::LogWriter::Code->new({ code => sub{} })
28             if _SCALAR0($value) && ! defined $$value;
29              
30             if (defined $value && ! ref $value && length $value) {
31             if ($value =~ /\A-([1-9][0-9]*)\z/) {
32             open my $handle, '>&', "$1"
33             or die "can't dup fd $1 for logger output: $!";
34             $handle->autoflush(1);
35             return JMAP::Tester::LogWriter::Handle->new({ handle => $handle });
36             }
37              
38             return JMAP::Tester::LogWriter::Filename->new({
39             filename_template => $value
40             });
41             }
42              
43             return $value;
44             },
45             required => 1,
46             );
47              
48 6     6 0 253 sub write ($self, $string) {
  6         8  
  6         6  
  6         5  
49 6         18 $self->writer->write( $string );
50             }
51              
52             requires 'log_jmap_request';
53             requires 'log_jmap_response';
54              
55             requires 'log_upload_request';
56             requires 'log_upload_response';
57              
58             requires 'log_download_request';
59             requires 'log_download_response';
60              
61             1;
62              
63             __END__