diff options
author | Robin Jarry <robin@jarry.cc> | 2023-10-22 23:23:18 +0200 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2023-10-28 19:25:10 +0200 |
commit | abe228b14d97d8d47e8ff4406de387fac45cfe68 (patch) | |
tree | 56117403d1ae32d7253f86bab01a944a3cf225b9 /commands/parser_test.go | |
parent | 30851656591293ed2e19340ab78c937855a11143 (diff) | |
download | aerc-abe228b14d97d8d47e8ff4406de387fac45cfe68.tar.gz |
commands: use completion from go-opt
Implement command completion with complete struct field tags from the
get-opt library introduced earlier.
Changelog-changed: Improved command completion.
Signed-off-by: Robin Jarry <robin@jarry.cc>
Reviewed-by: Koni Marti <koni.marti@gmail.com>
Tested-by: Moritz Poldrack <moritz@poldrack.dev>
Tested-by: Inwit <inwit@sindominio.net>
Diffstat (limited to 'commands/parser_test.go')
-rw-r--r-- | commands/parser_test.go | 258 |
1 files changed, 0 insertions, 258 deletions
diff --git a/commands/parser_test.go b/commands/parser_test.go deleted file mode 100644 index d6ccd385..00000000 --- a/commands/parser_test.go +++ /dev/null @@ -1,258 +0,0 @@ -package commands - -import ( - "testing" -) - -var parserTests = []struct { - name string - cmd string - wantType completionType - wantFlag string - wantArg string - wantOptind int -}{ - { - name: "empty command", - cmd: "", - wantType: COMMAND, - wantFlag: "", - wantArg: "", - wantOptind: 0, - }, - { - name: "command only", - cmd: "cmd", - wantType: COMMAND, - wantFlag: "", - wantArg: "", - wantOptind: 1, - }, - { - name: "with space", - cmd: "cmd ", - wantType: OPERAND, - wantFlag: "", - wantArg: "", - wantOptind: 1, - }, - { - name: "with two spaces", - cmd: "cmd ", - wantType: OPERAND, - wantFlag: "", - wantArg: "", - wantOptind: 1, - }, - { - name: "with single option flag", - cmd: "cmd -", - wantType: SHORT_OPTION, - wantFlag: "", - wantArg: "", - wantOptind: 2, - }, - { - name: "with single option flag two spaces", - cmd: "cmd -", - wantType: SHORT_OPTION, - wantFlag: "", - wantArg: "", - wantOptind: 2, - }, - { - name: "with single option flag completed", - cmd: "cmd -a", - wantType: SHORT_OPTION, - wantFlag: "a", - wantArg: "", - wantOptind: 2, - }, - { - name: "with single option flag completed and space", - cmd: "cmd -a ", - wantType: OPERAND, - wantFlag: "a", - wantArg: "", - wantOptind: 2, - }, - { - name: "with single option flag completed and two spaces", - cmd: "cmd -a ", - wantType: OPERAND, - wantFlag: "a", - wantArg: "", - wantOptind: 2, - }, - { - name: "with two single option flag completed", - cmd: "cmd -b -a", - wantType: SHORT_OPTION, - wantFlag: "a", - wantArg: "", - wantOptind: 3, - }, - { - name: "with two single option flag combined", - cmd: "cmd -ab", - wantType: SHORT_OPTION, - wantFlag: "ab", - wantArg: "", - wantOptind: 2, - }, - { - name: "with two single option flag and space", - cmd: "cmd -ab ", - wantType: OPERAND, - wantFlag: "ab", - wantArg: "", - wantOptind: 2, - }, - { - name: "with mandatory option flag", - cmd: "cmd -f", - wantType: OPTION_ARGUMENT, - wantFlag: "f", - wantArg: "", - wantOptind: 2, - }, - { - name: "with mandatory option flag and space", - cmd: "cmd -f ", - wantType: OPTION_ARGUMENT, - wantFlag: "f", - wantArg: "", - wantOptind: 2, - }, - { - name: "with mandatory option flag and two spaces", - cmd: "cmd -f ", - wantType: OPTION_ARGUMENT, - wantFlag: "f", - wantArg: "", - wantOptind: 2, - }, - { - name: "with mandatory option flag and completed", - cmd: "cmd -f a", - wantType: OPTION_ARGUMENT, - wantFlag: "f", - wantArg: "a", - wantOptind: 3, - }, - { - name: "with mandatory option flag and completed quote", - cmd: "cmd -f 'a b'", - wantType: OPTION_ARGUMENT, - wantFlag: "f", - wantArg: "a b", - wantOptind: 3, - }, - { - name: "with mandatory option flag and operand", - cmd: "cmd -f 'a b' hello", - wantType: OPERAND, - wantFlag: "f", - wantArg: "a b", - wantOptind: 3, - }, - { - name: "with mandatory option flag and two spaces between", - cmd: "cmd -f a", - wantType: OPTION_ARGUMENT, - wantFlag: "f", - wantArg: "a", - wantOptind: 3, - }, - { - name: "with mandatory option flag and more spaces", - cmd: "cmd -f a ", - wantType: OPERAND, - wantFlag: "f", - wantArg: "a", - wantOptind: 3, - }, - { - name: "with template data", - cmd: "cmd -a {{if .Size}} hello {{else}} {{end}}", - wantType: OPERAND, - wantFlag: "a", - wantArg: "", - wantOptind: 2, - }, - { - name: "with operand", - cmd: "cmd -ab /tmp/aerc-", - wantType: OPERAND, - wantFlag: "ab", - wantArg: "", - wantOptind: 2, - }, - { - name: "with operand indicator", - cmd: "cmd -ab -- /tmp/aerc-", - wantType: OPERAND, - wantFlag: "ab", - wantArg: "", - wantOptind: 3, - }, - { - name: "hyphen connected command", - cmd: "cmd-dmc", - wantType: COMMAND, - wantFlag: "", - wantArg: "", - wantOptind: 1, - }, - { - name: "incomplete hyphen connected command", - cmd: "cmd-", - wantType: COMMAND, - wantFlag: "", - wantArg: "", - wantOptind: 1, - }, - { - name: "hyphen connected command with option", - cmd: "cmd-dmc -a", - wantType: SHORT_OPTION, - wantFlag: "a", - wantArg: "", - wantOptind: 2, - }, -} - -func TestCommands_Parser(t *testing.T) { - for i, test := range parserTests { - n := len(test.cmd) - spaceTerminated := n > 0 && test.cmd[n-1] == ' ' - parser, err := newParser(test.cmd, "abf:", spaceTerminated) - if err != nil { - t.Errorf("parser error: %v", err) - } - - if test.wantType != parser.kind { - t.Errorf("test %d '%s': completion type does not match: "+ - "want %d, but got %d", i, test.cmd, test.wantType, - parser.kind) - } - - if test.wantFlag != parser.flag { - t.Errorf("test %d '%s': flag does not match: "+ - "want %s, but got %s", i, test.cmd, test.wantFlag, - parser.flag) - } - - if test.wantArg != parser.arg { - t.Errorf("test %d '%s': arg does not match: "+ - "want %s, but got %s", i, test.cmd, test.wantArg, - parser.arg) - } - - if test.wantOptind != parser.optind { - t.Errorf("test %d '%s': optind does not match: "+ - "want %d, but got %d", i, test.cmd, test.wantOptind, - parser.optind) - } - } -} |