Results for array-assoc.test.sh

statusoshosh-cpp
pass 3838
ok 11
N-I 11
FAIL 22
total4242
caseoshosh-cppdescription
0pass pass Literal syntax ([x]=y)
1pass pass set associative array to indexed array literal (very surprising bash behavior)
2pass pass Can't initialize assoc array with indexed array
3pass pass create empty assoc array, put, then get
4pass pass Empty value (doesn't use EmptyWord?)
5pass pass retrieve keys with !
6pass pass retrieve values with ${A[@]}
7pass pass coerce to string with ${A[*]}, etc.
8pass pass ${A[@]/b/B}
9pass pass ${A[@]#prefix}
10pass pass ${assoc} is like ${assoc[0]}
11pass pass length ${#a[@]}
12pass pass lookup with ${a[0]} -- "0" is a string
13pass pass lookup with double quoted strings "mykey"
14pass pass lookup with single quoted string
15pass pass lookup with unquoted $key and quoted "$i$i"
16pass pass lookup by unquoted string doesn't work in OSH because it's a variable
17pass pass bash bug: "i+1" and i+1 are the same key
18pass pass Array stored in associative array gets converted to string (without strict_array)
19pass pass Indexed array as key of associative array coerces to string (without shopt -s strict_array)
20pass pass Append to associative array value A['x']+='suffix'
21pass pass Slice of associative array doesn't make sense in bash
22N-I N-I bash variable can have an associative array part and a string part
detailsdetails
23pass pass Associative array expressions inside (( )) with keys that look like numbers
24pass pass (( A[5] += 42 ))
25pass pass (( A[5] += 42 )) with empty cell
26pass pass setting key to itself (from bash-bug mailing list)
27ok ok readonly associative array can't be modified
detailsdetails
28pass pass associative array and brace expansion
29pass pass declare -A A=() allowed
30pass pass unset -v and assoc array
31FAIL FAIL nameref and assoc array
detailsdetails
32pass pass ${!ref} and assoc array
33pass pass printf -v and assoc array
34pass pass bash bug: (( A["$key"] = 1 )) doesn't work
35pass pass Implicit increment of keys
36pass pass test -v assoc[key]
37FAIL FAIL test -v with dynamic parsing
detailsdetails
38pass pass [[ -v assoc[key] ]]
39pass pass [[ -v assoc[key] ]] syntax errors
40pass pass BashAssoc a+=()
41pass pass BashAssoc ${a[@]@Q}
76 passed, 2 OK, 2 not implemented, 0 BUG, 2 failed, 0 timeouts, 0 cases skipped
2 failed under osh

Details on runs that didn't PASS

osh22 bash variable can have an associative array part and a string part

stdout:
1 2
1 2 zero
stderr:
  echo ${assoc[1]} ${assoc[2]} ${assoc}
         ^~~~~
[ stdin ]:8: fatal: Can't index string 'assoc' with integer
osh-cpp22 bash variable can have an associative array part and a string part

stdout:
1 2
1 2 zero
stderr:
  echo ${assoc[1]} ${assoc[2]} ${assoc}
         ^~~~~
[ stdin ]:8: fatal: Can't index string 'assoc' with integer
osh27 readonly associative array can't be modified

stdout:
stderr: 
  A['x']=1
  ^~
[ stdin ]:2: fatal: Can't assign to readonly associative array
osh-cpp27 readonly associative array can't be modified

stdout:
stderr: 
  A['x']=1
  ^~
[ stdin ]:2: fatal: Can't assign to readonly associative array
osh31 nameref and assoc array

[osh stdout] Expected 'values: val\nbefore val\nafter val2\nvalues: val2\n---\nbefore val2\nafter val3\nvalues: val3\n' Got 'values: val\nbefore A["K"]\nafter val2\nvalues: val\n---\nbefore A[$key]\nafter val3\nvalues: val\n'

stdout:
values: val
before A["K"]
after val2
values: val
---
before A[$key]
after val3
values: val
stderr:
osh-cpp31 nameref and assoc array

[osh-cpp stdout] Expected 'values: val\nbefore val\nafter val2\nvalues: val2\n---\nbefore val2\nafter val3\nvalues: val3\n' Got 'values: val\nbefore A["K"]\nafter val2\nvalues: val\n---\nbefore A[$key]\nafter val3\nvalues: val\n'

stdout:
values: val
before A["K"]
after val2
values: val
---
before A[$key]
after val3
values: val
stderr:
osh37 test -v with dynamic parsing

[osh stdout] Expected 'empty=0\nk=0\nnonexistent=1\n', got 'empty=1\nk=1\nnonexistent=1\n'

stdout:
empty=1
k=1
nonexistent=1
stderr:
osh-cpp37 test -v with dynamic parsing

[osh-cpp stdout] Expected 'empty=0\nk=0\nnonexistent=1\n', got 'empty=1\nk=1\nnonexistent=1\n'

stdout:
empty=1
k=1
nonexistent=1
stderr: