-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.sh
executable file
·121 lines (97 loc) · 2.62 KB
/
test.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/bin/bash
errors=()
remove_colors() {
local input="$1"
local plain_string=$(echo "$input" | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g")
echo "$plain_string"
}
check_test() {
res=$(remove_colors "$res")
if [ "$res" != "$exp" ]; then
errors+=("ERROR at \"$test\": \n\texpected \"$exp\",\n\treceived \"$res\"\n")
fi
}
check_error_string() {
if [ "$1" != "" ]; then
errors+=("ERROR at \"$test\": \n\tunexpected error\n")
fi
}
check_test_error() {
if [ $? -eq 0 ]; then
errors+=("ERROR at \"$test\": \n\texpected exit with error\n")
fi
}
test="array compact"
exp="[1,2,3]"
res=$(node . '.data.compact()' '{ "data": [1, 2, 2, 3] }' -c )
check_test
test="object listKeys"
exp='["a","b","c"]'
res=$(node . '.data.listKeys()' '{ "data": {"a": 1, "b": 2, "c": 3} }' -c)
check_test
test="object listValues"
exp="[1,2,3]"
res=$(node . '.data.listValues()' '{ "data": {"a": 1, "b": 2, "c": 3} }' -c)
check_test
test="object listEntries"
exp="[[\"a\",1],[\"b\",2],[\"c\",3]]"
res=$(node . '.data.listEntries()' '{ "data": {"a": 1, "b": 2, "c": 3} }' -c)
check_test
test="number type"
exp="number"
res=$(node . '.data[0]' '{ "data": [1, 2, 3] }' -t)
check_test
test="string type"
exp="string"
res=$(node . '.data[0]' '{ "data": ["1", "2", "3"] }' -t)
check_test
test="array type"
exp="array"
res=$(node . '.data' '{ "data": [1, 2, 3] }' -t)
check_test
test="object type"
exp="object"
res=$(node . '.data' '{ "data": {"a": 1, "b": 2, "c": 3} }' -t)
check_test
test="from file"
exp="[1,2,3]"
res=$(node . '.data' 'test.json' -c)
check_test
test="from pipe"
exp="[1,2,3]"
res=$(echo '{ "data": [1, 2, 3] }' | node . '.data' -c)
check_test
test="from pipe multiple"
exp="[ 1, 2, 3 ]"
err=$((
echo '{ "data": [1, 2, 3] }'; sleep 1;
echo '{ "data": [1, 2, 3] }'; sleep 1;
echo '{ "data": [1, 2, 3] }'
) | node . '.data' 2>&1 >/dev/null)
check_error_string "$err"
test="compact option"
exp="[[\"a\",1],[\"b\",2],[\"c\",3]]"
res=$(node . '.data.listEntries()' '{ "data": {"a": 1, "b": 2, "c": 3} }' -c)
check_test
test="compact option extended"
exp='[["a",1],["b",2],["c",3]]'
res=$(node . '.data.listEntries()' '{ "data": {"a": 1, "b": 2, "c": 3} }' --compact-output)
check_test
test="no raw option"
exp='"string"'
res=$(node . '.data' '{ "data": "string" }')
check_test
test="block interactive mode"
res=$(echo '{ "data": [1, 2, 3] }' | node . '.' -i &> /dev/null)
check_test_error
test="property override"
res=$(jsjq '.stringify()' '{ "stringify": 123 }' &> /dev/null)
check_test_error
if [ "${#errors[@]}" -ne "0" ]; then
for err in "${errors[@]}"; do
printf "$err\n"
done
echo "some test failed!"
exit 1
fi
echo "all tests OK!"