};
};
- if ($status eq 'pass') {
+ if ($status eq 'pass' or $status eq 'truncated') {
return $single->("($status)", $green);
} elsif ($status eq 'fail' or $status eq 'broken') {
my $failcolour = $status eq 'fail' ? $red : $yellow;
AND f.branch=?
AND j.job=?
AND r.val=?
- AND (j.status='pass' OR j.status='fail')
+ AND (j.status='pass' OR j.status='fail' OR
+ j.status='truncated')
AND f.started IS NOT NULL
AND f.started >= ?
ORDER BY f.started DESC
if {!$found} { error "job not in database $flight $job" }
switch -exact -- $jobinfo(status) {
- pass - fail - broken - blocked {
+ pass - fail - broken - blocked - truncated {
}
queued - preparing - running {
jobdb::job-set-status-unlocked $flight $job broken
$grid{ $j->{job} }[ $gridrow ]= $fi;
}
- if ($j->{status} ne 'pass' and !$foundfail) {
+ if ($j->{status} ne 'pass' and $j->{status} ne 'truncated'
+ and !$foundfail) {
$storefail->({
stepno => '',
status => "$j->{status}",
my $outcome;
if ($outcomes eq 'pass') {
$outcome= 'all pass';
+ } elsif ($outcomes =~ m,^(?:pass/)?truncated$,) {
+ $outcome= 'truncated';
} elsif ($outcomes eq 'fail') {
$outcome= 'ALL FAIL';
- } elsif ($outcomes =~ m,^(?:blocked/)?(?:fail/)?pass$,) {
+ } elsif ($outcomes =~ m,^(?:blocked/)?(?:fail/)?pass(?:/truncated)?$,) {
$outcome= 'FAIL';
} else {
$outcome= "trouble: $outcomes";
}
if (!%{ $r->{Failures} }) {
- bodyprint "All tests in this flight passed";
+ bodyprint "All tests in this flight passed as required";
}
bodyprint "\n";
!defined($duration) ||
defined($cand->{Duration}) && $cand->{Duration} >= $duration;
$previously_failed++ if
- ($cand->{MostRecentStatus} // '') eq 'fail';
+ ($cand->{MostRecentStatus} // '') =~ m/^(?:fail|truncated)/;
$previously_failed_equiv++ if
- ($cand->{EquivMostRecentStatus} // '') eq 'fail';
+ ($cand->{EquivMostRecentStatus} // '') =~ m/^(?:fail|truncated)/;
}
my $duration_rightaway_adjust= 0;