Skip to content

Commit 6e2f0c1

Browse files
committed
test: Fix failing test suite (again)
1 parent c4aedf8 commit 6e2f0c1

File tree

4 files changed

+49
-26
lines changed

4 files changed

+49
-26
lines changed

pkg/lib/traverse-get.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ bash_object.traverse-get() {
6161
local -n current_object="$current_object_name"
6262

6363
if ((i+1 < ${#REPLIES[@]})); then
64-
# TODO: test these internal invalid errors
64+
# TODO: test these internal invalid errors (error when type=array references object, etc.)
6565
# Do nothing (assuming the type is correct), we have already set 'current_object'
6666
# for the next iteration
6767
:

tests/get-array.bats

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,13 @@ load './util/init.sh'
5151
declare -A OBJECT=([my_key]=$'\x1C\x1Dtype=array;&SUB_ARRAY')
5252

5353
bash_object.traverse-get array OBJECT '.my_key'
54-
5554
assert [ ${#REPLY[@]} -eq 3 ]
5655
assert [ "${REPLY[0]}" = omicron ]
5756
assert [ "${REPLY[1]}" = pi ]
5857
assert [ "${REPLY[2]}" = rho ]
58+
59+
bash_object.traverse-get string OBJECT '.["my_key"].[2]'
60+
assert [ "$REPLY" = rho ]
5961
}
6062

6163
@test "correctly gets array in subobject" {
@@ -64,11 +66,13 @@ load './util/init.sh'
6466
declare -A OBJECT=([my_key]=$'\x1C\x1Dtype=object;&SUB_OBJECT')
6567

6668
bash_object.traverse-get array OBJECT '.my_key.subkey'
67-
6869
assert [ ${#REPLY[@]} -eq 3 ]
6970
assert [ "${REPLY[0]}" = pi ]
7071
assert [ "${REPLY[1]}" = rho ]
7172
assert [ "${REPLY[2]}" = sigma ]
73+
74+
bash_object.traverse-get string OBJECT '.["my_key"].["subkey"].[2]'
75+
assert [ "$REPLY" = sigma ]
7276
}
7377

7478
@test "correctly gets array in subarray" {
@@ -77,14 +81,12 @@ load './util/init.sh'
7781
declare -A OBJECT=([my_key]=$'\x1C\x1Dtype=array;&SUB_ARRAY')
7882

7983
bash_object.traverse-get array OBJECT '.["my_key"].[2]'
80-
8184
assert [ ${#REPLY[@]} -eq 3 ]
8285
assert [ "${REPLY[0]}" = omicron ]
8386
assert [ "${REPLY[1]}" = pi ]
8487
assert [ "${REPLY[2]}" = rho ]
8588

8689

87-
bash_object.traverse-get array OBJECT '.["my_key"].[2].[0]'
88-
90+
bash_object.traverse-get string OBJECT '.["my_key"].[2].[0]'
8991
assert [ "$REPLY" = omicron ]
9092
}

tests/get-object.bats

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,22 +46,38 @@ load './util/init.sh'
4646
assert_line -p 'Queried for object, but found array'
4747
}
4848

49-
# { "stars": { "cool": "Wolf 359" } }
50-
@test "properly gets 4" {
49+
@test "correctly gets object" {
5150
declare -A inner_object=([cool]='Wolf 359')
5251
declare -A OBJ=([stars]=$'\x1C\x1Dtype=object;&inner_object')
5352

5453
bash_object.traverse-get object 'OBJ' '.stars'
5554
assert [ "${REPLY[cool]}" = 'Wolf 359' ]
55+
56+
bash_object.traverse-get string 'OBJ' '.stars.cool'
57+
assert [ "$REPLY" = 'Wolf 359' ]
5658
}
5759

58-
# { "stars": { "cool": "Wolf 359" } }
59-
@test "properly gets 5" {
60-
declare -a inner_array=('Alpha Centauri A' 'Proxima Centauri')
61-
declare -A OBJ=([nearby]=$'\x1C\x1Dtype=object;&inner_array')
6260

63-
bash_object.traverse-get object 'OBJ' '.nearby'
64-
assert [ "${#REPLY[@]}" -eq 2 ]
65-
assert [ "${REPLY[0]}" = 'Alpha Centauri A' ]
66-
assert [ "${REPLY[1]}" = 'Proxima Centauri' ]
61+
@test "correctly gets object in subobject" {
62+
declare -A SUB_SUB_OBJECT=([omicron]='pi')
63+
declare -A SUB_OBJECT=([delta]=$'\x1C\x1Dtype=object;&SUB_SUB_OBJECT')
64+
declare -A OBJ=([gamma]=$'\x1C\x1Dtype=object;&SUB_OBJECT')
65+
66+
bash_object.traverse-get object 'OBJ' '.gamma.delta'
67+
assert [ "${REPLY[omicron]}" = pi ]
68+
69+
bash_object.traverse-get string 'OBJ' '.gamma.delta.omicron'
70+
assert [ "$REPLY" = pi ]
71+
}
72+
73+
@test "correctly gets object in subarray" {
74+
declare -A SUB_SUB_OBJECT=([pi]='rho')
75+
declare -a SUB_ARRAY=('foo' 'bar' $'\x1C\x1Dtype=object;&SUB_SUB_OBJECT')
76+
declare -A OBJ=([omicron]=$'\x1C\x1Dtype=array;&SUB_ARRAY')
77+
78+
bash_object.traverse-get object 'OBJ' '.["omicron"].[2]'
79+
assert [ "${REPLY[pi]}" = rho ]
80+
81+
bash_object.traverse-get string 'OBJ' '.["omicron"].[2].["pi"]'
82+
assert [ "$REPLY" = rho ]
6783
}

tests/get-string.bats

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,38 +48,43 @@ load './util/init.sh'
4848
assert_line -p 'Queried for string, but found array'
4949
}
5050

51-
@test "properly gets string in root" {
51+
@test "correctly gets object at root" {
5252
declare -A OBJECT=([my_key]='my_value')
5353

5454
bash_object.traverse-get string OBJECT '.my_key'
5555
assert [ "$REPLY" = 'my_value' ]
5656
}
5757

58-
@test "properly gets string in nested object" {
58+
@test "correctly gets object" {
5959
declare -A EPSILON_OBJECT=([my_key]='my_value2')
6060
declare -A OBJECT=([epsilon]=$'\x1C\x1Dtype=object;&EPSILON_OBJECT')
6161

6262
bash_object.traverse-get string OBJECT '.epsilon.my_key'
6363
assert [ "$REPLY" = 'my_value2' ]
6464
}
6565

66-
# { "stars": { "cool": "Wolf 359" } }
67-
@test "properly gets string in nested object 2" {
68-
declare -A inner_object=([cool]='Wolf 359')
69-
declare -A OBJ=([stars]=$'\x1C\x1Dtype=object;&inner_object')
66+
@test "correctly gets object in subobject" {
67+
declare -A obj_bravo=([charlie]=delta)
68+
declare -A obj_alfa=([bravo]=$'\x1C\x1Dtype=object;&obj_bravo')
69+
declare -A OBJ=([alfa]=$'\x1C\x1Dtype=object;&obj_alfa')
7070

71-
bash_object.traverse-get string 'OBJ' '.stars.cool'
72-
assert [ "$REPLY" = 'Wolf 359' ]
71+
bash_object.traverse-get object 'OBJ' '.alfa.bravo'
72+
assert [ "${REPLY[charlie]}" = 'delta' ]
73+
74+
bash_object.traverse-get string 'OBJ' '.alfa.bravo.charlie'
75+
assert [ "$REPLY" = 'delta' ]
7376
}
7477

75-
# # { "alfa": { "bravo": { "charlie": { "delta": { "echo": "final_value" } } } } }
76-
@test "properly gets string in nested object 3" {
78+
@test "correctly gets object in subobject highly nested" {
7779
declare -A obj_delta=([echo]="final_value")
7880
declare -A obj_charlie=([delta]=$'\x1C\x1Dtype=object;&obj_delta')
7981
declare -A obj_bravo=([charlie]=$'\x1C\x1Dtype=object;&obj_charlie')
8082
declare -A obj_alfa=([bravo]=$'\x1C\x1Dtype=object;&obj_bravo')
8183
declare -A OBJ=([alfa]=$'\x1C\x1Dtype=object;&obj_alfa')
8284

85+
bash_object.traverse-get object 'OBJ' '.alfa.bravo.charlie.delta'
86+
assert [ "${REPLY[echo]}" = 'final_value' ]
87+
8388
bash_object.traverse-get string 'OBJ' '.alfa.bravo.charlie.delta.echo'
8489
assert [ "$REPLY" = 'final_value' ]
8590
}

0 commit comments

Comments
 (0)