Results for sh-options-bash.test.sh

statusbashdashashzshmkshkshtoyshsushbrushosh
pass 7111111165
ok 0000000001
N-I 1200200000
FAIL 0577577722
total8888888888
casebashdashashzshmkshkshtoyshsushbrushoshdescription
0pass N-I FAIL FAIL N-I FAIL FAIL FAIL pass pass SHELLOPTS is updated when options are changed
detailsdetailsdetailsdetailsdetailsdetailsdetails
1pass N-I FAIL FAIL N-I FAIL FAIL FAIL pass ok SHELLOPTS is readonly
detailsdetailsdetailsdetailsdetailsdetailsdetailsdetails
2pass FAIL FAIL FAIL FAIL FAIL FAIL FAIL pass FAIL SHELLOPTS and BASHOPTS are non-empty
detailsdetailsdetailsdetailsdetailsdetailsdetailsdetails
3pass FAIL FAIL FAIL FAIL FAIL FAIL FAIL pass pass SHELLOPTS reflects flags like sh -x
detailsdetailsdetailsdetailsdetailsdetailsdetails
4pass FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL pass export SHELLOPTS does cross-process tracing
detailsdetailsdetailsdetailsdetailsdetailsdetailsdetails
5pass FAIL FAIL FAIL FAIL FAIL FAIL FAIL pass pass export SHELLOPTS does cross-process tracing with bash
detailsdetailsdetailsdetailsdetailsdetailsdetails
6pass pass pass pass pass pass pass pass pass pass OSH calling bash with SHELLOPTS does not change braceexpand
7N-I FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL If shopt --set xtrace is allowed, it should update SHELLOPTS, not BASHOPTS
detailsdetailsdetailsdetailsdetailsdetailsdetailsdetailsdetailsdetails
25 passed, 1 OK, 5 not implemented, 0 BUG, 49 failed, 0 timeouts, 0 cases skipped
2 failed under osh

Details on runs that didn't PASS

dash0 SHELLOPTS is updated when options are changed

stdout:
1
1
1
stderr:
+ echo
+ grep -q xtrace
+ echo 1
+ set +x
ash0 SHELLOPTS is updated when options are changed

[ash stdout] Expected '1\n0\n1\n', got '1\n1\n1\n'

stdout:
1
1
1
stderr:
+ echo
+ grep -q xtrace
+ echo 1
+ set +x
zsh0 SHELLOPTS is updated when options are changed

[zsh stdout] Expected '1\n0\n1\n', got '1\n1\n1\n'

stdout:
1
1
1
stderr:
+zsh:4> echo
+zsh:4> grep -q xtrace
+zsh:5> echo 1
+zsh:6> set +x
mksh0 SHELLOPTS is updated when options are changed

stdout:
1
1
1
stderr:
+ echo
+ grep -q xtrace
+ echo 1
+ set +x
ksh0 SHELLOPTS is updated when options are changed

[ksh stdout] Expected '1\n0\n1\n', got '1\n1\n1\n'

stdout:
1
1
1
stderr:
+ echo
+ grep -q xtrace
+ echo 1
+ set +x
toysh0 SHELLOPTS is updated when options are changed

[toysh stdout] Expected '1\n0\n1\n', got '1\n1\n1\n'

stdout:
1
1
1
stderr:
 echo $SHELLOPTS |
 grep -q xtrace 
 echo $? 
 set +x 
sush0 SHELLOPTS is updated when options are changed

[sush stdout] Expected '1\n0\n1\n', got '1\n1\n1\n'

stdout:
1
1
1
stderr:
/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: set: -x: invalid option
dash1 SHELLOPTS is readonly

stdout:
status=0
stderr:
ash1 SHELLOPTS is readonly

[ash stdout] Expected 'status=1\n', got 'status=0\n'

stdout:
status=0
stderr:
zsh1 SHELLOPTS is readonly

[zsh stdout] Expected 'status=1\n', got 'status=0\n'

