func()

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
}