in plugins/teststeps/cmd/cmd.go [160:198]
func (ts *Cmd) validateAndPopulate(params test.TestStepParameters) error {
param := params.GetOne("executable")
if param.IsEmpty() {
return errors.New("invalid or missing 'executable' parameter, must be exactly one string")
}
ex := param.String()
if filepath.IsAbs(ex) {
ts.executable = ex
} else {
p, err := exec.LookPath(ex)
if err != nil {
return fmt.Errorf("cannot find '%s' executable in PATH: %v", ex, err)
}
// the call could still fail later if the file is removed, is not
// executable, etc, but at least we do basic checks here.
ts.executable = p
}
ts.args = params.Get("args")
ts.dir = params.GetOne("dir")
// validate emit_stdout
emitStdoutParam := params.GetOne("emit_stdout")
if !emitStdoutParam.IsEmpty() {
v, err := strconv.ParseBool(emitStdoutParam.String())
if err != nil {
return fmt.Errorf("invalid non-boolean `emit_stdout` parameter: %v", err)
}
ts.emitStdout = v
}
// validate emit_stderr
emitStderrParam := params.GetOne("emit_stderr")
if !emitStderrParam.IsEmpty() {
v, err := strconv.ParseBool(emitStderrParam.String())
if err != nil {
return fmt.Errorf("invalid non-boolean `emit_stderr` parameter: %v", err)
}
ts.emitStderr = v
}
return nil
}