Results for nameref.test.sh

statusbashmkshosh
pass 201122
ok 160
N-I 250
BUG 230
FAIL 003
total252525
casebashmkshoshdescription
0pass pass pass pass array by reference
1pass BUG pass pass assoc array by reference
details
2pass BUG pass pass local array by reference, relying on DYNAMIC SCOPING
details
3pass pass pass flag -n and +n
4pass pass pass mutating through -n
5pass N-I FAIL flag -n combined ${!ref} -- bash INVERTS
detailsdetails
6pass ok pass named ref with $# doesn't work
details
7N-I N-I pass named ref with $# and shopt -s strict_nameref
detailsdetails
8pass BUG pass named ref with 1 $1 etc.
details
9pass ok pass assign to invalid ref
details
10N-I N-I pass assign to invalid ref with strict_nameref
detailsdetails
11pass ok pass name ref on Undef cell
details
12pass ok pass assign to empty nameref and invalid nameref
details
13pass N-I pass -n attribute before it has a value
details
14BUG N-I pass -n attribute on array is hard error, not a warning
detailsdetails
15pass ok pass exported nameref
details
16pass pass pass readonly nameref doesn't prevent assigning through it
17ok ok pass readonly var can't be assigned through nameref
detailsdetails
18pass pass pass unset nameref
19pass pass pass Chain of namerefs
20BUG pass pass Mutually recursive namerefs
details
21pass pass pass Dynamic scope with namerefs
22pass pass pass change reference itself
23pass pass FAIL a[2] in nameref
details
24pass pass FAIL a[expr] in nameref -- DYNAMIC PARSING, don't want this
details
53 passed, 7 OK, 7 not implemented, 5 BUG, 3 failed, 0 timeouts, 0 cases skipped
3 failed under osh

Details on runs that didn't PASS

mksh1 pass assoc array by reference

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

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

stdout:
ref=x
!ref=ref
NOW A NAMEREF
ref=foo
!ref=x
stderr:
osh5 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:
mksh6 named ref with $# doesn't work

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

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

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

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

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

stdout:
stderr: 
mksh10 assign to invalid ref with strict_nameref

stdout:
stderr: 
mksh11 name ref on Undef cell

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

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

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

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

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

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

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

stdout:
ref=X
ref=XX
stderr:
mksh: <stdin>[7]: read-only: ref
bash20 Mutually recursive namerefs

stdout:
defined
ref1=
ref2=
stderr:
bash: line 4: warning: ref1: circular name reference
bash: line 5: warning: ref1: circular name reference
osh23 a[2] in nameref

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

stdout:
ref=a[2]
stderr:
osh24 a[expr] in nameref -- DYNAMIC PARSING, don't want this

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

stdout:
ref=a[$(echo 2) + 1]
stderr: