Branch Coverage

blib/lib/App/migrate.pm
Criterion Covered Total %
branch 129 150 86.0


line true false branch
54 0 32 if 2 > @path
58 0 46 unless $$self{'paths'}{$prev}
59 0 46 unless $$self{'paths'}{$prev}{$next}
68 1 68 unless open my $fh, '<:encoding(UTF-8)', $file
69 2 66 unless -f $file
71 0 10 unless close $fh
76 18 15 if ({VERSION => 1}->{$$op{'op'}}) { }
14 1 elsif ({before_upgrade => 1, upgrade => 1}->{$$op{'op'}}) { }
78 11 7 if ($prev_version ne '')
93 2 9 $restore ? :
112 1 13 if $prev_version eq ''
119 2 11 unless @op and {after_downgrade => 1, downgrade => 1}->{$op[0]{'op'}} || {RESTORE => 1}->{$op[0]{'op'}}
122 2 9 if ({RESTORE => 1}->{$$op2{'op'}}) { }
147 0 6 unless $$self{'on'}{$e}
161 16 1 unless ($just_restored)
173 2 30 if ($$step{'type'} eq 'RESTORE')
180 0 12 unless (eval { do { my $just_restored = 0; for (; 2 <= @path; shift @path) { my($prev, $next) = @path; unless ($just_restored) { $self->_do({'type', 'BACKUP', 'version', $prev, 'prev_version', $prev, 'next_version', $next}); } ; $just_restored = 0; $from = $prev; foreach my $step ($self->get_steps([$prev, $next])) { $self->_do($step); if ($$step{'type'} eq 'RESTORE') { $just_restored = 1; } ; } ; } ; 1 } })
182 0 0 if ($from)
183 0 0 unless eval { do { $self->_do({'type', 'RESTORE', 'version', $from, 'prev_version', $from, 'next_version', $path[-1]}, 1); warn "Successfully undone interrupted migration by RESTORE $from\n"; 1 } }
202 21 8 if $data eq ''
206 0 8 unless close $fh
216 35 13 if ($$step{'type'} eq 'BACKUP' or $$step{'type'} eq 'RESTORE' or $$step{'type'} eq 'VERSION') { }
221 7 6 if ($cmd =~ /\A#!/ms)
223 0 7 unless chmod 0700, $cmd
225 0 13 unless system($cmd, @{$$step{'args'};}) == 0
230 0 48 unless (eval { do { if ($$step{'type'} eq 'BACKUP' or $$step{'type'} eq 'RESTORE' or $$step{'type'} eq 'VERSION') { $$self{'on'}{$$step{'type'}}($step); } else { my $cmd = $$step{'cmd'}; if ($cmd =~ /\A#!/ms) { $cmd = _data2arg($cmd); croak("chmod($cmd): $!") unless chmod 0700, $cmd; } ; die "'$$step{'type'}' failed: $cmd @{$$step{'args'};}\n" unless system($cmd, @{$$step{'args'};}) == 0; print "\n"; } ; 1 } })
231 0 0 if $is_fatal
240 40 20 length $near ? :
247 13 12 if $$p{$to}
273 0 0 unless system($ENV{'SHELL'} // '/bin/sh') == 0
283 34 65 if ($$t{'op'} =~ /\ADEFINE[24]?\z/ms) { }
33 32 elsif ({VERSION => 1}->{$$t{'op'}}) { }
4 28 elsif ({RESTORE => 1}->{$$t{'op'}}) { }
23 5 elsif ({before_upgrade => 1, upgrade => 1}->{$$t{'op'}} or {after_downgrade => 1, downgrade => 1}->{$$t{'op'}}) { }
4 1 elsif ($macro{$$t{'op'}}) { }
284 3 31 if 1 != @{$$t{'args'};}
285 5 26 unless $$t{'args'}[0] =~ /\A(?!#)\S+\z/ms
286 3 23 if $$t{'data'} ne ''
288 3 20 if {DEFINE => 1, DEFINE2 => 1, DEFINE4 => 1, RESTORE => 1, VERSION => 1, after_downgrade => 1, before_upgrade => 1, downgrade => 1, upgrade => 1}->{$name}
289 3 17 if $macro{$name}
290 3 14 if ($$t{'op'} eq 'DEFINE') { }
8 6 elsif ($$t{'op'} eq 'DEFINE2') { }
6 0 elsif ($$t{'op'} eq 'DEFINE4') { }
291 1 2 if @tokens < 1
293 1 1 unless {before_upgrade => 1, upgrade => 1}->{$$t1{'op'}} or {after_downgrade => 1, downgrade => 1}->{$$t1{'op'}}
297 1 7 if @tokens < 2
300 1 6 unless {before_upgrade => 1, upgrade => 1}->{$$t1{'op'}}
301 1 5 unless {after_downgrade => 1, downgrade => 1}->{$$t2{'op'}}
305 1 5 if @tokens < 4
310 1 4 if $$t1{'op'} ne 'before_upgrade'
311 1 3 if $$t2{'op'} ne 'upgrade'
312 1 2 if $$t3{'op'} ne 'downgrade'
313 1 1 if $$t4{'op'} ne 'after_downgrade'
318 2 31 if 1 != @{$$t{'args'};}
319 10 21 if not $$t{'args'}[0] =~ /\A\S+\z/ms or $$t{'args'}[0] =~ m([\x00-\x1F\x7F /?*`"'\\])ms
321 1 20 if $$t{'data'} ne ''
329 1 3 if 0 != @{$$t{'args'};}
330 1 2 if $$t{'data'} ne ''
338 4 5 unless @{$$t{'args'};} or $$t{'data'} =~ /\S/ms
343 14 5 @{$$t{'args'};} ? :
351 2 6 $$_{'data'} =~ /\S/ms ? :
1 8 @{$$_{'args'};} ? :
357 1 1 $$t{'data'} =~ /\S/ms ? :
4 2 @{$$t{'args'};} ? :
3 6 @args ? :
361 1 8 unless @args
378 0 8 unless state $bin = (grep {-x "$_/bash";} split(/:/ms, $ENV{'PATH'}, 0))[0]
379 0 8 $script =~ /\A#!/ms ? :
394 13 173 if (/\A#/ms) { }
145 28 elsif (/\A(\S+)\s*(.*)\z/ms) { }
25 3 elsif (/\A(?:\r?\n|[ ][ ].*)\z/ms) { }
403 17 86 if ($param =~ s/\A"(.*)"\z/$1/ms)
408 4 141 if $args =~ /\G(.+)\z/cgms
417 22 3 if (@tokens) { }
1 2 elsif (/\S/ms) { }