From 96fceb1fe252d4ab152fd131e2ed038505d1d120 Mon Sep 17 00:00:00 2001 From: Chapman Pendery Date: Thu, 28 Sep 2023 12:42:54 -0700 Subject: [PATCH] fix: nested non commands trigger stack overflow Signed-off-by: Chapman Pendery --- ...te-TestLoadSuggestions-func1-nestedNonCommands-suggestions | 2 ++ autocomplete/completion.go | 4 ++++ autocomplete/completion_test.go | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 autocomplete/.snapshots/autocomplete-TestLoadSuggestions-func1-nestedNonCommands-suggestions diff --git a/autocomplete/.snapshots/autocomplete-TestLoadSuggestions-func1-nestedNonCommands-suggestions b/autocomplete/.snapshots/autocomplete-TestLoadSuggestions-func1-nestedNonCommands-suggestions new file mode 100644 index 0000000..c48a21f --- /dev/null +++ b/autocomplete/.snapshots/autocomplete-TestLoadSuggestions-func1-nestedNonCommands-suggestions @@ -0,0 +1,2 @@ +([]string) { +} diff --git a/autocomplete/completion.go b/autocomplete/completion.go index 0c45448..af7c69f 100644 --- a/autocomplete/completion.go +++ b/autocomplete/completion.go @@ -189,6 +189,10 @@ func handleSubcommand(tokens []commandToken, spec model.Subcommand, persistentOp return handleSubcommand(tokens[1:], *subcommand, persistentOptions, false, false, getPersistentTokens(acceptedTokens)) } + if len(spec.Args) == 0 { // not subcommand or option & no args exist + return + } + return handleArg(tokens, spec.Args, spec, persistentOptions, acceptedTokens, false, false) } diff --git a/autocomplete/completion_test.go b/autocomplete/completion_test.go index aba58a6..8b41d16 100644 --- a/autocomplete/completion_test.go +++ b/autocomplete/completion_test.go @@ -28,7 +28,7 @@ func TestLoadSuggestions(t *testing.T) { {Name: "providedArgDescription", Cmd: "act completion bash -a "}, {Name: "completedOptionWithArg", Cmd: "act completion bash -a 'actor' "}, {Name: "command", Cmd: "sudo git sta", Skip: true}, // TODO: fix skipped test - {Name: "nestedNonCommands", Cmd: "az az ", Skip: true}, // TODO: fix skipped test + {Name: "nestedNonCommands", Cmd: "az az "}, } for _, test := range tests { test := test