Skip to content

Commit f86bb78

Browse files
committed
fix: When getting an array, correctly errors if final type is not array
1 parent a0284c9 commit f86bb78

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

pkg/lib/traverse.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ bash_object.traverse() {
134134
elif [ "$final_value_type" = array ]; then
135135
case "$vmd_dtype" in
136136
object)
137-
printf '%s\n' "Error: 'A query for type 'object' was given, but an object was found"
137+
printf '%s\n' "Error: 'A query for type 'array' was given, but an object was found"
138138
return 1
139139
;;
140140
array)

tests/get-array.bats

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/usr/bin/env bats
2+
3+
load './util/init.sh'
4+
5+
@test "errors if final type is 'string' when expecting type 'array' 1" {
6+
declare -A OBJECT=([my_key]='string_value2')
7+
8+
run bash_object.traverse get array OBJECT '.my_key'
9+
10+
assert_failure
11+
assert_line -p "A query for type 'array' was given, but a string was found"
12+
}
13+
14+
@test "errors if final type is 'string' when expecting type 'array' 2" {
15+
declare -A SUB_OBJECT=([nested]='string_value')
16+
declare -A OBJECT=([my_key]=$'\x1C\x1Dtype=object;&SUB_OBJECT')
17+
18+
run bash_object.traverse get array OBJECT '.my_key.nested'
19+
20+
assert_failure
21+
assert_line -p "A query for type 'array' was given, but a string was found"
22+
}
23+
24+
@test "errors if final type is 'object' when expecting type 'string' 1" {
25+
declare -A SUB_OBJECT=([omicron]='pi')
26+
declare -A OBJECT=([my_key]=$'\x1C\x1Dtype=object;&SUB_OBJECT')
27+
28+
run bash_object.traverse get array OBJECT '.my_key'
29+
30+
assert_failure
31+
assert_line -p "A query for type 'array' was given, but an object was found"
32+
}
33+
34+
@test "errors if final type is 'object' when expecting type 'string' 2" {
35+
declare -A SUB_SUB_OBJECT=([omicron]='pi')
36+
declare -A SUB_OBJECT=([nested]=$'\x1C\x1Dtype=object;&SUB_SUB_OBJECT')
37+
declare -A OBJECT=([my_key]=$'\x1C\x1Dtype=object;&SUB_OBJECT')
38+
39+
run bash_object.traverse get array OBJECT '.my_key.nested'
40+
41+
assert_failure
42+
assert_line -p "A query for type 'array' was given, but an object was found"
43+
}

0 commit comments

Comments
 (0)