Results for var-ref.test.sh

statusoshosh_.pyosh_.cc
pass 833
ok 111
N-I 100
FAIL 399
total131313
caseoshosh_.pyosh_.ccdescription
0pass pass pass var ref ${!a}
1pass FAIL FAIL ref to $@ with @
detailsdetails
2pass FAIL FAIL ref to $1 and $2 with 1 and 2
detailsdetails
3FAIL FAIL FAIL var ref with 1 and @ and *
detailsdetailsdetails
4pass pass pass var ref to special var BASH_SOURCE
5N-I FAIL FAIL var ref to $? with '?' (not in Oil)
detailsdetailsdetails
6FAIL FAIL FAIL indirection, *then* fancy expansion features
detailsdetailsdetails
7FAIL FAIL FAIL indirection *to* an array reference
detailsdetailsdetails
8pass FAIL FAIL indirection to nasty complex array references
detailsdetails
9pass FAIL FAIL indirection *to* fancy expansion features bash disallows
detailsdetails
10ok ok ok Bad var ref with ${!a}
detailsdetailsdetails
11pass FAIL FAIL ${!OPTIND} (used by bash completion
detailsdetails
12pass pass pass ${!ref-default}
14 passed, 3 OK, 1 not implemented, 0 BUG, 21 failed, 0 timeouts, 0 cases skipped
3 failed under osh

Details on runs that didn't PASS

osh_.py1 ref to $@ with @

[osh_.py stdout] Expected 'ref=one two\n', got 'ref=/home/andy/git/oilshell/oil/bin/osh_eval.py\n'

stdout:
ref=/home/andy/git/oilshell/oil/bin/osh_eval.py
stderr:
set 4
osh_.cc1 ref to $@ with @

[osh_.cc stdout] Expected 'ref=one two\n', got ''
[osh_.cc status] Expected 0, got 1

stdout:
stderr: 
set 4
  echo ref=${!ref}
  ^~~~
[ stdin ]:3: fatal: Bad indirect expansion: '@'
osh_.py2 ref to $1 and $2 with 1 and 2

[osh_.py stdout] Expected 'ref1=one\nref2=two\n', got 'ref1=/home/andy/git/oilshell/oil/bin/osh_eval.py\nref2=\n'

stdout:
ref1=/home/andy/git/oilshell/oil/bin/osh_eval.py
ref2=
stderr:
set 4
osh_.cc2 ref to $1 and $2 with 1 and 2

[osh_.cc stdout] Expected 'ref1=one\nref2=two\n', got 'ref1=/home/andy/git/oilshell/oil/_bin/osh_eval.dbg\nref2=\n'

stdout:
ref1=/home/andy/git/oilshell/oil/_bin/osh_eval.dbg
ref2=
stderr:
set 4
osh3 var ref with 1 and @ and *

[osh stdout] Expected '|x|\n|x|y|\n|x y|\n', got '|x|\n|x|y|\n|x|y|\n'

stdout:
|x|
|x|y|
|x|y|
stderr:
osh_.py3 var ref with 1 and @ and *

[osh_.py stdout] Expected '|x|\n|x|y|\n|x y|\n', got ''
[osh_.py status] Expected 0, got 1
[osh_.py stderr] Found 'Traceback (most recent'

stdout:
stderr: 
set 4
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 341, in <module>
    status = main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 228, in main
    status = main_loop.Batch(cmd_ev, c_parser, arena, is_main=True)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 165, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, optimize=optimize)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1450, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1334, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 956, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1357, in _ExecuteList
    status = self._Execute(child)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1334, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 573, in _Dispatch
    status = self._RunSimpleCommand(cmd_val, node.do_fork)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 481, in _RunSimpleCommand
    return self.shell_ex.RunSimpleCommand(cmd_val, do_fork)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 321, in RunSimpleCommand
    return self.RunBuiltin(builtin_id, cmd_val)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 302, in RunBuiltin
    builtin_func = self.builtins[builtin_id]
