Results for assign.test.sh

statusdashbash-4mkshzshosh
pass 2236333542
ok 116781
N-I 91400
BUG 54340
FAIL 00004
total4747474747
casedashbash-4mkshzshoshdescription
0pass pass pass pass pass Env value doesn't persist
1pass pass pass pass pass Env value with equals
2pass pass BUG pass pass Env binding can use preceding bindings, but not subsequent ones
details
3pass pass pass pass pass Env value with two quotes
4pass pass pass pass pass Env value with escaped <
5pass pass pass pass pass FOO=foo echo [foo]
6pass pass pass pass pass FOO=foo fun
7BUG pass ok pass pass Multiple temporary envs on the stack
detailsdetails
8pass pass pass pass pass Escaped = in command name
9pass pass ok ok pass Env binding not allowed before compound command
detailsdetails
10pass pass pass ok pass Trying to run keyword 'for'
details
11pass pass pass pass pass Empty env binding
12pass pass pass pass pass Assignment doesn't do word splitting
13pass pass pass pass pass Assignment doesn't do glob expansion
14pass BUG pass pass FAIL Env binding in readonly/declare is NOT exported! (pitfall)
detailsdetails
15pass pass pass ok pass assignments / array assignments not interpreted after 'echo'
details
16ok ok ok pass pass dynamic local variables (and splitting)
detailsdetailsdetails
17pass pass pass pass pass readonly x= gives empty string (regression)
18ok pass pass BUG pass 'local x' does not set variable
detailsdetails
19ok pass pass BUG pass 'local -a x' does not set variable
detailsdetails
20N-I pass pass BUG pass 'local x' and then array assignment
detailsdetails
21N-I pass N-I pass pass 'declare -A' and then dict assignment
detailsdetails
22pass pass pass pass pass declare in an if statement
23pass pass pass pass pass Modify a temporary binding
24ok BUG BUG ok pass Reveal existence of "temp frame" (All shells disagree here!!!)
detailsdetailsdetailsdetails
25ok pass BUG ok pass Test above without 'local' (which is not POSIX)
detailsdetailsdetails
26ok ok pass ok pass Using ${x-default} after unsetting local shadowing a global
detailsdetailsdetails
27ok BUG pass ok pass Using ${x-default} after unsetting a temp binding shadowing a global
detailsdetailsdetails
28BUG pass pass pass pass static assignment doesn't split
details
29BUG pass pass pass pass aliased assignment doesn't split
details
30ok ok ok pass pass assignment using dynamic keyword (splits in most shells, not in zsh/osh)
detailsdetailsdetails
31ok ok ok pass pass assignment using dynamic var names doesn't split
detailsdetailsdetails
32BUG pass pass pass pass assign and glob
details
33N-I pass pass pass pass declare and glob
details
34ok ok ok pass pass readonly $x where x='b c'
detailsdetailsdetails
35ok pass pass pass pass readonly a=(1 2) no_value c=(3 4) makes 'no_value' readonly
details
36pass pass pass pass pass export a=1 no_value c=2
37BUG pass pass pass pass local a=loc $var c=loc
details
38pass pass pass BUG FAIL redirect after assignment builtin (what's going on with dash/bash/mksh here?)
detailsdetails
39pass pass pass pass FAIL redirect after command sub (like case above but without assignment builtin)
details
40pass BUG pass pass FAIL redirect after bare assignment
detailsdetails
41N-I ok pass pass ok redirect after declare -p
detailsdetailsdetails
42N-I pass pass pass pass declare -a arr does not remove existing arrays (OSH regression)
details
43N-I pass N-I pass pass declare -A dict does not remove existing arrays (OSH regression)
detailsdetails
44N-I pass N-I pass pass "readonly -a arr" and "readonly -A dict" should not not remove existing arrays
detailsdetails
45N-I N-I N-I ok pass "declare -a arr" and "readonly -a a" creates an empty array (OSH)
detailsdetailsdetailsdetails
46N-I pass ok pass pass readonly array should not be modified by a+=(1)
detailsdetails
168 passed, 33 OK, 14 not implemented, 16 BUG, 4 failed, 0 timeouts, 0 cases skipped
4 failed under osh

Details on runs that didn't PASS

mksh2 Env binding can use preceding bindings, but not subsequent ones

stdout:
foo
[][]
baz
stderr:
dash7 Multiple temporary envs on the stack

stdout:
f [] [A]
--- g() ---
None
None
None
None
p
--- f() ---
None
None
None
None
None
stderr:
mksh7 Multiple temporary envs on the stack

stdout:
f [] [A]
--- g() ---
f
[]
[A]
None
p
--- f() ---
f
[]
[A]
None
None
stderr:
mksh9 Env binding not allowed before compound command

stdout:
stderr: 
mksh: <stdin>[1]: syntax error: 'do' unexpected
zsh9 Env binding not allowed before compound command

stdout:
stderr: 
zsh: parse error near `for'
zsh10 Trying to run keyword 'for'

stdout:
stderr: 
zsh: parse error near `for'
bash-414 Env binding in readonly/declare is NOT exported! (pitfall)

stdout:
v=None
v2=
stderr:
osh14 Env binding in readonly/declare is NOT exported! (pitfall)

[osh stdout] Expected 'v=None\nv2=foo\n', got ''
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2528, in EvalWordSequence2
    fast_str, words, meta_offset)
  File "/home/uke/oil/osh/word_eval.py", line 2408, in _DetectAssignBuiltinStr
    meta_offset)
  File "/home/uke/oil/osh/word_eval.py", line 2369, in _EvalAssignBuiltin
    right = self.EvalRhsWord(rhs)
  File "/home/uke/oil/osh/word_eval.py", line 2194, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/uke/oil/osh/word_eval.py", line 2103, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1881, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2629, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 691, in RunCommandSub
    status, stdout_str, stderr_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 619, in CaptureStdout
    fds, w, exc = select.select([r,r2], [], [r,r2], -1)
NameError: global name 'select' is not defined
zsh15 assignments / array assignments not interpreted after 'echo'

stdout:
stderr: 
zsh: no matches found: b[0]=2
dash16 dynamic local variables (and splitting)

stdout:
x='y a=b'
a=''
x='y'
a='b'
stderr:
bash-416 dynamic local variables (and splitting)

stdout:
x='y a=b'
a=''
x='y'
a='b'
stderr:
mksh16 dynamic local variables (and splitting)

stdout:
x='y a=b'
a=''
x='y'
a='b'
stderr:
dash18 'local x' does not set variable

stdout:
stderr: 
dash: 4: x: parameter not set
zsh18 'local x' does not set variable

stdout:
stderr: 
dash19 'local -a x' does not set variable

stdout:
stderr: 
dash: 3: local: -a: bad variable name
zsh19 'local -a x' does not set variable

stdout:
stderr: 
dash20 'local x' and then array assignment

stdout:
stderr: 
dash: 3: x[3]=foo: not found
dash: 4: Bad substitution
zsh20 'local x' and then array assignment

stdout:
o
stderr:
dash21 'declare -A' and then dict assignment

stdout:
stderr: 
dash: 1: declare: not found
dash: 3: foo[bar]=value: not found
dash: 4: Bad substitution
mksh21 'declare -A' and then dict assignment

stdout:
stderr: 
mksh: <stdin>[1]: declare: not found
mksh: <stdin>[3]: "bar": unexpected '"'
dash24 Reveal existence of "temp frame" (All shells disagree here!!!)

stdout:
x=temp-binding
x=mutated-temp
x=local
x=
x=global
stderr:
bash-424 Reveal existence of "temp frame" (All shells disagree here!!!)

stdout:
x=temp-binding
x=mutated-temp
x=local
x=global
x=global
stderr:
mksh24 Reveal existence of "temp frame" (All shells disagree here!!!)

stdout:
x=temp-binding
x=mutated-temp
x=local
x=mutated-temp
x=mutated-temp
stderr:
zsh24 Reveal existence of "temp frame" (All shells disagree here!!!)

stdout:
x=temp-binding
x=mutated-temp
x=local
x=
x=global
stderr:
dash25 Test above without 'local' (which is not POSIX)

stdout:
x=temp-binding
x=mutated-temp
x=
x=global
stderr:
mksh25 Test above without 'local' (which is not POSIX)

stdout:
x=temp-binding
x=mutated-temp
x=
x=
stderr:
zsh25 Test above without 'local' (which is not POSIX)

stdout:
x=temp-binding
x=mutated-temp
x=
x=global
stderr:
dash26 Using ${x-default} after unsetting local shadowing a global

stdout:
x=global
x=local
- operator = default
:- operator = default
stderr:
bash-426 Using ${x-default} after unsetting local shadowing a global

