Results for nameref.test.sh

statusbashmkshoshosh_ALT
pass 25132525
ok 2900
N-I 2600
BUG 3400
FAIL 0077
total32323232
casebashmkshoshosh_ALTdescription
0pass pass pass pass pass array by reference
1pass pass pass pass mutate array by reference
2pass BUG pass pass pass assoc array by reference
details
3pass BUG pass pass pass local array by reference, relying on DYNAMIC SCOPING
details
4pass pass pass pass flag -n and +n
5pass pass pass pass mutating through nameref: ref=
6pass N-I FAIL FAIL flag -n combined ${!ref} -- bash INVERTS
detailsdetailsdetails
7pass ok pass pass named ref with $# doesn't work
details
8N-I N-I pass pass named ref with $# and shopt -s strict_nameref
detailsdetails
9pass BUG pass pass named ref with 1 $1 etc.
details
10pass ok pass pass assign to invalid ref
details
11N-I N-I pass pass assign to invalid ref with strict_nameref
detailsdetails
12pass ok pass pass name ref on Undef cell
details
13pass ok pass pass assign to empty nameref and invalid nameref
details
14pass N-I pass pass -n attribute before it has a value
details
15BUG N-I pass pass -n attribute on array is hard error, not a warning
detailsdetails
16pass ok pass pass exported nameref
details
17pass pass pass pass readonly nameref doesn't prevent assigning through it
18ok ok pass pass readonly var can't be assigned through nameref
detailsdetails
19pass pass pass pass unset nameref
20pass pass pass pass Chain of namerefs
21BUG ok pass pass Mutually recursive namerefs detected on READ
detailsdetails
22BUG ok pass pass Mutually recursive namerefs detected on WRITE
detailsdetails
23pass pass pass pass Dynamic scope with namerefs
24pass pass pass pass change reference itself
25pass pass FAIL FAIL a[2] in nameref
detailsdetails
26pass pass FAIL FAIL a[expr] in nameref
detailsdetails
27pass ok FAIL FAIL a[@] in nameref
detailsdetailsdetails
28pass pass pass pass mutate through nameref: ref[0]=
29pass BUG FAIL FAIL bad mutation through nameref: ref[0]= where ref is array[0]
detailsdetailsdetails
30ok pass FAIL FAIL @ in nameref isn't supported, unlike in ${!ref}
detailsdetailsdetails
31pass N-I FAIL FAIL Unquoted assoc reference on RHS
detailsdetailsdetails
88 passed, 11 OK, 8 not implemented, 7 BUG, 7 failed, 0 timeouts, 0 cases skipped
7 failed under osh

Details on runs that didn't PASS

mksh2 pass assoc array by reference

stdout:
[monday]=eggs
stderr:
mksh3 pass local array by reference, relying on DYNAMIC SCOPING

stdout:
stderr: 
mksh: <stdin>[7]: syntax error: '(' unexpected
mksh6 flag -n combined ${!ref} -- bash INVERTS

stdout:
ref=x
!ref=ref
NOW A NAMEREF
ref=foo
!ref=x
stderr:
osh6 flag -n combined ${!ref} -- bash INVERTS

[osh stdout] Expected 'ref=x\n!ref=foo\nNOW A NAMEREF\nref=foo\n!ref=x\n' Got 'ref=x\n!ref=foo\nNOW A NAMEREF\nref=foo\n!ref=FOO\n'

stdout:
ref=x
!ref=foo
NOW A NAMEREF
ref=foo
!ref=FOO
stderr:
osh_ALT6 flag -n combined ${!ref} -- bash INVERTS

[osh_ALT stdout] Expected 'ref=x\n!ref=foo\nNOW A NAMEREF\nref=foo\n!ref=x\n' Got 'ref=x\n!ref=foo\nNOW A NAMEREF\nref=foo\n!ref=FOO\n'

stdout:
ref=x
!ref=foo
NOW A NAMEREF
ref=foo
!ref=FOO
stderr:
mksh7 named ref with $# doesn't work

stdout:
ref=#
ref=3
stderr:
bash8 named ref with $# and shopt -s strict_nameref