KeyError: 22
osh_.cc3 var ref with 1 and @ and *

[osh_.cc stdout] Expected '|x|\n|x|y|\n|x y|\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
set 4
osh_eval.dbg: mycpp/mylib.h:578: V Dict<Str *, Str *>::index(K) [K = Str *, V = Str *]: Assertion `0' failed.
osh5 var ref to $? with '?' (not in Oil)

stdout:
myfunc
stderr:
    echo ${!ref}
            ^~~
[ stdin ]:3: fatal: Bad indirect expansion: '?'
osh_.py5 var ref to $? with '?' (not in Oil)

[osh_.py stdout] Expected 'myfunc\n', got "(cmd_value.Argv argv:[myfunc FUNCNAME] arg_spids:[22 24])\n(cmd_value.Argv argv:[myfunc '?'] arg_spids:[26 28])\n"
[osh_.py status] Expected 1, got 0

stdout:
(cmd_value.Argv argv:[myfunc FUNCNAME] arg_spids:[22 24])
(cmd_value.Argv argv:[myfunc '?'] arg_spids:[26 28])
stderr:
Unhandled SimpleCommand
Unhandled SimpleCommand
osh_.cc5 var ref to $? with '?' (not in Oil)

[osh_.cc stdout] Expected 'myfunc\n', got "(cmd_value.Argv argv:[myfunc FUNCNAME] arg_spids:[22 24])\n(cmd_value.Argv argv:[myfunc '?'] arg_spids:[26 28])\n"
[osh_.cc status] Expected 1, got 0

stdout:
(cmd_value.Argv argv:[myfunc FUNCNAME] arg_spids:[22 24])
(cmd_value.Argv argv:[myfunc '?'] arg_spids:[26 28])
stderr:
Unhandled SimpleCommand
Unhandled SimpleCommand
osh6 indirection, *then* fancy expansion features

[osh stdout] Expected 'ok\n', got "${!b[1]} -> expected asdf, got asdf x\n$zz -> expected foo, got \nbar vs foo\n$zz -> expected foo, got \nbad err msg: ${!w:?oops} -> ${!w:?oops}\n ^\n[ eval at line 10 of (source.Stdin comment:'') ]:10: fatal: unset variable 'oops'\n${!x^a} -> expected Aaabcc, got \n${!p@P} -> expected $ , got p pp\nok\n"

stdout:
${!b[1]} -> expected asdf, got asdf x
$zz -> expected foo, got 
bar vs foo
$zz -> expected foo, got 
bad err msg: ${!w:?oops} ->   ${!w:?oops}
     ^
[ eval at line 10 of (source.Stdin comment:'') ]:10: fatal: unset variable 'oops'
${!x^a} -> expected Aaabcc, got 
${!p@P} -> expected $ , got p pp
ok
stderr:
  echo "${!x^a}"
  ^~~~
[ eval at line 5 of (source.Stdin comment:'') ]:5: fatal: Id.VOp1_Caret can't have an argument
osh_.py6 indirection, *then* fancy expansion features

[osh_.py stdout] Expected 'ok\n', got "(cmd_value.Argv argv:[check_err '${!!xd}'] arg_spids:[173 175])\n(cmd_value.Argv argv:[check_err '${!!x*}'] arg_spids:[179 181])\n(cmd_value.Argv argv:[check_err '${!!a[*]}'] arg_spids:[192 194])\n(cmd_value.Argv argv:[check_err '${!#x}'] arg_spids:[198 200])\n(cmd_value.Argv argv:[check_err '${!#a[@]}'] arg_spids:[204 206])\n(cmd_value.Argv argv:[check_expand '${!a[1]}' xx] arg_spids:[210 212 216])\n(cmd_value.Argv argv:[check_expand '${!b[1]}' asdf] arg_spids:[225 227 231])\n(cmd_value.Argv argv:[check_expand '${!y:-foo}' foo] arg_spids:[242 244 248])\n(cmd_value.Argv argv:[check_expand '${!x:-foo}' aaabcc] arg_spids:[250 252 256])\n(cmd_value.Argv argv:[check_eq foo foo] arg_spids:[264 266 275])\n(cmd_value.Argv argv:[check_expand '$zz' foo] arg_spids:[279 281 285])\n(cmd_value.Argv argv:[check_eq bar foo] arg_spids:[287 289 298])\n(cmd_value.Argv argv:[check_expand '$zz' foo] arg_spids:[302 304 308])\n(cmd_value.Argv argv:[check_err '${!w:?oops}' '*: oops'] arg_spids:[316 318 322])\n(cmd_value.Argv argv:[check_expand '${!x:?oops}' aaabcc] arg_spids:[326 328 332])\n(cmd_value.Argv argv:[check_expand '${!y:+foo}' ''] arg_spids:[334 336 340])\n(cmd_value.Argv argv:[check_expand '${!x:+foo}' foo] arg_spids:[343 345 349])\n(cmd_value.Argv argv:[check_expand '${!x:2}' abcc] arg_spids:[351 353 357])\n(cmd_value.Argv argv:[check_expand '${!x:2:2}' ab] arg_spids:[359 361 365])\n(cmd_value.Argv argv:[check_expand '${!x#*a}' aabcc] arg_spids:[367 369 373])\n(cmd_value.Argv argv:[check_expand '${!x%%c*}' aaab] arg_spids:[375 377 381])\n(cmd_value.Argv argv:[check_expand '${!x/a*b/d}' dcc] arg_spids:[383 385 389])\n(cmd_value.Argv argv:[check_expand '${!x^a}' Aaabcc] arg_spids:[391 393 397])\n(cmd_value.Argv argv:[check_expand '${!p@P}' '$ '] arg_spids:[408 410 414])\nok\n"

stdout:
(cmd_value.Argv argv:[check_err '${!!xd}'] arg_spids:[173 175])
(cmd_value.Argv argv:[check_err '${!!x*}'] arg_spids:[179 181])
(cmd_value.Argv argv:[check_err '${!!a[*]}'] arg_spids:[192 194])
(cmd_value.Argv argv:[check_err '${!#x}'] arg_spids:[198 200])
(cmd_value.Argv argv:[check_err '${!#a[@]}'] arg_spids:[204 206])
(cmd_value.Argv argv:[check_expand '${!a[1]}' xx] arg_spids:[210 212 216])
(cmd_value.Argv argv:[check_expand '${!b[1]}' asdf] arg_spids:[225 227 231])
(cmd_value.Argv argv:[check_expand '${!y:-foo}' foo] arg_spids:[242 244 248])
(cmd_value.Argv argv:[check_expand '${!x:-foo}' aaabcc] arg_spids:[250 252 256])
(cmd_value.Argv argv:[check_eq foo foo] arg_spids:[264 266 275])
(cmd_value.Argv argv:[check_expand '$zz' foo] arg_spids:[279 281 285])
(cmd_value.Argv argv:[check_eq bar foo] arg_spids:[287 289 298])
(cmd_value.Argv argv:[check_expand '$zz' foo] arg_spids:[302 304 308])
(cmd_value.Argv argv:[check_err '${!w:?oops}' '*: oops'] arg_spids:[316 318 322])
(cmd_value.Argv argv:[check_expand '${!x:?oops}' aaabcc] arg_spids:[326 328 332])
(cmd_value.Argv argv:[check_expand '${!y:+foo}' ''] arg_spids:[334 336 340])
(cmd_value.Argv argv:[check_expand '${!x:+foo}' foo] arg_spids:[343 345 349])
(cmd_value.Argv argv:[check_expand '${!x:2}' abcc] arg_spids:[351 353 357])
(cmd_value.Argv argv:[check_expand '${!x:2:2}' ab] arg_spids:[359 361 365])
(cmd_value.Argv argv:[check_expand '${!x#*a}' aabcc] arg_spids:[367 369 373])
(cmd_value.Argv argv:[check_expand '${!x%%c*}' aaab] arg_spids:[375 377 381])
(cmd_value.Argv argv:[check_expand '${!x/a*b/d}' dcc] arg_spids:[383 385 389])
(cmd_value.Argv argv:[check_expand '${!x^a}' Aaabcc] arg_spids:[391 393 397])
(cmd_value.Argv argv:[check_expand '${!p@P}' '$ '] arg_spids:[408 410 414])
ok
stderr:
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
osh_.cc6 indirection, *then* fancy expansion features

[osh_.cc stdout] Expected 'ok\n', got "(cmd_value.Argv argv:[check_err '${!!xd}'] arg_spids:[173 175])\n(cmd_value.Argv argv:[check_err '${!!x*}'] arg_spids:[179 181])\n(cmd_value.Argv argv:[check_err '${!!a[*]}'] arg_spids:[192 194])\n(cmd_value.Argv argv:[check_err '${!#x}'] arg_spids:[198 200])\n(cmd_value.Argv argv:[check_err '${!#a[@]}'] arg_spids:[204 206])\n(cmd_value.Argv argv:[check_expand '${!a[1]}' xx] arg_spids:[210 212 216])\n(cmd_value.Argv argv:[check_expand '${!b[1]}' asdf] arg_spids:[225 227 231])\n(cmd_value.Argv argv:[check_expand '${!y:-foo}' foo] arg_spids:[242 244 248])\n(cmd_value.Argv argv:[check_expand '${!x:-foo}' aaabcc] arg_spids:[250 252 256])\n(cmd_value.Argv argv:[check_eq foo foo] arg_spids:[264 266 275])\n(cmd_value.Argv argv:[check_expand '$zz' foo] arg_spids:[279 281 285])\n(cmd_value.Argv argv:[check_eq bar foo] arg_spids:[287 289 298])\n(cmd_value.Argv argv:[check_expand '$zz' foo] arg_spids:[302 304 308])\n(cmd_value.Argv argv:[check_err '${!w:?oops}' '*: oops'] arg_spids:[316 318 322])\n(cmd_value.Argv argv:[check_expand '${!x:?oops}' aaabcc] arg_spids:[326 328 332])\n(cmd_value.Argv argv:[check_expand '${!y:+foo}' ''] arg_spids:[334 336 340])\n(cmd_value.Argv argv:[check_expand '${!x:+foo}' foo] arg_spids:[343 345 349])\n(cmd_value.Argv argv:[check_expand '${!x:2}' abcc] arg_spids:[351 353 357])\n(cmd_value.Argv argv:[check_expand '${!x:2:2}' ab] arg_spids:[359 361 365])\n(cmd_value.Argv argv:[check_expand '${!x#*a}' aabcc] arg_spids:[367 369 373])\n(cmd_value.Argv argv:[check_expand '${!x%%c*}' aaab] arg_spids:[375 377 381])\n(cmd_value.Argv argv:[check_expand '${!x/a*b/d}' dcc] arg_spids:[383 385 389])\n(cmd_value.Argv argv:[check_expand '${!x^a}' Aaabcc] arg_spids:[391 393 397])\n(cmd_value.Argv argv:[check_expand '${!p@P}' '$ '] arg_spids:[408 410 414])\nok\n"

stdout:
(cmd_value.Argv argv:[check_err '${!!xd}'] arg_spids:[173 175])
(cmd_value.Argv argv:[check_err '${!!x*}'] arg_spids:[179 181])
(cmd_value.Argv argv:[check_err '${!!a[*]}'] arg_spids:[192 194])
(cmd_value.Argv argv:[check_err '${!#x}'] arg_spids:[198 200])
(cmd_value.Argv argv:[check_err '${!#a[@]}'] arg_spids:[204 206])
(cmd_value.Argv argv:[check_expand '${!a[1]}' xx] arg_spids:[210 212 216])
(cmd_value.Argv argv:[check_expand '${!b[1]}' asdf] arg_spids:[225 227 231])
(cmd_value.Argv argv:[check_expand '${!y:-foo}' foo] arg_spids:[242 244 248])
(cmd_value.Argv argv:[check_expand '${!x:-foo}' aaabcc] arg_spids:[250 252 256])
(cmd_value.Argv argv:[check_eq foo foo] arg_spids:[264 266 275])
(cmd_value.Argv argv:[check_expand '$zz' foo] arg_spids:[279 281 285])
(cmd_value.Argv argv:[check_eq bar foo] arg_spids:[287 289 298])
(cmd_value.Argv argv:[check_expand '$zz' foo] arg_spids:[302 304 308])
(cmd_value.Argv argv:[check_err '${!w:?oops}' '*: oops'] arg_spids:[316 318 322])
(cmd_value.Argv argv:[check_expand '${!x:?oops}' aaabcc] arg_spids:[326 328 332])
(cmd_value.Argv argv:[check_expand '${!y:+foo}' ''] arg_spids:[334 336 340])
(cmd_value.Argv argv:[check_expand '${!x:+foo}' foo] arg_spids:[343 345 349])
(cmd_value.Argv argv:[check_expand '${!x:2}' abcc] arg_spids:[351 353 357])
(cmd_value.Argv argv:[check_expand '${!x:2:2}' ab] arg_spids:[359 361 365])
(cmd_value.Argv argv:[check_expand '${!x#*a}' aabcc] arg_spids:[367 369 373])
(cmd_value.Argv argv:[check_expand '${!x%%c*}' aaab] arg_spids:[375 377 381])
(cmd_value.Argv argv:[check_expand '${!x/a*b/d}' dcc] arg_spids:[383 385 389])
(cmd_value.Argv argv:[check_expand '${!x^a}' Aaabcc] arg_spids:[391 393 397])
(cmd_value.Argv argv:[check_expand '${!p@P}' '$ '] arg_spids:[408 410 414])
ok
stderr:
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
osh7 indirection *to* an array reference

[osh stdout] Expected '.\n.x\n.x.y\n.x y\n', got '.\n.x\n.x.y\n.x.y\n'

stdout:
.
.x
.x.y
.x.y
stderr:
osh_.py7 indirection *to* an array reference

[osh_.py stdout] Expected '.\n.x\n.x.y\n.x y\n', got "(cmd_value.Argv argv:[f 'a[0]'] arg_spids:[25 27])\n(cmd_value.Argv argv:[f 'b[0]'] arg_spids:[38 40])\n(cmd_value.Argv argv:[f 'b[@]'] arg_spids:[44 46])\n(cmd_value.Argv argv:[f 'b[*]'] arg_spids:[50 52])\n"

stdout:
(cmd_value.Argv argv:[f 'a[0]'] arg_spids:[25 27])
(cmd_value.Argv argv:[f 'b[0]'] arg_spids:[38 40])
(cmd_value.Argv argv:[f 'b[@]'] arg_spids:[44 46])
(cmd_value.Argv argv:[f 'b[*]'] arg_spids:[50 52])
stderr:
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
osh_.cc7 indirection *to* an array reference

[osh_.cc stdout] Expected '.\n.x\n.x.y\n.x y\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.dbg: cpp/libc.h:37: List<Str *> *libc::glob(Str *): Assertion `0' failed.
osh_.py8 indirection to nasty complex array references

[osh_.py stdout] Expected '1 end\n', got '(cmd_value.Argv argv:[f \'a[1]\'] arg_spids:[62 64])\n(cmd_value.Argv argv:[f \'a[{1,0}]\'] arg_spids:[68 70])\n(cmd_value.Argv argv:[f \'a[<(echo x)]\'] arg_spids:[77 79])\n(cmd_value.Argv argv:[f \'a[$aa]\'] arg_spids:[91 93])\n(cmd_value.Argv argv:[f \'a[b*]\'] arg_spids:[100 102])\n(cmd_value.Argv argv:[f \'a[1"]\'] arg_spids:[109 111])\n(cmd_value.Argv argv:[f \'a[$b]\'] arg_spids:[142 144])\n(cmd_value.Argv argv:[f \'a[${c:-1}]\'] arg_spids:[148 150])\n(cmd_value.Argv argv:[f \'a[$(echo 1)]\'] arg_spids:[154 156])\n(cmd_value.Argv argv:[f \'a[$(( 3 - 2 ))]\'] arg_spids:[160 162])\nend\n'

stdout:
(cmd_value.Argv argv:[f 'a[1]'] arg_spids:[62 64])
(cmd_value.Argv argv:[f 'a[{1,0}]'] arg_spids:[68 70])
(cmd_value.Argv argv:[f 'a[<(echo x)]'] arg_spids:[77 79])
(cmd_value.Argv argv:[f 'a[$aa]'] arg_spids:[91 93])
(cmd_value.Argv argv:[f 'a[b*]'] arg_spids:[100 102])
(cmd_value.Argv argv:[f 'a[1"]'] arg_spids:[109 111])
(cmd_value.Argv argv:[f 'a[$b]'] arg_spids:[142 144])
(cmd_value.Argv argv:[f 'a[${c:-1}]'] arg_spids:[148 150])
(cmd_value.Argv argv:[f 'a[$(echo 1)]'] arg_spids:[154 156])
(cmd_value.Argv argv:[f 'a[$(( 3 - 2 ))]'] arg_spids:[160 162])
end
stderr:
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
osh_.cc8 indirection to nasty complex array references

