diff --git a/gradation.go b/gradation.go index 4acf203..89ed9f6 100644 --- a/gradation.go +++ b/gradation.go @@ -74,18 +74,27 @@ func (r *Repository) fetchRepoTests(build_number int, steps map[string]float64) continue } + if g, ok := steps[step.Name]; ok { + log.Printf("Step %q (%d) in status %q", step.Name, step.Number, step.Status) + // Give the point if it succeed + if step.Status == "success" { + grade += g + } + continue + } + logs, err := client.Logs(tmp[0], tmp[1], build_number, stage.Number, step.Number) if err != nil { log.Printf("Unable to retrieve build logs %s/%s/%d/%d/%d: %s", tmp[0], tmp[1], build_number, stage.Number, step.Number, err.Error()) continue } - if len(logs) < 1 { + if len(logs) < 2 { continue } line := logs[len(logs)-1] - if strings.HasPrefix(line.Message, "grade:") { + if strings.HasPrefix(logs[len(logs)-2].Message, "+ echo grade:") && strings.HasPrefix(line.Message, "grade:") { g, err := strconv.ParseFloat(strings.TrimSpace(strings.TrimPrefix(line.Message, "grade:")), 64) if err == nil { grade += g