in cmd/checker/checker.go [266:319]
func (gc *gerritChecker) executeCheck(pc *gerrit.PendingChecksInfo) error {
changeID := strconv.Itoa(pc.PatchSet.ChangeNumber)
psID := pc.PatchSet.PatchSetID
for uuid := range pc.PendingChecks {
now := gerrit.Timestamp(time.Now())
checkInput := gerrit.CheckInput{
CheckerUUID: uuid,
State: statusRunning.String(),
Started: &now,
}
log.Printf("change %s, %s set to %q", pc.PatchSet, uuid, statusRunning)
_, err := gc.server.PostCheck(changeID, psID, &checkInput)
if err != nil {
return err
}
var status status
msg := ""
lang, ok := checkerLanguage(uuid)
if !ok {
msg = fmt.Sprintf("uuid %q has unknown language", uuid)
status = statusFail
} else {
msgs, err := gc.checkChange(changeID, psID, lang)
if err == errIrrelevant {
status = statusIrrelevant
} else if err != nil {
status = statusFail
log.Printf("checkChange(%s, %d, %q): %v", changeID, psID, lang, err)
msgs = []string{fmt.Sprintf("tool failure: %v", err)}
} else if len(msgs) == 0 {
status = statusSuccessful
} else {
status = statusFail
}
msg = strings.Join(msgs, ", ")
if len(msg) > 1000 {
msg = msg[:995] + "..."
}
}
log.Printf("status %s for %s on %v", status, uuid, pc.PatchSet)
checkInput = gerrit.CheckInput{
CheckerUUID: uuid,
State: status.String(),
Message: msg,
}
if _, err := gc.server.PostCheck(changeID, psID, &checkInput); err != nil {
return err
}
}
return nil
}