stdout:
status=0
stderr:
mksh1 SHELLOPTS is readonly

stdout:
status=0
stderr:
ksh1 SHELLOPTS is readonly

[ksh stdout] Expected 'status=1\n', got 'status=0\n'

stdout:
status=0
stderr:
toysh1 SHELLOPTS is readonly

[toysh stdout] Expected 'status=1\n', got 'status=0\n'

stdout:
status=0
stderr:
sush1 SHELLOPTS is readonly

[sush stdout] Expected 'status=1\n', got 'status=0\n'

stdout:
status=0
stderr:
osh1 SHELLOPTS is readonly

stdout:
stderr: 
  SHELLOPTS=x
  ^~~~~~~~~~
[ stdin ]:1: fatal: Can't assign to readonly value 'SHELLOPTS'
dash2 SHELLOPTS and BASHOPTS are non-empty

[dash stdout] Expected 'shellopts is set\nbashopts is set\n', got ''

stdout:
stderr: 
dash: 1: test: -v: unexpected operator
dash: 4: test: -v: unexpected operator
dash: 9: SHELLOPTS: parameter not set or null
ash2 SHELLOPTS and BASHOPTS are non-empty

[ash stdout] Expected 'shellopts is set\nbashopts is set\n', got ''
[ash status] Expected 0, got 2

stdout:
stderr: 
ash: SHELLOPTS: unknown operand
ash: BASHOPTS: unknown operand
ash: SHELLOPTS: parameter not set or null
zsh2 SHELLOPTS and BASHOPTS are non-empty

[zsh stdout] Expected 'shellopts is set\nbashopts is set\n', got ''
[zsh status] Expected 0, got 1

stdout:
stderr: 
test: unknown condition: -v
test: unknown condition: -v
zsh: SHELLOPTS: parameter not set
mksh2 SHELLOPTS and BASHOPTS are non-empty

[mksh stdout] Expected 'shellopts is set\nbashopts is set\n', got ''

stdout:
stderr: 
mksh: <stdin>[3]: test: SHELLOPTS: unexpected operator/operand
mksh: <stdin>[6]: test: BASHOPTS: unexpected operator/operand
mksh: <stdin>[9]: SHELLOPTS: parameter null or not set
ksh2 SHELLOPTS and BASHOPTS are non-empty

[ksh stdout] Expected 'shellopts is set\nbashopts is set\n', got ''
[ksh status] Expected 0, got 1

stdout:
stderr: 
E: ksh: <stdin>[9]: SHELLOPTS: parameter null or not set
toysh2 SHELLOPTS and BASHOPTS are non-empty

[toysh stdout] Expected 'shellopts is set\nbashopts is set\n', got ''
[toysh status] Expected 0, got 1

stdout:
stderr: 
test: too many arguments
test: too many arguments
main: line 9: sh: SHELLOPTS: 
main: line 10: sh: BASHOPTS: 
sush2 SHELLOPTS and BASHOPTS are non-empty

[sush stdout] Expected 'shellopts is set\nbashopts is set\n', got ''
[sush status] Expected 0, got 1

stdout:
stderr: 
test: ā€˜-v’: unary operator expected
test: ā€˜-v’: unary operator expected
/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 9: SHELLOPTS: 
/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 10: BASHOPTS: 
osh2 SHELLOPTS and BASHOPTS are non-empty

[osh stdout] Expected 'shellopts is set\nbashopts is set\n', got 'shellopts is set\n'
[osh status] Expected 0, got 1

stdout:
shellopts is set
stderr:
  echo bashopts ${BASHOPTS:?} > /dev/null
                  ^~~~~~~~
[ stdin ]:10: fatal: Var BASHOPTS is unset
dash3 SHELLOPTS reflects flags like sh -x

[dash stdout] Expected 'xtrace\n', got ''
[dash status] Expected 0, got 1