stdout:
ref=#
ref=#
stderr:
bash: line 1: shopt: strict_nameref: invalid shell option name
bash: line 5: typeset: `#': invalid variable name for name reference
mksh8 named ref with $# and shopt -s strict_nameref

stdout:
ref=#
ref=0
stderr:
mksh: <stdin>[1]: shopt: not found
mksh9 named ref with 1 $1 etc.

stdout:
ref=1
ref=one
ref2=$1
stderr:
mksh: <stdin>[12]: ref2: empty nameref target
mksh10 assign to invalid ref

stdout:
ref=1
ref=
stderr:
mksh: <stdin>[7]: read-only: ref
bash11 assign to invalid ref with strict_nameref

stdout:
stderr: 
mksh11 assign to invalid ref with strict_nameref

stdout:
stderr: 
mksh12 name ref on Undef cell

stdout:
stderr: 
mksh: <stdin>[1]: ref: empty nameref target
mksh13 assign to empty nameref and invalid nameref

stdout:
stderr: 
mksh: <stdin>[1]: ref: empty nameref target
mksh14 -n attribute before it has a value

stdout:
stderr: 
mksh: <stdin>[1]: ref: empty nameref target
bash15 -n attribute on array is hard error, not a warning

stdout:
hi
ref=x
stderr:
bash: line 5: warning: ref: removing nameref attribute
mksh15 -n attribute on array is hard error, not a warning

stdout:
stderr: 
mksh: <stdin>[2]: ref: empty nameref target
mksh16 exported nameref

stdout:
None
None
---
foo
None
stderr:
bash18 readonly var can't be assigned through nameref

stdout:
ref=X
ref=XX
ref=XX
x=XX
stderr:
bash: line 11: x: readonly variable
mksh18 readonly var can't be assigned through nameref

stdout:
ref=X
ref=XX
stderr:
mksh: <stdin>[11]: read-only: ref
bash21 Mutually recursive namerefs detected on READ

stdout:
defined
ref1=
ref2=
stderr:
bash: line 4: warning: ref1: circular name reference
bash: line 5: warning: ref1: circular name reference
mksh21 Mutually recursive namerefs detected on READ

stdout:
stderr: 
mksh: <stdin>[2]: ref2: expression recurses on parameter
bash22 Mutually recursive namerefs detected on WRITE

stdout:
defined 0
mutated 1
stderr:
bash: line 4: warning: ref1: circular name reference
mksh22 Mutually recursive namerefs detected on WRITE

stdout:
stderr: 
mksh: <stdin>[2]: ref2: expression recurses on parameter
osh25 a[2] in nameref

[osh stdout] Expected 'ref=two\n', got 'ref=a[2]\n'

stdout:
ref=a[2]
stderr:
osh_ALT25 a[2] in nameref

[osh_ALT stdout] Expected 'ref=two\n', got 'ref=a[2]\n'

stdout:
ref=a[2]
stderr:
osh26 a[expr] in nameref

[osh stdout] Expected 'ref=three\n', got 'ref=a[$(echo 2) + 1]\n'

stdout:
ref=a[$(echo 2) + 1]
stderr:
osh_ALT26 a[expr] in nameref

[osh_ALT stdout] Expected 'ref=three\n', got 'ref=a[$(echo 2) + 1]\n'

stdout:
ref=a[$(echo 2) + 1]
stderr:
mksh27 a[@] in nameref

stdout:
stderr: 
mksh: <stdin>[3]: @: unexpected '@'
osh27 a[@] in nameref

[osh stdout] Expected "['ref', 'A B C']\nstatus=1\n['ref[@]']\n['ref', 'A B C']\n['a[@]', 'A B', 'C']\n" Got "['ref', 'a[@]']\nstatus=0\n['ref[@]', 'X', 'Y', 'Z']\n['ref', 'X']\n['a[@]', 'A B', 'C']\n"

stdout:
['ref', 'a[@]']
status=0
['ref[@]', 'X', 'Y', 'Z']
['ref', 'X']
['a[@]', 'A B', 'C']
stderr:
osh_ALT27 a[@] in nameref

[osh_ALT stdout] Expected "['ref', 'A B C']\nstatus=1\n['ref[@]']\n['ref', 'A B C']\n['a[@]', 'A B', 'C']\n" Got "['ref', 'a[@]']\nstatus=0\n['ref[@]', 'X', 'Y', 'Z']\n['ref', 'X']\n['a[@]', 'A B', 'C']\n"

stdout:
['ref', 'a[@]']
status=0
['ref[@]', 'X', 'Y', 'Z']
['ref', 'X']
['a[@]', 'A B', 'C']
stderr:
mksh29 bad mutation through nameref: ref[0]= where ref is array[0]

stdout:
status=0
foo Y Z
stderr:
osh29 bad mutation through nameref: ref[0]= where ref is array[0]

[osh stdout] Expected 'status=1\nX Y Z\n', got ''
[osh status] Expected 0, got 1

stdout:
stderr: 
  ref[0]=foo  # error in bash: 'array[0]': not a valid identifier
  ^~~~
[ stdin ]:3: fatal: Can't assign to items in a string
osh_ALT29 bad mutation through nameref: ref[0]= where ref is array[0]

[osh_ALT stdout] Expected 'status=1\nX Y Z\n', got ''
[osh_ALT status] Expected 0, got 1

stdout:
stderr: 
  ref[0]=foo  # error in bash: 'array[0]': not a valid identifier
  ^~~~
[ stdin ]:3: fatal: Can't assign to items in a string
bash30 @ in nameref isn't supported, unlike in ${!ref}

stdout:
status=1
ref=
status=0
stderr:
bash: line 2: typeset: `@': invalid variable name for name reference
osh30 @ in nameref isn't supported, unlike in ${!ref}

[osh stdout] Expected u'', got 'status=0\nref=@\nstatus=0\n'
[osh status] Expected 1, got 0

stdout:
status=0
ref=@
status=0
stderr:
osh_ALT30 @ in nameref isn't supported, unlike in ${!ref}

[osh_ALT stdout] Expected u'', got 'status=0\nref=@\nstatus=0\n'
[osh_ALT status] Expected 1, got 0

stdout:
status=0
ref=@
status=0
stderr:
mksh31 Unquoted assoc reference on RHS

stdout:
stderr: 
mksh: <stdin>[1]: typeset: -A: unknown option
mksh: <stdin>[2]: 'foo': multi-character character constant
osh31 Unquoted assoc reference on RHS

[osh stdout] Expected "['bar']\n", got "['bashup_ev_r[foo]']\n"

stdout:
['bashup_ev_r[foo]']
stderr:
osh_ALT31 Unquoted assoc reference on RHS

[osh_ALT stdout] Expected "['bar']\n", got "['bashup_ev_r[foo]']\n"

stdout:
['bashup_ev_r[foo]']
stderr: