| status | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | |
| pass | 21 | 18 | 18 | 14 | 16 | 16 | 4 | 12 | 16 | 20 | |
| ok | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | |
| N-I | 0 | 1 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | |
| BUG | 0 | 1 | 0 | 4 | 4 | 0 | 0 | 0 | 0 | 0 | |
| FAIL | 0 | 0 | 3 | 0 | 0 | 5 | 17 | 9 | 5 | 0 | |
| total | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | 21 | |
| case | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | description |
| 0 | pass | BUG | pass | BUG | BUG | FAIL | pass | pass | pass | pass | can continue after unknown option |
| details | details | details | details | ||||||||
| 1 | pass | pass | pass | pass | pass | pass | FAIL | FAIL | FAIL | pass | set with both options and argv |
| details | details | details | |||||||||
| 2 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | nounset with "$@" |
| 3 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | set -u -- clears argv |
| details | |||||||||||
| 4 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | set -u -- x y z |
| details | |||||||||||
| 5 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | reset option with long flag |
| 6 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | reset option with short flag |
| 7 | pass | ok | FAIL | pass | pass | pass | FAIL | pass | FAIL | pass | set -eu (flag parsing) |
| details | details | details | details | ||||||||
| 8 | pass | pass | pass | pass | pass | pass | FAIL | FAIL | pass | pass | set -o lists options |
| details | details | ||||||||||
| 9 | pass | pass | FAIL | BUG | pass | pass | FAIL | FAIL | pass | pass | 'set' and 'eval' round trip |
| details | details | details | details | ||||||||
| 10 | pass | pass | pass | BUG | pass | pass | FAIL | FAIL | pass | pass | set - - and so forth |
| details | details | details | |||||||||
| 11 | pass | pass | pass | BUG | pass | pass | FAIL | FAIL | FAIL | pass | set - leading single dash is ignored, turns off xtrace verbose (#2364) |
| details | details | details | details | ||||||||
| 12 | pass | pass | pass | N-I | pass | pass | FAIL | FAIL | FAIL | pass | set - stops option processing like set -- |
| details | details | details | details | ||||||||
| 13 | pass | pass | pass | N-I | BUG | FAIL | FAIL | FAIL | FAIL | pass | A single + is an ignored flag; not an argument |
| details | details | details | details | details | details | ||||||
| 14 | pass | pass | pass | ok | BUG | FAIL | FAIL | FAIL | pass | ok | set - + and + - |
| details | details | details | details | details | details | ||||||
| 15 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | set -a exports variables |
| details | |||||||||||
| 16 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | set +a stops exporting |
| details | |||||||||||
| 17 | pass | pass | pass | pass | pass | pass | FAIL | FAIL | pass | pass | set -o allexport (long form) |
| details | details | ||||||||||
| 18 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | variables set before set -a are not exported |
| details | |||||||||||
| 19 | pass | pass | pass | pass | BUG | FAIL | FAIL | pass | pass | pass | set -a exports local variables |
| details | details | details | |||||||||
| 20 | pass | N-I | FAIL | pass | N-I | FAIL | FAIL | pass | pass | pass | set -a exports declare variables |
| details | details | details | details | details |
155 passed, 3 OK, 4 not implemented, 9 BUG, 39 failed, 0 timeouts, 0 cases skipped
| dash | 0 can continue after unknown option stdout: stderr: dash: 2: set: Illegal option -o STRICT |
| zsh | 0 can continue after unknown option stdout: stderr: set: no such option: STRICT |
| mksh | 0 can continue after unknown option stdout: stderr: mksh: <stdin>[2]: set: STRICT: bad option |
| ksh | 0 can continue after unknown option [ksh stdout] Expected 'hello\n' Got '' [ksh status] Expected 0 Got 1 stdout: stderr: E: ksh: <stdin>[2]: set: STRICT: unknown option |
| toysh | 1 set with both options and argv [toysh stdout] Expected 'a b c\n' Got '\ndone\n' [toysh status] Expected 1 Got 0 stdout: donestderr: set: bad -o errexit |
| sush | 1 set with both options and argv [sush stdout] Expected 'a b c\n' Got '\ndone\n' [sush status] Expected 1 Got 0 stdout: donestderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: set: errexit: invalid option name |
| brush | 1 set with both options and argv [brush stdout] Expected 'a b c\n' Got 'a b c\ndone\n' [brush status] Expected 1 Got 0 stdout: a b c donestderr: |
| toysh | 3 set -u -- clears argv [toysh stdout] Expected '\n' Got 'a b c\n' stdout: a b cstderr: set: bad -- |
| toysh | 4 set -u -- x y z [toysh stdout] Expected 'x y z\n' Got 'a b c\n' stdout: a b cstderr: set: bad -- |
| dash | 7 set -eu (flag parsing) stdout: stderr: dash: 2: unset: parameter not set |
| ash | 7 set -eu (flag parsing) [ash status] Expected 1 Got 2 stdout: stderr: ash: unset: parameter not set |
| toysh | 7 set -eu (flag parsing) [toysh stdout] Expected u'' Got '[]\nstatus=0\n' [toysh status] Expected 1 Got 0 stdout: [] status=0stderr: set: bad -e |
| brush | 7 set -eu (flag parsing) [brush stdout] Expected u'' Got '[]\nstatus=0\n' [brush status] Expected 1 Got 0 stdout: [] status=0stderr: |
| toysh | 8 set -o lists options [toysh stdout] Expected 'noexec\n' Got '' [toysh status] Expected 0 Got 1 stdout: stderr: |
| sush | 8 set -o lists options [sush stdout] Expected 'noexec\n' Got '' [sush status] Expected 0 Got 1 stdout: stderr: |
| ash | 9 'set' and 'eval' round trip [ash stdout] Expected '[ ]\nOK\nOK\nOK\nOK\nOK\n' Got '[ ]\n' [ash status] Expected 0 Got 2 stdout: [ ]stderr: ash: /home/andy/git/oils-for-unix/oils/_tmp/spec-tmp/builtin-set.test.sh/09-ash/vars-ash.txt: line 6: syntax error: unterminated quoted string |
| zsh | 9 'set' and 'eval' round trip stdout: [ ]stderr: grep: (standard input): binary file matches Code saved to /home/andy/git/oils-for-unix/oils/_tmp/spec-tmp/builtin-set.test.sh/09-zsh/vars-zsh.txt |
| toysh | 9 'set' and 'eval' round trip [toysh stdout] Expected '[ ]\nOK\nOK\nOK\nOK\nOK\n' Got '[ ]\n' [toysh status] Expected 0 Got -6 stdout: [ ]stderr: .: Needs 1 argument (see ". --help") Code saved to free(): double free detected in tcache 2 |
| sush | 9 'set' and 'eval' round trip [sush stdout] Expected '[ ]\nOK\nOK\nOK\nOK\nOK\n' Got '[ ]\nOK\nOK\nOK\nOK\n' stdout: [ ] OK OK OK OKstderr: Code saved to /home/andy/git/oils-for-unix/oils/_tmp/spec-tmp/builtin-set.test.sh/09-sush/vars-sush.txt |
| zsh | 10 set - - and so forth stdout: a b a b a b --stderr: |
| toysh | 10 set - - and so forth [toysh stdout] Expected 'a b\na b\na b\n-\n--\n' Got 'a b\na b\na b\na b\na b\n' stdout: a b a b a b a b a bstderr: set: bad -- set: bad -- |
| sush | 10 set - - and so forth [sush stdout] Expected 'a b\na b\na b\n-\n--\n' Got 'a b\na b\na b\na b\n--\n' stdout: a b a b a b a b --stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: set: -: invalid option /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 10: set: -: invalid option |
| zsh | 11 set - leading single dash is ignored, turns off xtrace verbose (#2364) stdout: verbose-on xtrace-on a b c verbose-on xtrace-on x - y zstderr: show_options +zsh:11> show_options +show_options:1> case 569Xsvx (*v*) +show_options:2> echo verbose-on +show_options:4> case 569Xsvx (*x*) +show_options:5> echo xtrace-on echo +zsh:12> echo set - a b c +zsh:14> set - a b c echo "$@" +zsh:15> echo a b c show_options +zsh:16> show_options +show_options:1> case 569Xsvx (*v*) +show_options:2> echo verbose-on +show_options:4> case 569Xsvx (*x*) +show_options:5> echo xtrace-on echo +zsh:17> echo set x - y z +zsh:19> set x - y z echo "$@" +zsh:20> echo x - y z |
| toysh | 11 set - leading single dash is ignored, turns off xtrace verbose (#2364) [toysh stdout] Expected 'verbose-on\nxtrace-on\n\na b c\n\nx - y z\n' Got '\na b c\n\nx - y z\n' stdout: a b c x - y zstderr: set: bad -v
show_options
{
case $- in
case $- in
echo
set - a b c
echo "$@"
show_options
{
case $- in
case $- in
echo
set x - y z
echo "$@"
|
| sush | 11 set - leading single dash is ignored, turns off xtrace verbose (#2364) [sush stdout] Expected 'verbose-on\nxtrace-on\n\na b c\n\nx - y z\n' Got 'verbose-on\nxtrace-on\n\n\nverbose-on\nxtrace-on\n\nx - y z\n' stdout: verbose-on xtrace-on verbose-on xtrace-on x - y zstderr: show_options + show_options + case $- in + echo verbose-on + case $- in + echo xtrace-on echo + echo set - a b c + set - a b c /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 14: set: -: invalid option echo "$@" + echo show_options + show_options + case $- in + echo verbose-on + case $- in + echo xtrace-on echo + echo set x - y z + set x - y z echo "$@" + echo x - y z |
| brush | 11 set - leading single dash is ignored, turns off xtrace verbose (#2364) [brush stdout] Expected 'verbose-on\nxtrace-on\n\na b c\n\nx - y z\n' Got 'verbose-on\nxtrace-on\n\na b c\nverbose-on\nxtrace-on\n\nx - y z\n' stdout: verbose-on xtrace-on a b c verbose-on xtrace-on x - y zstderr: + show_options + case $- in + echo verbose-on + case $- in + echo xtrace-on + echo + set - a b c + echo a b c + show_options + case $- in + echo verbose-on + case $- in + echo xtrace-on + echo + set x - y z + echo x - y z |
| zsh | 12 set - stops option processing like set -- stdout: stderr: |
| toysh | 12 set - stops option processing like set -- [toysh stdout] Expected 'argv -v\n' Got '' [toysh status] Expected 0 Got -6 stdout: stderr: munmap_chunk(): invalid pointer |
| sush | 12 set - stops option processing like set -- [sush stdout] Expected 'argv -v\n' Got 'verbose-on\nxtrace-on\nargv\n' stdout: verbose-on xtrace-on argvstderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 12: set: -: invalid option show_options + show_options + case $- in + echo verbose-on + case $- in + echo xtrace-on echo argv "$@" + echo argv |
| brush | 12 set - stops option processing like set -- [brush stdout] Expected 'argv -v\n' Got 'xtrace-on\nargv -v\n' stdout: xtrace-on argv -vstderr: + show_options + case $- in + case $- in + echo xtrace-on + echo argv -v |
| zsh | 13 A single + is an ignored flag; not an argument stdout: stderr: |
| mksh | 13 A single + is an ignored flag; not an argument stdout: plus xtrace-on plus -v x ystderr: + show_options + echo xtrace-on + echo plus -v x y |
| ksh | 13 A single + is an ignored flag; not an argument [ksh stdout] Expected 'plus\nverbose-on\nxtrace-on\nplus x y\n' Got 'plus\nxtrace-on\nplus -v x y\n' stdout: plus xtrace-on plus -v x ystderr: + show_options + echo xtrace-on + echo plus -v x y |
| toysh | 13 A single + is an ignored flag; not an argument [toysh stdout] Expected 'plus\nverbose-on\nxtrace-on\nplus x y\n' Got '' [toysh status] Expected 0 Got -6 stdout: stderr: munmap_chunk(): invalid pointer |
| sush | 13 A single + is an ignored flag; not an argument [sush stdout] Expected 'plus\nverbose-on\nxtrace-on\nplus x y\n' Got 'plus\nverbose-on\nxtrace-on\nplus\n' stdout: plus verbose-on xtrace-on plusstderr: show_options + show_options + case $- in + echo verbose-on + case $- in + echo xtrace-on echo plus "$@" + echo plus |
| brush | 13 A single + is an ignored flag; not an argument [brush stdout] Expected 'plus\nverbose-on\nxtrace-on\nplus x y\n' Got 'BASH=/home/andy/git/oils-for-unix/oils/../../shells/brush/target/release/brush\nBASHPID=704712\nBASH_VERSINFO=([0]="5" [1]="2" [2]="15" [3]="1" [4]="release" [5]="unknown")\nBASH_VERSION=\'5.2.15(1)-release\'\nBRUSH_VERSION=0.2.23\nCOMP_WORDBREAKS=$\' \\t\\n"\\\'@><=;|&(:\'\nEUID=1000\nHISTFILE=/home/andy/.brush_history\nHOSTNAME=hoover\nHOSTTYPE=x86_64\nIFS=$\' \\t\\n\'\nLC_ALL=C.UTF-8\nLOCALE_ARCHIVE=\'\'\nMACHTYPE=unknown\nOILS_GC_ON_EXIT=\'\'\nOLDPWD=\nOPTERR=1\nOPTIND=1\nOSTYPE=linux-gnu\nPATH=/home/andy/git/oils-for-unix/oils/spec/bin:/home/andy/git/oils-for-unix/oils/../oils.DEPS/bin:/home/andy/git/oils-for-unix/oils/../oil_DEPS/spec-bin:/home/andy/git/oils-for-unix/oils/_tmp/shells:/home/andy/git/oils-for-unix/oils/../oils.DEPS/bin:/home/andy/git/oils-for-unix/oils/../oil_DEPS/spec-bin:/home/andy/git/oils-for-unix/oils/_tmp/shells:/home/andy/git/oils-for-unix/oils/../oils.DEPS/bin:/home/andy/git/oils-for-unix/oils/../oil_DEPS/spec-bin:/home/andy/git/oils-for-unix/oils/_tmp/shells:/home/andy/git/oils-for-unix/oils/../oils.DEPS/bin:/home/andy/git/oils-for-unix/oils/../oil_DEPS/spec-bin:/home/andy/git/oils-for-unix/oils/_tmp/shells:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/andy/bin:/home/andy/git/oils-for-unix/oils.DEPS/wedge/python2/2.7.18/bin\nPPID=704703\nPS4=\'+ \'\nPWD=/home/andy/git/oils-for-unix/oils/_tmp/spec-tmp/builtin-set.test.sh/13-brush\nREPO_ROOT=/home/andy/git/oils-for-unix/oils\nSH=/home/andy/git/oils-for-unix/oils/../../shells/brush/target/release/brush\nSHELL=/home/andy/git/shells/brush/target/release/brush\nSHLVL=1\nTMP=/home/andy/git/oils-for-unix/oils/_tmp/spec-tmp/builtin-set.test.sh/13-brush\nUID=1000\nshow_options () \n{ \n case $- in\n *v*)\n echo verbose-on\n ;;\n esac;\n case $- in\n *x*)\n echo xtrace-on\n ;;\n esac\n}\nplus\nverbose-on\nxtrace-on\nplus x y\n' stdout: BASH=/home/andy/git/oils-for-unix/oils/../../shells/brush/target/release/brush
BASHPID=704712
BASH_VERSINFO=([0]="5" [1]="2" [2]="15" [3]="1" [4]="release" [5]="unknown")
BASH_VERSION='5.2.15(1)-release'
BRUSH_VERSION=0.2.23
COMP_WORDBREAKS=$' \t\n"\'@><=;|&(:'
EUID=1000
HISTFILE=/home/andy/.brush_history
HOSTNAME=hoover
HOSTTYPE=x86_64
IFS=$' \t\n'
LC_ALL=C.UTF-8
LOCALE_ARCHIVE=''
MACHTYPE=unknown
OILS_GC_ON_EXIT=''
OLDPWD=
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/home/andy/git/oils-for-unix/oils/spec/bin:/home/andy/git/oils-for-unix/oils/../oils.DEPS/bin:/home/andy/git/oils-for-unix/oils/../oil_DEPS/spec-bin:/home/andy/git/oils-for-unix/oils/_tmp/shells:/home/andy/git/oils-for-unix/oils/../oils.DEPS/bin:/home/andy/git/oils-for-unix/oils/../oil_DEPS/spec-bin:/home/andy/git/oils-for-unix/oils/_tmp/shells:/home/andy/git/oils-for-unix/oils/../oils.DEPS/bin:/home/andy/git/oils-for-unix/oils/../oil_DEPS/spec-bin:/home/andy/git/oils-for-unix/oils/_tmp/shells:/home/andy/git/oils-for-unix/oils/../oils.DEPS/bin:/home/andy/git/oils-for-unix/oils/../oil_DEPS/spec-bin:/home/andy/git/oils-for-unix/oils/_tmp/shells:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/andy/bin:/home/andy/git/oils-for-unix/oils.DEPS/wedge/python2/2.7.18/bin
PPID=704703
PS4='+ '
PWD=/home/andy/git/oils-for-unix/oils/_tmp/spec-tmp/builtin-set.test.sh/13-brush
REPO_ROOT=/home/andy/git/oils-for-unix/oils
SH=/home/andy/git/oils-for-unix/oils/../../shells/brush/target/release/brush
SHELL=/home/andy/git/shells/brush/target/release/brush
SHLVL=1
TMP=/home/andy/git/oils-for-unix/oils/_tmp/spec-tmp/builtin-set.test.sh/13-brush
UID=1000
show_options ()
{
case $- in
*v*)
echo verbose-on
;;
esac;
case $- in
*x*)
echo xtrace-on
;;
esac
}
plus
verbose-on
xtrace-on
plus x y
stderr: + show_options + case $- in + echo verbose-on + case $- in + echo xtrace-on + echo plus x y |
| zsh | 14 set - + and + - stdout: +stderr: |
| mksh | 14 set - + and + - stdout: + -stderr: |
| ksh | 14 set - + and + - [ksh stdout] Expected '+\n+\n' Got '+\n-\n' stdout: + -stderr: |
| toysh | 14 set - + and + - [toysh stdout] Expected '+\n+\n' Got '\n\n' stdout: stderr: |
| sush | 14 set - + and + - [sush stdout] Expected '+\n+\n' Got '\n\n' stdout: stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: set: -: invalid option /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: set: -: invalid option |
| osh | 14 set - + and + - stdout: +stderr: |
| toysh | 15 set -a exports variables [toysh stdout] Expected 'bar\nqux\n' Got 'None\nNone\n' stdout: None Nonestderr: set: bad -a |
| toysh | 16 set +a stops exporting [toysh stdout] Expected 'exported\nNone\n' Got 'None\nNone\n' stdout: None Nonestderr: set: bad -a set: bad -a |
| toysh | 17 set -o allexport (long form) [toysh stdout] Expected 'value1\nNone\n' Got 'None\nNone\n' stdout: None Nonestderr: set: bad -o allexport set: bad -o allexport |
| sush | 17 set -o allexport (long form) [sush stdout] Expected 'value1\nNone\n' Got 'None\nNone\n' stdout: None Nonestderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: set: allexport: invalid option name /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: set: allexport: invalid option name |
| toysh | 18 variables set before set -a are not exported [toysh stdout] Expected 'None\nafter_value\n' Got 'None\nNone\n' stdout: None Nonestderr: set: bad -a |
| mksh | 19 set -a exports local variables stdout: Nonestderr: |
| ksh | 19 set -a exports local variables [ksh stdout] Expected 'zzz\n' Got 'None\n' stdout: Nonestderr: |
| toysh | 19 set -a exports local variables [toysh stdout] Expected 'zzz\n' Got 'None\n' stdout: Nonestderr: set: bad -a |
| dash | 20 set -a exports declare variables stdout: Nonestderr: dash: 2: declare: not found |
| ash | 20 set -a exports declare variables [ash stdout] Expected 'zzz\n' Got 'None\n' stdout: Nonestderr: ash: declare: not found |
| mksh | 20 set -a exports declare variables stdout: Nonestderr: mksh: <stdin>[2]: declare: not found |
| ksh | 20 set -a exports declare variables [ksh stdout] Expected 'zzz\n' Got 'None\n' stdout: Nonestderr: E: ksh: <stdin>[2]: declare: inaccessible or not found |
| toysh | 20 set -a exports declare variables [toysh stdout] Expected 'zzz\n' Got 'None\n' stdout: Nonestderr: set: bad -a |