diff --git a/internal/autocomplete/autocomplete.go b/internal/autocomplete/autocomplete.go index 97fe1a8..927e2e2 100644 --- a/internal/autocomplete/autocomplete.go +++ b/internal/autocomplete/autocomplete.go @@ -216,7 +216,9 @@ func getAllPossibleCompletions(completionStyle CompletionStyle, root *cli.Comman completions := make([]ShellCompletion, 0) if len(args) == 0 { for _, child := range root.Commands { - completions = builder.createFromCommand("", child, completions) + if !child.Hidden { + completions = builder.createFromCommand("", child, completions) + } } return CompletionResult{Completions: completions, Behavior: ShellCompletionBehaviorDefault} } diff --git a/internal/autocomplete/autocomplete_test.go b/internal/autocomplete/autocomplete_test.go index 2338924..5aba2cf 100644 --- a/internal/autocomplete/autocomplete_test.go +++ b/internal/autocomplete/autocomplete_test.go @@ -56,10 +56,17 @@ func TestGetCompletions_HiddenCommand(t *testing.T) { }, } - result := GetCompletions(CompletionStyleBash, root, []string{""}) - - assert.Len(t, result.Completions, 1) - assert.Equal(t, "visible", result.Completions[0].Name) + t.Run("with empty string prefix", func(t *testing.T) { + result := GetCompletions(CompletionStyleBash, root, []string{""}) + assert.Len(t, result.Completions, 1) + assert.Equal(t, "visible", result.Completions[0].Name) + }) + + t.Run("with empty args slice", func(t *testing.T) { + result := GetCompletions(CompletionStyleBash, root, []string{}) + assert.Len(t, result.Completions, 1) + assert.Equal(t, "visible", result.Completions[0].Name) + }) } func TestGetCompletions_NestedSubcommand(t *testing.T) {