mirror of https://gitlab.com/gitlab-org/cli.git
feat(pkg/prompt/stubber): allow passing an error as Value
this allows testing error paths in code: Pass an `error` type as the Value, it will be reflect-checked if it is an error, and be returned ```golang as, restoreAsk := prompt.InitAskStubber() defer restoreAsk() as.Stub([]*prompt.QuestionStub{ { Name: "assignee", Value: errors.New("meant to fail"), }, }) ``` Example code that will benefit: ```golang var confirmAnswers []string err := prompt.MultiSelect(&confirmAnswers, "metadata", "Which metadata types to add?", options) if err != nil { return nil, fmt.Errorf("could not prompt: %w", err) } ```
This commit is contained in:
parent
8e19d3e75b
commit
70672aff18
|
@ -44,8 +44,19 @@ func InitAskStubber() (*AskStubber, func()) {
|
|||
if stubbedPrompt.Default {
|
||||
// TODO this is failing for basic AskOne invocations with a string result.
|
||||
defaultValue := reflect.ValueOf(p).Elem().FieldByName("Default")
|
||||
|
||||
// If the user passed us an error, return it
|
||||
if err, ok := defaultValue.Interface().(error); ok {
|
||||
return err
|
||||
}
|
||||
|
||||
_ = core.WriteAnswer(response, "", defaultValue)
|
||||
} else {
|
||||
// If the user passed us an error, return it
|
||||
if err, ok := stubbedPrompt.Value.(error); ok {
|
||||
return err
|
||||
}
|
||||
|
||||
_ = core.WriteAnswer(response, "", stubbedPrompt.Value)
|
||||
}
|
||||
|
||||
|
@ -69,8 +80,19 @@ func InitAskStubber() (*AskStubber, func()) {
|
|||
}
|
||||
if sq.Default {
|
||||
defaultValue := reflect.ValueOf(q.Prompt).Elem().FieldByName("Default")
|
||||
|
||||
// If the user passed us an error, return it
|
||||
if err, ok := defaultValue.Interface().(error); ok {
|
||||
return err
|
||||
}
|
||||
|
||||
_ = core.WriteAnswer(response, q.Name, defaultValue)
|
||||
} else {
|
||||
// If the user passed us an error, return it
|
||||
if err, ok := sq.Value.(error); ok {
|
||||
return err
|
||||
}
|
||||
|
||||
_ = core.WriteAnswer(response, q.Name, sq.Value)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue