diff options
author | Oliver Kiddle <opk@zsh.org> | 2017-01-04 14:41:52 +0100 |
---|---|---|
committer | Oliver Kiddle <opk@zsh.org> | 2017-01-04 14:42:39 +0100 |
commit | a69b19d215798c7cfd89a307abd959fb970dd679 (patch) | |
tree | e589ccc5d9c58f51ef7ae5eef99ca6d745c77355 /Test | |
parent | c4dba4f2e654f40160ff97fdf691e9a33ea129b0 (diff) | |
download | zsh-a69b19d215798c7cfd89a307abd959fb970dd679.tar.gz zsh-a69b19d215798c7cfd89a307abd959fb970dd679.tar.xz zsh-a69b19d215798c7cfd89a307abd959fb970dd679.zip |
40226: tidy up some of the _arguments set code
Remove old code for applying explicit exclusions between sets which fixes some odd behaviour. Some struct members were unused. Also added some comments and test cases.
Diffstat (limited to 'Test')
-rw-r--r-- | Test/Y03arguments.ztst | 59 |
1 files changed, 57 insertions, 2 deletions
diff --git a/Test/Y03arguments.ztst b/Test/Y03arguments.ztst index d09b118a2..0b797ac03 100644 --- a/Test/Y03arguments.ztst +++ b/Test/Y03arguments.ztst @@ -64,6 +64,20 @@ >line: {tst arg1 }{} >MESSAGE:{no more arguments} + tst_arguments -a '2:desc2:(arg2)' + comptest $'tst a1\t \t' +0:second argument but no first argument +>line: {tst a1}{} +>MESSAGE:{no more arguments} +>line: {tst a1 arg2 }{} + + tst_arguments '2:desc2:(arg2)' '*:rest:(rest)' + comptest $'tst \t\t\t' +0:second and rest arguments but no first argument +>line: {tst rest }{} +>line: {tst rest arg2 }{} +>line: {tst rest arg2 rest }{} + tst_arguments '-\+[opt]' comptest $'tst -\C-d' 0:-+ @@ -82,6 +96,14 @@ >line: {tst +o -o }{} >MESSAGE:{no arguments} + tst_arguments +-o + comptest $'tst \t' +0:option beginning with + and -, specified the other way around +>line: {tst }{} +>DESCRIPTION:{option} +>NO:{+o} +>NO:{-o} + tst_arguments '-o:1:(a):2:(b)' comptest $'tst \t\t\t' 0:two option arguments @@ -206,6 +228,15 @@ 0:opt_args with multiple arguments and quoting of colons and backslashes >line: {tst -a 1:x \2 1\:x:\\2 }{} + tst_arguments -a -b + comptest $'tst rest -\t\C-w\eb\C-b-\t' +0:option completion with rest arguments on the line but not in the specs +>line: {tst rest -}{} +>line: {tst -}{ rest } +>DESCRIPTION:{option} +>NO:{-a} +>NO:{-b} + tst_arguments '-a' '*::rest:{compadd - -b}' comptest $'tst arg -\t' 0:rest arguments @@ -409,7 +440,6 @@ 0:exclude own set from an option >line: {tst -m -a }{} -# the following two tests only verify the current questionable behaviour tst_arguments - set1 '(set2)-a' -m -n - set2 -a -t -u comptest $'tst -a -\t' 0:exclude later set from an option common to both @@ -417,10 +447,12 @@ >DESCRIPTION:{option} >NO:{-m} >NO:{-n} +>NO:{-t} +>NO:{-u} tst_arguments - set2 -a -t -u - set1 '(set2)-a' -m -n comptest $'tst -a -\t' -0:exclude later set from an option common to both +0:exclude earlier set from an option common to both >line: {tst -a -}{} >DESCRIPTION:{option} >NO:{-m} @@ -428,6 +460,11 @@ >NO:{-t} >NO:{-u} + tst_arguments -x - '(set1)' -a -b - '(set2)' -m -n + comptest $'tst -m -\t' +0:single option sets are still mutually exclusive +>line: {tst -m -x }{} + tst_arguments '(-)-h' -a -b -c comptest $'tst -h -\t' 0:exclude all other options @@ -459,6 +496,24 @@ F:shouldn't offer -b as it is already on the command-line >NO:{-d} F:the first tab press shouldn't offer -d since -a is on the command line + tst_arguments -s : -ad '(-d)-a' -b -ca -d + comptest $'tst -ad\t-b\t' +0:option clumping mixed with real option that looks like clump +>line: {tst -ad }{} +>line: {tst -ad -b}{} +>DESCRIPTION:{option} +>NO:{-a} +>NO:{-d} + + tst_arguments -s : '(-d)-a+:arg:(b)' '(-c)-b' -c -d + comptest $'tst -ab\t-\t' +0:option clumping mixed with direct argument +>line: {tst -ab }{} +>line: {tst -ab -}{} +>DESCRIPTION:{option} +>NO:{-b} +>NO:{-c} + tst_arguments '-a:arg' -b '(-b)-c' comptest $'tst -a -c -\t' 0:exclusion with option argument that looks like an option |