Condition Coverage

blib/lib/Net/Respite/Base.pm
Criterion Covered Total %
condition 66 176 37.5


and 3 conditions

line !l l&&!r l&&r condition
25 0 0 0 ref $$c{"${name}_service"} && exists $$c{"${name}_service"}{$key}
0 0 0 ref $c->{$name} && exists $c->{$name}{$key}
39 0 0 0 $utf8 && (!ref($utf8) || $utf8->{$meth})
44 0 0 0 $trp and $trp ne "json"
64 0 0 0 ref $resp eq 'HASH' && exists $resp->{'_utf8_encoded'}
99 0 0 0 ref $v ? _encode_utf8_recurse($v) : $v and utf8::is_utf8($v)
101 0 0 0 ref $v ? _encode_utf8_recurse($v) : $v and utf8::is_utf8($v)
110 0 0 0 ref $v ? _decode_utf8_recurse($v, $seen) : $v and not utf8::is_utf8($v)
112 0 0 0 ref $v ? _decode_utf8_recurse($v, $seen) : $v and not utf8::is_utf8($v)
125 3 0 0 my $ra = $meta->{'requires_admin'} and eval { do { $self->api_meta->{'enforce_requires_admin'} } } || do { my $e = $@; die $e if $e and !ref($e) || $e->{'type'} ne 'no_meta'; 0 }
145 0 0 0 $_[0]{'base'} && $_[0]{'base'}->is_server
178 8 0 0 $code = $self->can($meth) and $code ne \&{'Net::Respite::Base' . "::$meth";}
215 0 0 21 $qr and not ref $qr
221 0 49 0 $qr and not $meth =~ /$qr/
236 19 0 2 $meta->{'allow_nested'} || $opt->{'allow_nested'} and defined &{"${pkg}::api_meta";}
19 0 2 $meta->{'allow_nested'} || $opt->{'allow_nested'} and defined &{"${pkg}::api_meta";} and $pkg->can("find_method")
239 0 18 0 $qr and not $meth =~ /$qr/
244 17 0 4 $meth and $cache->{$meth}
269 3 0 0 $opt->{'pkg_exclude'} and $pkg =~ /$opt->{'pkg_exclude'}/
301 14 0 0 $qr and not $name =~ /$qr/
303 14 0 0 $ENV{'REQUEST_METHOD'} and $meta->{'no_listing'}
335 1 0 0 $args->{'test_auth'} && $self->require_admin

or 2 conditions

line l !l condition
19 0 0 $self->base_class || ref $self || $self || ''
33 0 0 $self->api_meta || {}
40 0 0 $self->{'transport'} || ''
78 0 31 $self->{'_autoload'}{$meth} || 0
107 0 0 shift() || {}
129 1 2 validate($args || {}, $val_hash) || (return 1)
171 40 0 $self->api_meta || {}
173 27 13 $meta->{'_cache'}{ref $self} ||= {%{{} unless $meta->{'methods'};}}
197 15 9 $meta->{$type} || (next)
214 18 3 $opt->{'match'} || 1
225 20 10 $opt->{'dispatch_type'} || $meta->{'dispatch_type'} || 'new'
257 0 0 $INC{$file} || ''
335 0 1 eval { do { $self->api_brand } } || undef

or 3 conditions

line l !l&&r !l&&!r condition
19 0 0 0 $name ||= (my $n = $self->base_class || ref $self || $self || '') =~ /(\w+)$/ ? lc $1 : ""
37 0 0 0 $self->find_method($meth) || throw('Invalid Respite method', {'class', ref $self, 'method', $meth})
46 0 0 0 eval { do { $self->$code($args, $extra) } } || do { my $resp = $@; $resp = eval { do { throw('Trouble dispatching', {'method', $meth, 'msg', $resp}) } } || $@ unless ref $resp and $resp->{'error'}; warn $resp if $trp ne 'cmdline'; $resp }
80 30 1 0 $self->find_method($meth) || throw('Invalid Respite method during AUTOLOAD', {'class', ref $self, 'method', $meth}, 1)
91 9 0 0 $self->{'api_meta'} ||= $ref eq __PACKAGE__ ? throw("No api_meta defined", {"class", $self, "type", "no_meta"}) : {}
120 0 0 3 $sub eq "(eval)" or $sub =~ /::validate_args$/
124 3 0 0 $meta->{'args'} || throw('Missing args in meta information', {'method', $sub}, 1)
125 0 0 0 eval { do { $self->api_meta->{'enforce_requires_admin'} } } || do { my $e = $@; die $e if $e and !ref($e) || $e->{'type'} ne 'no_meta'; 0 }
138 0 0 1 $_[0]->is_local && $ENV{'PROV'} || throw('Missing api_brand', 0, 1)
156 0 0 0 $self->base_class || throw('Could not find a base_class when accessing base from direct source', 0, 1)
189 27 18 9 $meth =~ /__meta$/ or $meth =~ /^__/
18 9 0 $meth =~ /__meta$/ or $meth =~ /^__/ or defined &{"${pkg}::${meth}__meta";}
191 9 45 0 $cache->{$name} ||= "${pkg}::$meth"
198 1 3 0 $cache->{'--load--'}{'lib_dirs'} ||= $self->_load_lib_dir($NS)
203 0 18 0 $opt->{'pkg'} || $opt->{'package'} || do { (my $pkg = $ns) =~ s/(?:_|\b)([a-z])/\u$1/g; $pkg }
206 1 0 0 $opt->{'file'} ||= $file
215 19 0 2 $qr eq '1' || $qr eq '*'
222 10 13 26 $meth =~ /__meta$/ or $meth =~ /^__/
13 10 16 $meth =~ /__meta$/ or $meth =~ /^__/ or defined &{"${pkg}::${meth}__meta";}
224 0 0 33 $opt->{'full_name'} or $name =~ /^\Q$ns\E_/
230 0 1 0 $base->{'base'} || $base
233 6 7 0 $base->{$pkg} ||= do { my $s = $pkg->new({"base", $base, $base->SHARE}); builtin::weaken($s->{'base'}); $s }
234 2 31 0 $cache->{$name} ||= $dt eq "new" ? sub { my $base = shift(); $pkg->new({"base", $base, "called_from_base", 1, $base->SHARE})->$meth(@_); } : ($dt eq "morph" ? sub { my $base = shift(); my $prev = ref $base; local $base->{'base'} = $base->{'base'} || $base; builtin::weaken($base->{'base'}); my $resp; my $ok = eval { do { bless $base, $pkg; $resp = $base->$meth(@_); 1 } }; my $err = $@; bless $base, $prev; die $err unless $ok; return $resp; } : ($dt eq "cache" ? sub { my $base = shift(); ($base->{$pkg} ||= do { my $s = $pkg->new({"base", $base, $base->SHARE}); builtin::weaken($s->{'base'}); $s })->$meth(@_); } : throw("Unknown dispatch_type", {"dispatch_type", $dt}, 1)))
236 2 0 19 $meta->{'allow_nested'} || $opt->{'allow_nested'}
240 0 0 18 $opt->{'full_name'} || $meth =~ /^\Q$ns\E_/
280 3 0 0 ref $_[0] || $_[0]
294 2 0 0 ref $self || $self
302 13 1 0 eval { do { $self->$meth } } || do { (my $err = $@ || '') =~ s[ at /.*][]s; +{'desc', 'Not documented' . ($err ? ": $err" : '')} }