in runner/main.go [130:176]
func doOneAction(index int, action *specs.Action, status *testStatus, results []testResult) {
result := testResult{}
if len(action.Name) <= 0 {
glog.Fatalf("All actions must have names")
}
result.Name = fmt.Sprintf("%3d: %s", index, action.Name)
glog.Infof(" > %s", result.Name)
recordResult := func(r *testResult) {
results[index] = *r
if r.Passed {
glog.Infof(" %s", r.Message)
} else {
glog.Errorf(" %s", r.Message)
}
}
defer recordResult(&result)
if action.Condition != nil {
ok, msg := conditions.Evaluate(action.Condition, status)
if !ok {
result.Skip(msg)
return
}
}
if action.HttpTest != nil {
msg := tests.RunHttpTest(action.HttpTest, &http.Client{})
if len(msg) > 0 {
result.Fail("HTTP test failed", msg)
return
}
} else if action.Gcp != nil {
msg := gcp.RunAction(action.Gcp)
if len(msg) > 0 {
result.Fail("GCP action failed", msg)
return
}
} else if action.BashTest != nil {
msg := tests.RunBashTest(action.BashTest, &tests.RealExecutor{})
if len(msg) > 0 {
result.Fail("Bash test failed", msg)
return
}
}
result.Pass()
}