stdout:
x=global
x=local
- operator = default
:- operator = default
stderr:
zsh26 Using ${x-default} after unsetting local shadowing a global

stdout:
x=global
x=local
- operator = default
:- operator = default
stderr:
dash27 Using ${x-default} after unsetting a temp binding shadowing a global

stdout:
x=temp-binding
x=local
- operator = default
:- operator = default
stderr:
bash-427 Using ${x-default} after unsetting a temp binding shadowing a global

stdout:
x=temp-binding
x=local
- operator = global
:- operator = global
stderr:
zsh27 Using ${x-default} after unsetting a temp binding shadowing a global

stdout:
x=temp-binding
x=local
- operator = default
:- operator = default
stderr:
dash28 static assignment doesn't split

stdout:
['a', 'a b c', 'a']
stderr:
dash29 aliased assignment doesn't split

stdout:
['a', 'a']
stderr:
dash: 1: shopt: not found
dash30 assignment using dynamic keyword (splits in most shells, not in zsh/osh)

stdout:
['a', 'a']
stderr:
bash-430 assignment using dynamic keyword (splits in most shells, not in zsh/osh)

stdout:
['a', 'a']
stderr:
mksh30 assignment using dynamic keyword (splits in most shells, not in zsh/osh)

stdout:
['a', 'a']
stderr:
dash31 assignment using dynamic var names doesn't split

stdout:
['a', 'a']
['a b c', 'a b c']
stderr:
bash-431 assignment using dynamic var names doesn't split

stdout:
['a', 'a']
['a b c', 'a b c']
stderr:
mksh31 assignment using dynamic var names doesn't split

stdout:
['a', 'a']
['a b c', 'a b c']
stderr:
dash32 assign and glob

stdout:
['*']
['b']
stderr:
dash33 declare and glob

stdout:
['']
stderr:
dash: 3: typeset: not found
dash34 readonly $x where x='b c'

stdout:
stderr: 
dash: 4: a: is read only
bash-434 readonly $x where x='b c'

stdout:
status=1
status=1
status=1
stderr:
bash-4.4: line 4: a: readonly variable
bash-4.4: line 6: b: readonly variable
bash-4.4: line 8: c: readonly variable
mksh34 readonly $x where x='b c'

stdout:
stderr: 
mksh: <stdin>[4]: read-only: a
dash35 readonly a=(1 2) no_value c=(3 4) makes 'no_value' readonly

stdout:
stderr: 
dash: 1: Syntax error: "(" unexpected
dash37 local a=loc $var c=loc

