ble-features () { run-file ble-features "$@" } run-file () { local spec_name=$1; shift; sh-spec spec/$spec_name.test.sh --compare-shells --oils-bin-dir $PWD/bin "$@" }
spec test index / oilshell.org
23 passed, 57 OK, 14 not implemented, 4 BUG, 0 failed, 0 timeouts, 0 cases skipped
zsh | 0 [bash_unset] local-unset / dynamic-unset for localvar stdout: [global,local,(unset)] v: (unset) [global,local,(unlocal)] v: (unset)stderr: |
mksh | 0 [bash_unset] local-unset / dynamic-unset for localvar stdout: [global,local,(unset)] v: global [global,local,(unlocal)] v: globalstderr: |
ash | 0 [bash_unset] local-unset / dynamic-unset for localvar stdout: [global,local,(unset)] v: (unset) [global,local,(unlocal)] v: (unset)stderr: |
dash | 0 [bash_unset] local-unset / dynamic-unset for localvar stdout: [global,local,(unset)] v: (unset) [global,local,(unlocal)] v: (unset)stderr: |
yash | 0 [bash_unset] local-unset / dynamic-unset for localvar stdout: [global,local,(unset)] v: global [global,local,(unlocal)] v: globalstderr: |
osh | 0 [bash_unset] local-unset / dynamic-unset for localvar stdout: [global,local,(unset)] v: global [global,local,(unlocal)] v: globalstderr: |
bash-4 | 1 [bash_unset] local-unset / dynamic-unset for localvar (mutated from tempenv) stdout: [global,tempenv,local,(unset)] v: global [global,tempenv,local,(unlocal)] v: globalstderr: |
zsh | 1 [bash_unset] local-unset / dynamic-unset for localvar (mutated from tempenv) stdout: [global,tempenv,local,(unset)] v: (unset) [global,tempenv,local,(unlocal)] v: (unset)stderr: |
mksh | 1 [bash_unset] local-unset / dynamic-unset for localvar (mutated from tempenv) stdout: [global,tempenv,local,(unset)] v: tempenv [global,tempenv,local,(unlocal)] v: tempenvstderr: |
ash | 1 [bash_unset] local-unset / dynamic-unset for localvar (mutated from tempenv) stdout: [global,tempenv,local,(unset)] v: (unset) [global,tempenv,local,(unlocal)] v: (unset)stderr: |
dash | 1 [bash_unset] local-unset / dynamic-unset for localvar (mutated from tempenv) stdout: [global,tempenv,local,(unset)] v: (unset) [global,tempenv,local,(unlocal)] v: (unset)stderr: |
yash | 1 [bash_unset] local-unset / dynamic-unset for localvar (mutated from tempenv) stdout: [global,tempenv,local,(unset)] v: tempenv [global,tempenv,local,(unlocal)] v: tempenvstderr: |
osh | 1 [bash_unset] local-unset / dynamic-unset for localvar (mutated from tempenv) stdout: [global,tempenv,local,(unset)] v: tempenv [global,tempenv,local,(unlocal)] v: tempenvstderr: |
zsh | 2 [bash_unset] local-unset / dynamic-unset for tempenv stdout: [global,tempenv,(unset)] v: (unset) [global,tempenv,(unlocal)] v: (unset)stderr: |
mksh | 2 [bash_unset] local-unset / dynamic-unset for tempenv stdout: [global,tempenv,(unset)] v: (unset) [global,tempenv,(unlocal)] v: (unset)stderr: |
ash | 2 [bash_unset] local-unset / dynamic-unset for tempenv stdout: [global,tempenv,(unset)] v: (unset) [global,tempenv,(unlocal)] v: (unset)stderr: |
dash | 2 [bash_unset] local-unset / dynamic-unset for tempenv stdout: [global,tempenv,(unset)] v: (unset) [global,tempenv,(unlocal)] v: (unset)stderr: |
bash-4 | 3 [bash_unset] function call with tempenv vs tempenv-eval stdout: [global] v: global [global,local] v: (unset) [global,local+unset] v: (unset) [global,local+unlocal] v: global [global,tempenv] v: tempenv [global,tempenv,local] v: tempenv [global,tempenv,local+unset] v: global [global,tempenv,local+unlocal] v: global [global,tempenv,(eval)] v: tempenv [global,tempenv,(eval),local] v: tempenv [global,tempenv,(eval),local+unset] v: (unset) [global,tempenv,(eval),local+unlocal] v: tempenvstderr: |
zsh | 3 [bash_unset] function call with tempenv vs tempenv-eval stdout: [global] v: global [global,local] v: [global,local+unset] v: (unset) [global,local+unlocal] v: (unset) [global,tempenv] v: tempenv [global,tempenv,local] v: [global,tempenv,local+unset] v: (unset) [global,tempenv,local+unlocal] v: (unset) [global,tempenv,(eval)] v: tempenv [global,tempenv,(eval),local] v: [global,tempenv,(eval),local+unset] v: (unset) [global,tempenv,(eval),local+unlocal] v: (unset)stderr: |
mksh | 3 [bash_unset] function call with tempenv vs tempenv-eval stdout: [global] v: global [global,local] v: (unset) [global,local+unset] v: global [global,local+unlocal] v: global [global,tempenv] v: tempenv [global,tempenv,local] v: (unset) [global,tempenv,local+unset] v: tempenv [global,tempenv,local+unlocal] v: tempenv [global,tempenv,(eval)] v: tempenv [global,tempenv,(eval),local] v: (unset) [global,tempenv,(eval),local+unset] v: tempenv [global,tempenv,(eval),local+unlocal] v: tempenvstderr: |
ash | 3 [bash_unset] function call with tempenv vs tempenv-eval stdout: [global] v: global [global,local] v: (unset) [global,local+unset] v: (unset) [global,local+unlocal] v: (unset) [global,tempenv] v: tempenv [global,tempenv,local] v: tempenv [global,tempenv,local+unset] v: (unset) [global,tempenv,local+unlocal] v: (unset) [global,tempenv,(eval)] v: tempenv [global,tempenv,(eval),local] v: (unset) [global,tempenv,(eval),local+unset] v: (unset) [global,tempenv,(eval),local+unlocal] v: (unset)stderr: |
dash | 3 [bash_unset] function call with tempenv vs tempenv-eval stdout: [global] v: global [global,local] v: global [global,local+unset] v: (unset) [global,local+unlocal] v: (unset) [global,tempenv] v: tempenv [global,tempenv,local] v: tempenv [global,tempenv,local+unset] v: (unset) [global,tempenv,local+unlocal] v: (unset) [global,tempenv,(eval)] v: tempenv [global,tempenv,(eval),local] v: tempenv [global,tempenv,(eval),local+unset] v: (unset) [global,tempenv,(eval),local+unlocal] v: (unset)stderr: |
yash | 3 [bash_unset] function call with tempenv vs tempenv-eval stdout: [global] v: global [global,local] v: (unset) [global,local+unset] v: global [global,local+unlocal] v: global [global,tempenv] v: tempenv [global,tempenv,local] v: (unset) [global,tempenv,local+unset] v: tempenv [global,tempenv,local+unlocal] v: tempenv [global,tempenv,(eval)] v: tempenv [global,tempenv,(eval),local] v: (unset) [global,tempenv,(eval),local+unset] v: tempenv [global,tempenv,(eval),local+unlocal] v: tempenvstderr: |
osh | 3 [bash_unset] function call with tempenv vs tempenv-eval stdout: [global] v: global [global,local] v: (unset) [global,local+unset] v: global [global,local+unlocal] v: global [global,tempenv] v: tempenv [global,tempenv,local] v: (unset) [global,tempenv,local+unset] v: tempenv [global,tempenv,local+unlocal] v: tempenv [global,tempenv,(eval)] v: tempenv [global,tempenv,(eval),local] v: (unset) [global,tempenv,(eval),local+unset] v: tempenv [global,tempenv,(eval),local+unlocal] v: tempenvstderr: |
zsh | 4 [bash_unset] localvar-inherit from tempenv stdout: [global,(local)] v: [global,tempenv,(local)] v: [xglobal,(local)] v: [global,(func),(local)] v: [global,tempenv,(func),(local)] v: [xglobal,(func),(local)] v: [global,local,(func),(local)] v:stderr: |
mksh | 4 [bash_unset] localvar-inherit from tempenv stdout: [global,(local)] v: (unset) [global,tempenv,(local)] v: (unset) [xglobal,(local)] v: (unset) [global,(func),(local)] v: (unset) [global,tempenv,(func),(local)] v: (unset) [xglobal,(func),(local)] v: (unset) [global,local,(func),(local)] v: (unset)stderr: |
ash | 4 [bash_unset] localvar-inherit from tempenv stdout: [global,(local)] v: (unset) [global,tempenv,(local)] v: tempenv [xglobal,(local)] v: (unset) [global,(func),(local)] v: (unset) [global,tempenv,(func),(local)] v: (unset) [xglobal,(func),(local)] v: (unset) [global,local,(func),(local)] v: (unset)stderr: |
dash | 4 [bash_unset] localvar-inherit from tempenv stdout: [global,(local)] v: global [global,tempenv,(local)] v: tempenv [xglobal,(local)] v: global [global,(func),(local)] v: global [global,tempenv,(func),(local)] v: tempenv [xglobal,(func),(local)] v: global [global,local,(func),(local)] v: localstderr: |
yash | 4 [bash_unset] localvar-inherit from tempenv stdout: [global,(local)] v: (unset) [global,tempenv,(local)] v: (unset) [xglobal,(local)] v: (unset) [global,(func),(local)] v: (unset) [global,tempenv,(func),(local)] v: (unset) [xglobal,(func),(local)] v: (unset) [global,local,(func),(local)] v: (unset)stderr: |
osh | 4 [bash_unset] localvar-inherit from tempenv stdout: [global,(local)] v: (unset) [global,tempenv,(local)] v: (unset) [xglobal,(local)] v: (unset) [global,(func),(local)] v: (unset) [global,tempenv,(func),(local)] v: (unset) [xglobal,(func),(local)] v: (unset) [global,local,(func),(local)] v: (unset)stderr: |
mksh | 5 [bash_unset] nested context by tempenv-eval stdout: [global,tempenv1,local1] v: local1 [global,tempenv1,local1,tempenv2,(eval)] v: tempenv2 [global,tempenv1,local1,tempenv2,(eval),local2] v: local2 [global,tempenv1,local1] v: local2 (after)stderr: |
ash | 5 [bash_unset] nested context by tempenv-eval stdout: [global,tempenv1,local1] v: local1 [global,tempenv1,local1,tempenv2,(eval)] v: tempenv2 [global,tempenv1,local1,tempenv2,(eval),local2] v: local2 [global,tempenv1,local1] v: local2 (after)stderr: |
dash | 5 [bash_unset] nested context by tempenv-eval stdout: [global,tempenv1,local1] v: local1 [global,tempenv1,local1,tempenv2,(eval)] v: tempenv2 [global,tempenv1,local1,tempenv2,(eval),local2] v: local2 [global,tempenv1,local1] v: local2 (after)stderr: |
yash | 5 [bash_unset] nested context by tempenv-eval stdout: [global,tempenv1,local1] v: local1 [global,tempenv1,local1,tempenv2,(eval)] v: tempenv2 [global,tempenv1,local1,tempenv2,(eval),local2] v: local2 [global,tempenv1,local1] v: local2 (after)stderr: |
bash-4 | 6 [bash_unset] local-unset / dynamic-unset for localvar on nested-context stdout: [global,tempenv1,local1,tempenv2,(eval),local2,(unset)] v: local1 [global,tempenv1,local1,tempenv2,(eval),local2,(unlocal)] v: local1stderr: |
zsh | 6 [bash_unset] local-unset / dynamic-unset for localvar on nested-context stdout: [global,tempenv1,local1,tempenv2,(eval),local2,(unset)] v: (unset) [global,tempenv1,local1,tempenv2,(eval),local2,(unlocal)] v: (unset)stderr: |
mksh | 6 [bash_unset] local-unset / dynamic-unset for localvar on nested-context stdout: [global,tempenv1,local1,tempenv2,(eval),local2,(unset)] v: tempenv1 [global,tempenv1,local1,tempenv2,(eval),local2,(unlocal)] v: tempenv1stderr: |
ash | 6 [bash_unset] local-unset / dynamic-unset for localvar on nested-context stdout: [global,tempenv1,local1,tempenv2,(eval),local2,(unset)] v: (unset) [global,tempenv1,local1,tempenv2,(eval),local2,(unlocal)] v: (unset)stderr: |
dash | 6 [bash_unset] local-unset / dynamic-unset for localvar on nested-context stdout: [global,tempenv1,local1,tempenv2,(eval),local2,(unset)] v: (unset) [global,tempenv1,local1,tempenv2,(eval),local2,(unlocal)] v: (unset)stderr: |
yash | 6 [bash_unset] local-unset / dynamic-unset for localvar on nested-context stdout: [global,tempenv1,local1,tempenv2,(eval),local2,(unset)] v: tempenv1 [global,tempenv1,local1,tempenv2,(eval),local2,(unlocal)] v: tempenv1stderr: |
osh | 6 [bash_unset] local-unset / dynamic-unset for localvar on nested-context stdout: [global,tempenv1,local1,tempenv2,(eval),local2,(unset)] v: local1 [global,tempenv1,local1,tempenv2,(eval),local2,(unlocal)] v: local1stderr: |
zsh | 7 [bash_unset] dynamic-unset for nested localvars stdout: [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: local3 [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 1) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 2) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 3) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 4)stderr: |
mksh | 7 [bash_unset] dynamic-unset for nested localvars stdout: [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: local3 [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: tempenv1 (unlocal 1) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 2) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 3) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 4)stderr: |
ash | 7 [bash_unset] dynamic-unset for nested localvars stdout: [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: local3 [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 1) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 2) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 3) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 4)stderr: |
dash | 7 [bash_unset] dynamic-unset for nested localvars stdout: [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: local3 [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 1) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 2) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 3) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 4)stderr: |
yash | 7 [bash_unset] dynamic-unset for nested localvars stdout: [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: local3 [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: tempenv1 (unlocal 1) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: global (unlocal 2) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 3) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: (unset) (unlocal 4)stderr: |
osh | 7 [bash_unset] dynamic-unset for nested localvars stdout: [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: local3 [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: local2 (unlocal 1) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: local1 (unlocal 2) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: tempenv1 (unlocal 3) [global,tempenv1/local1,tempenv2/local2,tempenv3/local3] v: global (unlocal 4)stderr: |
zsh | 8 [bash_unset] dynamic-unset for nested tempenvs stdout: [global,tempenv1,tempenv2,tempenv3] v: tempenv3 [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 1) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 2) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 3) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 4)stderr: |
mksh | 8 [bash_unset] dynamic-unset for nested tempenvs stdout: [global,tempenv1,tempenv2,tempenv3] v: tempenv3 [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 1) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 2) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 3) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 4)stderr: |
ash | 8 [bash_unset] dynamic-unset for nested tempenvs stdout: [global,tempenv1,tempenv2,tempenv3] v: tempenv3 [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 1) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 2) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 3) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 4)stderr: |
dash | 8 [bash_unset] dynamic-unset for nested tempenvs stdout: [global,tempenv1,tempenv2,tempenv3] v: tempenv3 [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 1) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 2) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 3) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 4)stderr: |
yash | 8 [bash_unset] dynamic-unset for nested tempenvs stdout: [global,tempenv1,tempenv2,tempenv3] v: tempenv3 [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 1) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 2) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 3) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 4)stderr: |
osh | 8 [bash_unset] dynamic-unset for nested tempenvs stdout: [global,tempenv1,tempenv2,tempenv3] v: tempenv3 [global,tempenv1,tempenv2,tempenv3] v: tempenv2 (unlocal 1) [global,tempenv1,tempenv2,tempenv3] v: tempenv1 (unlocal 2) [global,tempenv1,tempenv2,tempenv3] v: global (unlocal 3) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unlocal 4)stderr: |
zsh | 9 [bash_unset] local-unset for nested tempenvs stdout: [global,tempenv1,tempenv2,tempenv3] v: tempenv3 [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 1) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 2) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 3) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 4)stderr: |
mksh | 9 [bash_unset] local-unset for nested tempenvs stdout: [global,tempenv1,tempenv2,tempenv3] v: tempenv3 [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 1) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 2) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 3) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 4)stderr: |
ash | 9 [bash_unset] local-unset for nested tempenvs stdout: [global,tempenv1,tempenv2,tempenv3] v: tempenv3 [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 1) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 2) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 3) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 4)stderr: |
dash | 9 [bash_unset] local-unset for nested tempenvs stdout: [global,tempenv1,tempenv2,tempenv3] v: tempenv3 [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 1) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 2) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 3) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 4)stderr: |
yash | 9 [bash_unset] local-unset for nested tempenvs stdout: [global,tempenv1,tempenv2,tempenv3] v: tempenv3 [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 1) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 2) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 3) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 4)stderr: |
osh | 9 [bash_unset] local-unset for nested tempenvs stdout: [global,tempenv1,tempenv2,tempenv3] v: tempenv3 [global,tempenv1,tempenv2,tempenv3] v: tempenv2 (unset 1) [global,tempenv1,tempenv2,tempenv3] v: tempenv1 (unset 2) [global,tempenv1,tempenv2,tempenv3] v: global (unset 3) [global,tempenv1,tempenv2,tempenv3] v: (unset) (unset 4)stderr: |
ash | 10 [compat_array] ${arr} is ${arr[0]} stdout: stderr: |
dash | 10 [compat_array] ${arr} is ${arr[0]} stdout: stderr: |
yash | 10 [compat_array] ${arr} is ${arr[0]} stdout: ['foo', 'bar', 'baz', 'foo', 'bar', 'baz']stderr: |
ash | 11 [compat_array] scalar write to arrays stdout: stderr: |
dash | 11 [compat_array] scalar write to arrays stdout: stderr: |
yash | 11 [compat_array] scalar write to arrays stdout: ['1']stderr: |
zsh | 12 [compat_array] scalar write to associative arrays stdout: ['1', 'hello', 'world']stderr: |
mksh | 12 [compat_array] scalar write to associative arrays stdout: stderr: |
ash | 12 [compat_array] scalar write to associative arrays stdout: stderr: |
dash | 12 [compat_array] scalar write to associative arrays stdout: stderr: |
yash | 12 [compat_array] scalar write to associative arrays stdout: stderr: |
zsh | 13 [compat_array] ${alpha@a} stdout: stderr: zsh: no matches found: [1]=2 zsh: bad substitution |
mksh | 13 [compat_array] ${alpha@a} stdout: stderr: mksh: <stdin>[1]: syntax error: '(' unexpected |
ash | 13 [compat_array] ${alpha@a} stdout: stderr: ash: syntax error: unexpected "(" |
dash | 13 [compat_array] ${alpha@a} stdout: stderr: dash: 1: Syntax error: "(" unexpected |
yash | 13 [compat_array] ${alpha@a} stdout: stderr: syntax error: invalid use of `(' |