stdout:
stderr: 
+ echo
ash3 SHELLOPTS reflects flags like sh -x

[ash stdout] Expected 'xtrace\n', got ''
[ash status] Expected 0, got 1

stdout:
stderr: 
+ echo
zsh3 SHELLOPTS reflects flags like sh -x

[zsh stdout] Expected 'xtrace\n', got ''
[zsh status] Expected 0, got 1

stdout:
stderr: 
+zsh:1> echo
mksh3 SHELLOPTS reflects flags like sh -x

[mksh stdout] Expected 'xtrace\n', got ''
[mksh status] Expected 0, got 1

stdout:
stderr: 
+ echo
ksh3 SHELLOPTS reflects flags like sh -x

[ksh stdout] Expected 'xtrace\n', got ''
[ksh status] Expected 0, got 1

stdout:
stderr: 
+ echo
toysh3 SHELLOPTS reflects flags like sh -x

[toysh stdout] Expected 'xtrace\n', got ''
[toysh status] Expected 0, got 1

stdout:
stderr: 
sh: Unknown option 'x' (see "sh --help")
sush3 SHELLOPTS reflects flags like sh -x

[sush stdout] Expected 'xtrace\n', got ''
[sush status] Expected 0, got 1

stdout:
stderr: 
: line : set: -x: invalid option
dash4 export SHELLOPTS does cross-process tracing

[dash stdout] Expected "+ echo 1\n1\nsh -c 'echo 2'\n+ echo 2\n2\n", got '+ echo 1\n1\nsh -c echo 2\n2\n'

stdout:
+ echo 1
1
sh -c echo 2
2
stderr:
ash4 export SHELLOPTS does cross-process tracing

[ash stdout] Expected "+ echo 1\n1\nsh -c 'echo 2'\n+ echo 2\n2\n", got "+ echo 1\n1\nsh -c 'echo 2'\n2\n"

stdout:
+ echo 1
1
sh -c 'echo 2'
2
stderr:
zsh4 export SHELLOPTS does cross-process tracing

[zsh stdout] Expected "+ echo 1\n1\nsh -c 'echo 2'\n+ echo 2\n2\n", got "+zsh:4> echo 1\n1\nsh -c 'echo 2'\n2\n"

stdout:
+zsh:4> echo 1
1
sh -c 'echo 2'
2
stderr:
mksh4 export SHELLOPTS does cross-process tracing

[mksh stdout] Expected "+ echo 1\n1\nsh -c 'echo 2'\n+ echo 2\n2\n", got "+ echo 1\n1\nsh -c 'echo 2'\n2\n"

stdout:
+ echo 1
1
sh -c 'echo 2'
2
stderr:
ksh4 export SHELLOPTS does cross-process tracing

[ksh stdout] Expected "+ echo 1\n1\nsh -c 'echo 2'\n+ echo 2\n2\n", got "+ echo 1\n1\nsh -c 'echo 2'\n2\n"

stdout:
+ echo 1
1
sh -c 'echo 2'
2
stderr:
toysh4 export SHELLOPTS does cross-process tracing

[toysh stdout] Expected "+ echo 1\n1\nsh -c 'echo 2'\n+ echo 2\n2\n", got ' echo 1 \n1\n $SH -c "echo 2" \n2\n'

stdout:
 echo 1 
1
 $SH -c "echo 2" 
2
stderr:
sush4 export SHELLOPTS does cross-process tracing

[sush stdout] Expected "+ echo 1\n1\nsh -c 'echo 2'\n+ echo 2\n2\n", got '/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: set: -x: invalid option\n1\n2\n'

stdout:
/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: set: -x: invalid option
1
2
stderr:
brush4 export SHELLOPTS does cross-process tracing

[brush stdout] Expected "+ echo 1\n1\nsh -c 'echo 2'\n+ echo 2\n2\n", got "+ echo 1\n1\nsh -c 'echo 2'\n2\n"