stdout:
global
['loc', 'global', 'loc']
stderr:
zsh38 redirect after assignment builtin (what's going on with dash/bash/mksh here?)

stdout:
done
stderr:
osh38 redirect after assignment builtin (what's going on with dash/bash/mksh here?)

[osh stdout] Expected 'done\n', got ''
[osh stderr] Expected 'STDERR\n', got 'Traceback (most recent call last):\n File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>\n sys.exit(main(sys.argv))\n File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main\n return AppBundleMain(argv)\n File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain\n return shell.Main(\'osh\', arg_r, environ, login_shell, loader, readline)\n File "/home/uke/oil/core/shell.py", line 1253, in Main\n cmd_flags=cmd_eval.IsMainProgram)\n File "/home/uke/oil/core/main_loop.py", line 336, in Batch\n was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)\n File "/home/uke/oil/core/main_loop.py", line 401, in Batch2\n is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)\n File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch\n status = self._Execute(node)\n File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute\n status = self._Dispatch(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1875, in _Dispatch\n status = self._DoRedirect(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1648, in _DoRedirect\n status = self._Execute(node.child)\n File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute\n status = self._Dispatch(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch\n status = self._DoSimple(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple\n allow_assign=True)\n File "/home/uke/oil/osh/word_eval.py", line 2528, in EvalWordSequence2\n fast_str, words, meta_offset)\n File "/home/uke/oil/osh/word_eval.py", line 2408, in _DetectAssignBuiltinStr\n meta_offset)\n File "/home/uke/oil/osh/word_eval.py", line 2369, in _EvalAssignBuiltin\n right = self.EvalRhsWord(rhs)\n File "/home/uke/oil/osh/word_eval.py", line 2194, in EvalRhsWord\n return self.EvalWordToString(w)\n File "/home/uke/oil/osh/word_eval.py", line 2103, in EvalWordToString\n self._EvalWordPart(p, part_vals, 0)\n File "/home/uke/oil/osh/word_eval.py", line 1881, in _EvalWordPart\n quoted) # type: part_value_t\n File "/home/uke/oil/osh/word_eval.py", line 2629, in _EvalCommandSub\n stdout_str = self.shell_ex.RunCommandSub(cs_part)\n File "/home/uke/oil/core/executor.py", line 691, in RunCommandSub\n status, stdout_str, stderr_str = self.CaptureStdout(node)\n File "/home/uke/oil/core/executor.py", line 619, in CaptureStdout\n fds, w, exc = select.select([r,r2], [], [r,r2], -1)\nNameError: global name \'select\' is not defined\n'
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1875, in _Dispatch
    status = self._DoRedirect(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1648, in _DoRedirect
    status = self._Execute(node.child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2528, in EvalWordSequence2
    fast_str, words, meta_offset)
  File "/home/uke/oil/osh/word_eval.py", line 2408, in _DetectAssignBuiltinStr
    meta_offset)
  File "/home/uke/oil/osh/word_eval.py", line 2369, in _EvalAssignBuiltin
    right = self.EvalRhsWord(rhs)
  File "/home/uke/oil/osh/word_eval.py", line 2194, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/uke/oil/osh/word_eval.py", line 2103, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1881, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2629, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 691, in RunCommandSub
    status, stdout_str, stderr_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 619, in CaptureStdout
    fds, w, exc = select.select([r,r2], [], [r,r2], -1)
NameError: global name 'select' is not defined
osh39 redirect after command sub (like case above but without assignment builtin)

[osh stdout] Expected 'stdout=STDOUT\n', got ''
[osh stderr] Expected 'STDERR\n', got 'Traceback (most recent call last):\n File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>\n sys.exit(main(sys.argv))\n File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main\n return AppBundleMain(argv)\n File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain\n return shell.Main(\'osh\', arg_r, environ, login_shell, loader, readline)\n File "/home/uke/oil/core/shell.py", line 1253, in Main\n cmd_flags=cmd_eval.IsMainProgram)\n File "/home/uke/oil/core/main_loop.py", line 336, in Batch\n was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)\n File "/home/uke/oil/core/main_loop.py", line 401, in Batch2\n is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)\n File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch\n status = self._Execute(node)\n File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute\n status = self._Dispatch(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1875, in _Dispatch\n status = self._DoRedirect(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1648, in _DoRedirect\n status = self._Execute(node.child)\n File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute\n status = self._Dispatch(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch\n status = self._DoSimple(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple\n allow_assign=True)\n File "/home/uke/oil/osh/word_eval.py", line 2541, in EvalWordSequence2\n self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)\n File "/home/uke/oil/osh/word_eval.py", line 1989, in _EvalWordToParts\n self._EvalWordPart(p, word_part_vals, eval_flags)\n File "/home/uke/oil/osh/word_eval.py", line 1881, in _EvalWordPart\n quoted) # type: part_value_t\n File "/home/uke/oil/osh/word_eval.py", line 2629, in _EvalCommandSub\n stdout_str = self.shell_ex.RunCommandSub(cs_part)\n File "/home/uke/oil/core/executor.py", line 691, in RunCommandSub\n status, stdout_str, stderr_str = self.CaptureStdout(node)\n File "/home/uke/oil/core/executor.py", line 619, in CaptureStdout\n fds, w, exc = select.select([r,r2], [], [r,r2], -1)\nNameError: global name \'select\' is not defined\n'
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1875, in _Dispatch
    status = self._DoRedirect(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1648, in _DoRedirect
    status = self._Execute(node.child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2541, in EvalWordSequence2
    self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
  File "/home/uke/oil/osh/word_eval.py", line 1989, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  File "/home/uke/oil/osh/word_eval.py", line 1881, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2629, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 691, in RunCommandSub
    status, stdout_str, stderr_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 619, in CaptureStdout
    fds, w, exc = select.select([r,r2], [], [r,r2], -1)
NameError: global name 'select' is not defined
bash-440 redirect after bare assignment

stdout:
done
stderr:
STDERR
osh40 redirect after bare assignment

[osh stdout] Expected 'done\n', got ''
[osh stderr] Expected u'', got 'Traceback (most recent call last):\n File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>\n sys.exit(main(sys.argv))\n File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main\n return AppBundleMain(argv)\n File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain\n return shell.Main(\'osh\', arg_r, environ, login_shell, loader, readline)\n File "/home/uke/oil/core/shell.py", line 1253, in Main\n cmd_flags=cmd_eval.IsMainProgram)\n File "/home/uke/oil/core/main_loop.py", line 336, in Batch\n was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)\n File "/home/uke/oil/core/main_loop.py", line 401, in Batch2\n is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)\n File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch\n status = self._Execute(node)\n File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute\n status = self._Dispatch(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1875, in _Dispatch\n status = self._DoRedirect(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1648, in _DoRedirect\n status = self._Execute(node.child)\n File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute\n status = self._Dispatch(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1711, in _Dispatch\n status = self._DoShAssignment(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1028, in _DoShAssignment\n rhs = self.word_ev.EvalRhsWord(pair.rhs)\n File "/home/uke/oil/osh/word_eval.py", line 2194, in EvalRhsWord\n return self.EvalWordToString(w)\n File "/home/uke/oil/osh/word_eval.py", line 2103, in EvalWordToString\n self._EvalWordPart(p, part_vals, 0)\n File "/home/uke/oil/osh/word_eval.py", line 1881, in _EvalWordPart\n quoted) # type: part_value_t\n File "/home/uke/oil/osh/word_eval.py", line 2629, in _EvalCommandSub\n stdout_str = self.shell_ex.RunCommandSub(cs_part)\n File "/home/uke/oil/core/executor.py", line 691, in RunCommandSub\n status, stdout_str, stderr_str = self.CaptureStdout(node)\n File "/home/uke/oil/core/executor.py", line 619, in CaptureStdout\n fds, w, exc = select.select([r,r2], [], [r,r2], -1)\nNameError: global name \'select\' is not defined\n'
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain
    return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
  File "/home/uke/oil/core/shell.py", line 1253, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1875, in _Dispatch
    status = self._DoRedirect(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1648, in _DoRedirect
    status = self._Execute(node.child)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1711, in _Dispatch
    status = self._DoShAssignment(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1028, in _DoShAssignment
    rhs = self.word_ev.EvalRhsWord(pair.rhs)
  File "/home/uke/oil/osh/word_eval.py", line 2194, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/uke/oil/osh/word_eval.py", line 2103, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1881, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2629, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 691, in RunCommandSub
    status, stdout_str, stderr_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 619, in CaptureStdout
    fds, w, exc = select.select([r,r2], [], [r,r2], -1)
NameError: global name 'select' is not defined
dash41 redirect after declare -p

stdout:
stderr: 
bash-441 redirect after declare -p

stdout:
stderr: 
declare -- foo="bar"
osh41 redirect after declare -p

stdout:
stderr: 
declare -- foo=bar
dash42 declare -a arr does not remove existing arrays (OSH regression)

stdout:
stderr: 
dash43 declare -A dict does not remove existing arrays (OSH regression)

stdout:
stderr: 
mksh43 declare -A dict does not remove existing arrays (OSH regression)

stdout:
stderr: 
dash44 "readonly -a arr" and "readonly -A dict" should not not remove existing arrays

stdout:
stderr: 
mksh44 "readonly -a arr" and "readonly -A dict" should not not remove existing arrays

stdout:
stderr: 
dash45 "declare -a arr" and "readonly -a a" creates an empty array (OSH)

stdout:
stderr: 
bash-445 "declare -a arr" and "readonly -a a" creates an empty array (OSH)

stdout:
declare -a arr1
declare -r arr2
declare -A dict1
declare -r dict2
stderr:
mksh45 "declare -a arr" and "readonly -a a" creates an empty array (OSH)

stdout:
stderr: 
zsh45 "declare -a arr" and "readonly -a a" creates an empty array (OSH)

stdout:
typeset -a arr1
arr1=(  )
typeset -a arr2
arr2=(  )
typeset -ar arr2
typeset -A dict1
dict1=( )
typeset -a dict2
dict2=( )
typeset -Ar dict2
stderr:
dash46 readonly array should not be modified by a+=(1)

stdout:
stderr: 
mksh46 readonly array should not be modified by a+=(1)

stdout:
stderr: 
mksh: <stdin>[4]: readonly: -a: unknown option