[osh_.cc stdout] Expected '1 end\n', got '(cmd_value.Argv argv:[f \'a[1]\'] arg_spids:[62 64])\n(cmd_value.Argv argv:[f \'a[{1,0}]\'] arg_spids:[68 70])\n(cmd_value.Argv argv:[f \'a[<(echo x)]\'] arg_spids:[77 79])\n(cmd_value.Argv argv:[f \'a[$aa]\'] arg_spids:[91 93])\n(cmd_value.Argv argv:[f \'a[b*]\'] arg_spids:[100 102])\n(cmd_value.Argv argv:[f \'a[1"]\'] arg_spids:[109 111])\n(cmd_value.Argv argv:[f \'a[$b]\'] arg_spids:[142 144])\n(cmd_value.Argv argv:[f \'a[${c:-1}]\'] arg_spids:[148 150])\n(cmd_value.Argv argv:[f \'a[$(echo 1)]\'] arg_spids:[154 156])\n(cmd_value.Argv argv:[f \'a[$(( 3 - 2 ))]\'] arg_spids:[160 162])\nend\n'

stdout:
(cmd_value.Argv argv:[f 'a[1]'] arg_spids:[62 64])
(cmd_value.Argv argv:[f 'a[{1,0}]'] arg_spids:[68 70])
(cmd_value.Argv argv:[f 'a[<(echo x)]'] arg_spids:[77 79])
(cmd_value.Argv argv:[f 'a[$aa]'] arg_spids:[91 93])
(cmd_value.Argv argv:[f 'a[b*]'] arg_spids:[100 102])
(cmd_value.Argv argv:[f 'a[1"]'] arg_spids:[109 111])
(cmd_value.Argv argv:[f 'a[$b]'] arg_spids:[142 144])
(cmd_value.Argv argv:[f 'a[${c:-1}]'] arg_spids:[148 150])
(cmd_value.Argv argv:[f 'a[$(echo 1)]'] arg_spids:[154 156])
(cmd_value.Argv argv:[f 'a[$(( 3 - 2 ))]'] arg_spids:[160 162])
end
stderr:
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
osh_.py9 indirection *to* fancy expansion features bash disallows

[osh_.py stdout] Expected u'', got "(cmd_value.Argv argv:[check_indir 'a[0'] arg_spids:[95 97])\n(cmd_value.Argv argv:[check_indir 'aa[k'] arg_spids:[101 103])\n(cmd_value.Argv argv:[check_indir '!x' a] arg_spids:[107 109 113])\n(cmd_value.Argv argv:[check_indir '!a[0]' y] arg_spids:[115 117 121])\n(cmd_value.Argv argv:[check_indir 'x:-foo' y] arg_spids:[123 125 129])\n(cmd_value.Argv argv:[check_indir 'x:=foo' y] arg_spids:[131 133 137])\n(cmd_value.Argv argv:[check_indir 'x:?oops' y] arg_spids:[139 141 145])\n(cmd_value.Argv argv:[check_indir 'x:+yy' yy] arg_spids:[147 149 153])\n(cmd_value.Argv argv:[check_indir 'x:0' y] arg_spids:[155 157 161])\n(cmd_value.Argv argv:[check_indir 'x:0:1' y] arg_spids:[163 165 169])\n(cmd_value.Argv argv:[check_indir '!a@' 'a aa'] arg_spids:[171 173 177])\n(cmd_value.Argv argv:[check_indir '#x' 1] arg_spids:[181 183 187])\n(cmd_value.Argv argv:[check_indir 'x#y'] arg_spids:[189 191])\n(cmd_value.Argv argv:[check_indir 'x/y/foo' foo] arg_spids:[195 197 201])\n(cmd_value.Argv argv:[check_indir 'x@Q' '\\'y\\''] arg_spids:[203 205 209])\ndone\n"
[osh_.py status] Expected 1, got 0

