Align shared debug help and completion
This commit is contained in:
@@ -70,6 +70,34 @@ func TestCompletionFlagAndValuePositions(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSharedDebugCompletionHints(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
name string
|
||||
hint CompletionHint
|
||||
want commandmeta.CompletionKind
|
||||
}{
|
||||
{"none", NoCompletion(), commandmeta.CompletionNone},
|
||||
{"choices", CompleteChoices(CompletionChoice{Value: "true"}), commandmeta.CompletionChoices},
|
||||
{"files", CompleteFiles(), commandmeta.CompletionFiles},
|
||||
{"directories", CompleteDirectories(), commandmeta.CompletionDirectories},
|
||||
} {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
command := NewCommand(CommandSpec[struct{}]{Name: "run", Flags: []Flag[struct{}]{BoolFlag(FlagMeta{Name: "debug", Short: "d", Completion: tc.hint}, false, func(*struct{}, Supplied[bool]) {})}, Run: func(Invocation, struct{}) Outcome { return Success() }})
|
||||
app, err := New(Identity{Name: "example"}, command)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
snapshot := app.routeSnapshot()
|
||||
for _, current := range []string{"--debug=", "-d="} {
|
||||
target := completionTargetFor(snapshot, resolveCompletionContext(snapshot, []string{"run"}, current))
|
||||
if target.kind != completionTargetValue || target.hint.Kind != tc.want {
|
||||
t.Fatalf("%s: %#v", current, target)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestCompletionOperandAllocation(t *testing.T) {
|
||||
arguments := []commandmeta.Argument{
|
||||
{Name: "optional", Min: 0, Max: 1, Completion: commandmeta.CompletionHint{Kind: commandmeta.CompletionFiles}},
|
||||
|
||||
Reference in New Issue
Block a user