Results for var-ref.test.sh

statusoshosh_.pyosh_.cc
pass 11109
ok 111
N-I 111
FAIL 345
total161616
caseoshosh_.pyosh_.ccdescription
0pass pass pass var ref ${!a}
1pass pass pass ${!ref-default}
2pass pass pass ${!undef:-}
3pass FAIL FAIL comparison to ${!array[@]} keys (similar SYNTAX)
detailsdetails
4pass pass pass ${!a[@]-'default'} is illegal
5pass pass pass ref to $@ with @
6pass pass pass ref to $1 and $2 with 1 and 2
7FAIL FAIL FAIL var ref with 1 and @ and *
detailsdetailsdetails
8pass pass pass var ref to special var BASH_SOURCE
9N-I N-I N-I var ref to $? with '?' (not in Oil)
detailsdetailsdetails
10FAIL FAIL FAIL indirection, *then* fancy expansion features
detailsdetailsdetails
11FAIL FAIL FAIL indirection *to* an array reference
detailsdetailsdetails
12pass pass FAIL indirection to nasty complex array references
details
13pass pass pass indirection *to* fancy expansion features bash disallows
14ok ok ok Bad var ref with ${!a}
detailsdetailsdetails
15pass pass pass ${!OPTIND} (used by bash completion
30 passed, 3 OK, 3 not implemented, 0 BUG, 12 failed, 0 timeouts, 0 cases skipped
3 failed under osh

Details on runs that didn't PASS

osh_.py3 comparison to ${!array[@]} keys (similar SYNTAX)

[osh_.py stdout] Expected "['0', '1']\na_keys=0\n['']\na_nobrackets=0\n---\n['A', 'B']\nA_keys=0\n['']\nA_nobrackets=0\n", got 'a_keys=127\na_nobrackets=127\n---\nA_keys=127\nA_nobrackets=127\n'

stdout:
a_keys=127
a_nobrackets=127
---
A_keys=127
A_nobrackets=127
stderr:
  argv.py "${!a[@]}"
  ^~~~~~~
[ stdin ]:3: 'argv.py' not found
  argv.py "${!a}"  # missing [] is equivalent to ${!a[0]} ?
  ^~~~~~~
[ stdin ]:5: 'argv.py' not found
  argv.py ${!A[@]}
  ^~~~~~~
[ stdin ]:9: 'argv.py' not found
  argv.py "${!A}"  # missing [] is equivalent to ${!A[0]} ?
  ^~~~~~~
[ stdin ]:11: 'argv.py' not found
osh_.cc3 comparison to ${!array[@]} keys (similar SYNTAX)

[osh_.cc stdout] Expected "['0', '1']\na_keys=0\n['']\na_nobrackets=0\n---\n['A', 'B']\nA_keys=0\n['']\nA_nobrackets=0\n", got 'a_keys=127\na_nobrackets=127\n---\nA_keys=127\nA_nobrackets=127\n'

stdout:
a_keys=127
a_nobrackets=127
---
A_keys=127
A_nobrackets=127
stderr:
  argv.py "${!a[@]}"
  ^~~~~~~
[ stdin ]:3: 'argv.py' not found
  argv.py "${!a}"  # missing [] is equivalent to ${!a[0]} ?
  ^~~~~~~
[ stdin ]:5: 'argv.py' not found
  argv.py ${!A[@]}
  ^~~~~~~
[ stdin ]:9: 'argv.py' not found
  argv.py "${!A}"  # missing [] is equivalent to ${!A[0]} ?
  ^~~~~~~
[ stdin ]:11: 'argv.py' not found
osh7 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_.py7 var ref with 1 and @ and *

[osh_.py 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_.cc7 var ref with 1 and @ and *

[osh_.cc 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:
osh9 var ref to $? with '?' (not in Oil)

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

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

stdout:
myfunc
stderr:
    echo ${!ref}
    ^~~~
[ stdin ]:3: fatal: Bad indirect expansion: '?'
osh10 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 \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 
ok
stderr:
  echo "${!x^a}"
            ^
[ eval at line 5 of (source.Stdin comment:'') ]:5: fatal: Id.VOp1_Caret can't have an argument
osh_.py10 indirection, *then* fancy expansion features

[osh_.py 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 \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 
ok
stderr:
  echo "${!x^a}"
            ^
[ eval at line 5 of (source.Stdin comment:'') ]:5: fatal: Id.VOp1_Caret can't have an argument
osh_.cc10 indirection, *then* fancy expansion features

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

stdout:
stderr: 
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh11 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_.py11 indirection *to* an array reference

[osh_.py 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_.cc11 indirection *to* an array reference

[osh_.cc 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_.cc12 indirection to nasty complex array references

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

stdout:
stderr: 
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh14 Bad var ref with ${!a}

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

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

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