stdout:
(cmd_value.Argv argv:[check_indir 'a[0'] arg_spids:[95 97])
(cmd_value.Argv argv:[check_indir 'aa[k'] arg_spids:[101 103])
(cmd_value.Argv argv:[check_indir '!x' a] arg_spids:[107 109 113])
(cmd_value.Argv argv:[check_indir '!a[0]' y] arg_spids:[115 117 121])
(cmd_value.Argv argv:[check_indir 'x:-foo' y] arg_spids:[123 125 129])
(cmd_value.Argv argv:[check_indir 'x:=foo' y] arg_spids:[131 133 137])
(cmd_value.Argv argv:[check_indir 'x:?oops' y] arg_spids:[139 141 145])
(cmd_value.Argv argv:[check_indir 'x:+yy' yy] arg_spids:[147 149 153])
(cmd_value.Argv argv:[check_indir 'x:0' y] arg_spids:[155 157 161])
(cmd_value.Argv argv:[check_indir 'x:0:1' y] arg_spids:[163 165 169])
(cmd_value.Argv argv:[check_indir '!a@' 'a aa'] arg_spids:[171 173 177])
(cmd_value.Argv argv:[check_indir '#x' 1] arg_spids:[181 183 187])
(cmd_value.Argv argv:[check_indir 'x#y'] arg_spids:[189 191])
(cmd_value.Argv argv:[check_indir 'x/y/foo' foo] arg_spids:[195 197 201])
(cmd_value.Argv argv:[check_indir 'x@Q' '\'y\''] arg_spids:[203 205 209])
done
stderr:
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
osh_.cc9 indirection *to* fancy expansion features bash disallows