stdout:
+ echo 1
1
sh -c 'echo 2'
2
stderr:
dash5 export SHELLOPTS does cross-process tracing with bash

[dash stdout] Expected "+ echo 1\n1\nsh -c 'echo 2'\n+ echo 2\n2\n", got '+ echo 1\n1\nsh -c echo 2\n2\n'

stdout:
+ echo 1
1
sh -c echo 2
2
stderr:
ash5 export SHELLOPTS does cross-process tracing with bash

[ash stdout] Expected "+ echo 1\n1\nsh -c 'echo 2'\n+ echo 2\n2\n", got "+ echo 1\n1\nsh -c 'echo 2'\n2\n"

stdout:
+ echo 1
1
sh -c 'echo 2'
2
stderr:
zsh5 export SHELLOPTS does cross-process tracing with bash

[zsh stdout] Expected "+ echo 1\n1\nsh -c 'echo 2'\n+ echo 2\n2\n", got "+zsh:4> echo 1\n1\nsh -c 'echo 2'\n2\n"

stdout:
+zsh:4> echo 1
1
sh -c 'echo 2'
2
stderr:
mksh5 export SHELLOPTS does cross-process tracing with bash

[mksh stdout] Expected "+ echo 1\n1\nsh -c 'echo 2'\n+ echo 2\n2\n", got "+ echo 1\n1\nsh -c 'echo 2'\n2\n"

stdout:
+ echo 1
1
sh -c 'echo 2'
2
stderr:
ksh5 export SHELLOPTS does cross-process tracing with bash

[ksh stdout] Expected "+ echo 1\n1\nsh -c 'echo 2'\n+ echo 2\n2\n", got "+ echo 1\n1\nsh -c 'echo 2'\n2\n"

stdout:
+ echo 1
1
sh -c 'echo 2'
2
stderr:
toysh5 export SHELLOPTS does cross-process tracing with bash

[toysh stdout] Expected "+ echo 1\n1\nsh -c 'echo 2'\n+ echo 2\n2\n", got ' echo 1 \n1\nsh -c "echo 2" \n2\n'

stdout:
 echo 1 
1
sh -c "echo 2" 
2
stderr:
sush5 export SHELLOPTS does cross-process tracing with bash

[sush stdout] Expected "+ echo 1\n1\nsh -c 'echo 2'\n+ echo 2\n2\n", got '/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: set: -x: invalid option\n1\n2\n'

stdout:
/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: set: -x: invalid option
1
2
stderr:
bash7 If shopt --set xtrace is allowed, it should update SHELLOPTS, not BASHOPTS

stdout:
stderr: 
dash7 If shopt --set xtrace is allowed, it should update SHELLOPTS, not BASHOPTS

[dash stdout] Expected 'SHELLOPTS=xtrace\nSHELLOPTS=xtrace\nSHELLOPTS=\n' Got 'SHELLOPTS=\nSHELLOPTS=\nSHELLOPTS=\n'

stdout:
SHELLOPTS=
SHELLOPTS=
SHELLOPTS=
stderr:
dash: 3: shopt: not found
+ echo SHELLOPTS=
+ set +x
ash7 If shopt --set xtrace is allowed, it should update SHELLOPTS, not BASHOPTS

[ash stdout] Expected 'SHELLOPTS=xtrace\nSHELLOPTS=xtrace\nSHELLOPTS=\n' Got 'SHELLOPTS=\nSHELLOPTS=\nSHELLOPTS=\n'

stdout:
SHELLOPTS=
SHELLOPTS=
SHELLOPTS=
stderr:
ash: shopt: not found
+ echo 'SHELLOPTS='
+ set +x
zsh7 If shopt --set xtrace is allowed, it should update SHELLOPTS, not BASHOPTS

[zsh stdout] Expected 'SHELLOPTS=xtrace\nSHELLOPTS=xtrace\nSHELLOPTS=\n' Got 'SHELLOPTS=\nSHELLOPTS=\nSHELLOPTS=\n'