[osh_.cc stdout] Expected u'', got "(cmd_value.Argv argv:[check_indir 'a[0'] arg_spids:[95 97])\n(cmd_value.Argv argv:[check_indir 'aa[k'] arg_spids:[101 103])\n(cmd_value.Argv argv:[check_indir '!x' a] arg_spids:[107 109 113])\n(cmd_value.Argv argv:[check_indir '!a[0]' y] arg_spids:[115 117 121])\n(cmd_value.Argv argv:[check_indir 'x:-foo' y] arg_spids:[123 125 129])\n(cmd_value.Argv argv:[check_indir 'x:=foo' y] arg_spids:[131 133 137])\n(cmd_value.Argv argv:[check_indir 'x:?oops' y] arg_spids:[139 141 145])\n(cmd_value.Argv argv:[check_indir 'x:+yy' yy] arg_spids:[147 149 153])\n(cmd_value.Argv argv:[check_indir 'x:0' y] arg_spids:[155 157 161])\n(cmd_value.Argv argv:[check_indir 'x:0:1' y] arg_spids:[163 165 169])\n(cmd_value.Argv argv:[check_indir '!a@' 'a aa'] arg_spids:[171 173 177])\n(cmd_value.Argv argv:[check_indir '#x' 1] arg_spids:[181 183 187])\n(cmd_value.Argv argv:[check_indir 'x#y'] arg_spids:[189 191])\n(cmd_value.Argv argv:[check_indir 'x/y/foo' foo] arg_spids:[195 197 201])\n(cmd_value.Argv argv:[check_indir 'x@Q' '\\'y\\''] arg_spids:[203 205 209])\ndone\n"
[osh_.cc status] Expected 1, got 0

stdout:
(cmd_value.Argv argv:[check_indir 'a[0'] arg_spids:[95 97])
(cmd_value.Argv argv:[check_indir 'aa[k'] arg_spids:[101 103])
(cmd_value.Argv argv:[check_indir '!x' a] arg_spids:[107 109 113])
(cmd_value.Argv argv:[check_indir '!a[0]' y] arg_spids:[115 117 121])
(cmd_value.Argv argv:[check_indir 'x:-foo' y] arg_spids:[123 125 129])
(cmd_value.Argv argv:[check_indir 'x:=foo' y] arg_spids:[131 133 137])
(cmd_value.Argv argv:[check_indir 'x:?oops' y] arg_spids:[139 141 145])
(cmd_value.Argv argv:[check_indir 'x:+yy' yy] arg_spids:[147 149 153])
(cmd_value.Argv argv:[check_indir 'x:0' y] arg_spids:[155 157 161])
(cmd_value.Argv argv:[check_indir 'x:0:1' y] arg_spids:[163 165 169])
(cmd_value.Argv argv:[check_indir '!a@' 'a aa'] arg_spids:[171 173 177])
(cmd_value.Argv argv:[check_indir '#x' 1] arg_spids:[181 183 187])
(cmd_value.Argv argv:[check_indir 'x#y'] arg_spids:[189 191])
(cmd_value.Argv argv:[check_indir 'x/y/foo' foo] arg_spids:[195 197 201])
(cmd_value.Argv argv:[check_indir 'x@Q' '\'y\''] arg_spids:[203 205 209])
done
stderr:
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
osh10 Bad var ref with ${!a}

stdout:
stderr: 
  echo ref ${!a}
              ^
[ stdin ]:2: fatal: Bad indirect expansion: 'bad var name'
osh_.py10 Bad var ref with ${!a}

stdout:
stderr: 
  echo ref ${!a}
              ^
[ stdin ]:2: fatal: Bad indirect expansion: 'bad var name'
osh_.cc10 Bad var ref with ${!a}

stdout:
stderr: 
  echo ref ${!a}
  ^~~~
[ stdin ]:2: fatal: Bad indirect expansion: 'bad var name'
osh_.py11 ${!OPTIND} (used by bash completion

[osh_.py stdout] Expected 'a\nx\ny\n', got ''
[osh_.py status] Expected 0, got 1

stdout:
stderr: 
set 5
  echo ${!OPTIND}
          ^~~~~~
[ stdin ]:2: fatal: Bad indirect expansion: ''
osh_.cc11 ${!OPTIND} (used by bash completion

[osh_.cc stdout] Expected 'a\nx\ny\n', got ''
[osh_.cc status] Expected 0, got 1

stdout:
stderr: 
set 5
  echo ${!OPTIND}
  ^~~~
[ stdin ]:2: fatal: Bad indirect expansion: ''