stdout:
SHELLOPTS=
SHELLOPTS=
SHELLOPTS=
stderr:
zsh: command not found: shopt
+zsh:6> echo 'SHELLOPTS='
+zsh:7> set +x
mksh7 If shopt --set xtrace is allowed, it should update SHELLOPTS, not BASHOPTS

[mksh stdout] Expected 'SHELLOPTS=xtrace\nSHELLOPTS=xtrace\nSHELLOPTS=\n' Got 'SHELLOPTS=\nSHELLOPTS=\nSHELLOPTS=\n'

stdout:
SHELLOPTS=
SHELLOPTS=
SHELLOPTS=
stderr:
mksh: <stdin>[3]: shopt: not found
+ echo 'SHELLOPTS='
+ set +x
ksh7 If shopt --set xtrace is allowed, it should update SHELLOPTS, not BASHOPTS

[ksh stdout] Expected 'SHELLOPTS=xtrace\nSHELLOPTS=xtrace\nSHELLOPTS=\n' Got 'SHELLOPTS=\nSHELLOPTS=\nSHELLOPTS=\n'

stdout:
SHELLOPTS=
SHELLOPTS=
SHELLOPTS=
stderr:
E: ksh: <stdin>[3]: shopt: inaccessible or not found
+ echo 'SHELLOPTS='
+ set +x
toysh7 If shopt --set xtrace is allowed, it should update SHELLOPTS, not BASHOPTS

[toysh stdout] Expected 'SHELLOPTS=xtrace\nSHELLOPTS=xtrace\nSHELLOPTS=\n' Got ''
[toysh status] Expected 0, got -6

stdout:
stderr: 
munmap_chunk(): invalid pointer
sush7 If shopt --set xtrace is allowed, it should update SHELLOPTS, not BASHOPTS

[sush stdout] Expected 'SHELLOPTS=xtrace\nSHELLOPTS=xtrace\nSHELLOPTS=\n' Got 'SHELLOPTS=\nSHELLOPTS=\nSHELLOPTS=\n'

stdout:
SHELLOPTS=
SHELLOPTS=
SHELLOPTS=
stderr:
sush: shopt: --: invalid shell option name
shopt: usage: shopt [-su] [optname ...]
/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 5: set: -x: invalid option
brush7 If shopt --set xtrace is allowed, it should update SHELLOPTS, not BASHOPTS

[brush stdout] Expected 'SHELLOPTS=xtrace\nSHELLOPTS=xtrace\nSHELLOPTS=\n' Got 'SHELLOPTS=braceexpand:hashall:interactive-comments\nSHELLOPTS=braceexpand:hashall:interactive-comments:xtrace\nSHELLOPTS=braceexpand:hashall:interactive-comments\n'

stdout:
SHELLOPTS=braceexpand:hashall:interactive-comments
SHELLOPTS=braceexpand:hashall:interactive-comments:xtrace
SHELLOPTS=braceexpand:hashall:interactive-comments
stderr:
error: unexpected argument '--set' found

  tip: to pass '--set' as a value, use '-- --set'

Usage: shopt [OPTIONS] [OPTIONS]...

For more information, try '--help'.

+ echo SHELLOPTS=braceexpand:hashall:interactive-comments:xtrace
+ set +x
osh7 If shopt --set xtrace is allowed, it should update SHELLOPTS, not BASHOPTS

[osh stdout] Expected 'SHELLOPTS=xtrace\nSHELLOPTS=xtrace\nSHELLOPTS=\n' Got 'SHELLOPTS=hashall\nSHELLOPTS=hashall:xtrace\nSHELLOPTS=hashall\n'

stdout:
SHELLOPTS=hashall
SHELLOPTS=hashall:xtrace
SHELLOPTS=hashall
stderr:
+ echo 'SHELLOPTS=hashall'
+ set -x
+ echo 'SHELLOPTS=hashall:xtrace'
+ set '+x'