Skip to content

Commit 1823861

Browse files
committed
Add test results and new silent mode
1 parent 0f68990 commit 1823861

File tree

1 file changed

+49
-5
lines changed

1 file changed

+49
-5
lines changed

api-test.sh

Lines changed: 49 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ ID_TOKEN=""
2121
URL=""
2222

2323
SHOW_HEADER=0
24+
SUPER_SILENT=0
2425
HEADER_ONLY=0
2526
SILENT=0
2627
API_ERROR=0
@@ -70,6 +71,7 @@ function usage() {
7071
echo " -i (--include) include header"
7172
echo " -I (--header-only) header only"
7273
echo " -s (--silent) print response status and message only"
74+
echo " -S (--super-silent) print response only"
7375
echo ""
7476
echo "ARGS:"
7577
echo " all Run all test case."
@@ -181,8 +183,10 @@ display_results() {
181183
fi
182184

183185
fi
184-
echo "META:"
185-
echo "$META" | jq -C '.'
186+
if [[ $SUPER_SILENT == 0 ]]; then
187+
echo "META:"
188+
echo "$META" | jq -C '.'
189+
fi
186190
}
187191

188192
api_factory() {
@@ -199,6 +203,9 @@ api_factory() {
199203
}
200204

201205
test_factory() {
206+
TOTAL_TEST_CASE=0
207+
TOTAL_FAIL_CASE=0
208+
ANY_API_ERROR=0
202209
for TEST_CASE in $@; do
203210
API_ERROR=0
204211
echo "${BOLD}Testing Case:${RESET} $TEST_CASE"
@@ -213,6 +220,10 @@ test_factory() {
213220
fi
214221
call_api $TEST_CASE
215222
if [[ $API_ERROR == 1 ]]; then
223+
ANY_API_ERROR=1
224+
tput cuf 2
225+
echo -e "${BOLD}${RED}Error running tests after failed api request for '$TEST_CASE' ${RESET}"
226+
echo -e "\n"
216227
continue
217228
fi
218229

@@ -239,19 +250,42 @@ test_factory() {
239250
tput cuf 2
240251
echo "${UNDERLINE}Checking condition form external program${RESET}"
241252
external_script "$TEST_SCENARIO" "$TEST_CASE" "$RESPONSE_BODY" "$RESPONSE_HEADER"
253+
TOTAL_TEST_CASE=$((TOTAL_TEST_CASE + 1))
242254
echo ""
243255
echo ""
244256
fi
257+
245258
done
259+
echo -e "${BOLD}Total tests:\t$TOTAL_TEST_CASE"
260+
if [[ $(($TOTAL_TEST_CASE - $TOTAL_FAIL_CASE)) != 0 ]]; then
261+
printf $GREEN
262+
fi
263+
echo -e "${BOLD}Total success:\t$(($TOTAL_TEST_CASE - $TOTAL_FAIL_CASE))${RESET}"
264+
265+
if [[ $TOTAL_FAIL_CASE != 0 ]]; then
266+
printf $RED
267+
else
268+
if [[ $ANY_API_ERROR != 0 ]]; then
269+
echo -e "\n${BOLD}${RED}Some test cases failed to connect to the requested api.${RESET}"
270+
exit 1
271+
else
272+
echo -e "\n${BOLD}${GREEN}All tests ran successfully!${RESET}"
273+
fi
274+
exit 0
275+
fi
276+
echo -e "${BOLD}Total failure:\t$TOTAL_FAIL_CASE${RESET}"
277+
echo -e "\n${BOLD}${RED}Tests Failed!${RESET}"
278+
exit 1
246279

247280
}
248281

249282
test_runner() {
250283
for test in ""contains eq path_eq path_contains hasKey[]""; do
251-
local TEST_SCENARIO=$(jq -r ".testCases.$1.expect.$2.$test? | select(. !=null)" $FILE)
284+
local TEST_SCENARIO=$(jq -c -r ".testCases.$1.expect.$2.$test? | select(. !=null)" $FILE)
252285
if [[ -z $TEST_SCENARIO ]]; then
253286
continue
254287
fi
288+
TOTAL_TEST_CASE=$((TOTAL_TEST_CASE + 1))
255289
tput cuf 4
256290
if [[ $test == "contains" ]]; then
257291
echo "Checking contains comparision${RESET}"
@@ -276,11 +310,12 @@ external_script() {
276310
$1 "$2" "$3" "$4"
277311
local EXIT_CODE=$?
278312
if [[ $EXIT_CODE == 0 ]]; then
279-
tput cuf 6
313+
tput cuf 4
280314
echo "${GREEN}${BOLD}Check Passed${RESET}"
281315
else
282-
tput cuf 6
316+
tput cuf 4
283317
echo "${RED}${BOLD}Check Failed${RESET}"
318+
TOTAL_FAIL_CASE=$((TOTAL_FAIL_CASE + 1))
284319
fi
285320
}
286321

@@ -291,6 +326,7 @@ contains() {
291326
echo "${GREEN}${BOLD}Check Passed${RESET}"
292327
else
293328
echo "${RED}${BOLD}Check Failed${RESET}"
329+
TOTAL_FAIL_CASE=$((TOTAL_FAIL_CASE + 1))
294330
echo "EXPECTED:"
295331
echo "${GREEN}$1${RESET}"
296332
echo "GOT:"
@@ -320,6 +356,7 @@ has_key() {
320356
done
321357
if [[ $FOUND == 0 ]]; then
322358
echo "${RED}${BOLD}Check Failed${RESET}"
359+
TOTAL_FAIL_CASE=$((TOTAL_FAIL_CASE + 1))
323360
echo "CANNOT FIND KEY:"
324361
echo "${RED}$path${RESET}"
325362
echo ""
@@ -343,6 +380,7 @@ check_eq() {
343380
else
344381
tput cuf 2
345382
echo "${RED}${BOLD}Check Failed${RESET}"
383+
TOTAL_FAIL_CASE=$((TOTAL_FAIL_CASE + 1))
346384
echo "EXPECTED:"
347385
echo "${GREEN}$1${RESET}"
348386
echo "GOT:"
@@ -364,6 +402,7 @@ path_checker() {
364402
if [[ -z "$compare_value" ]]; then
365403
tput cuf 8
366404
echo "${RED}${BOLD}Check Failed${RESET}"
405+
TOTAL_FAIL_CASE=$((TOTAL_FAIL_CASE + 1))
367406
tput cuf 2
368407
echo "INVALID PATH SYNTAX: ${RED}data[0]target_id${RESET}"
369408
return
@@ -392,6 +431,11 @@ run() {
392431
SILENT=1
393432
shift
394433
;;
434+
-S | --super-silent)
435+
SILENT=1
436+
SUPER_SILENT=1
437+
shift
438+
;;
395439
-h | --help)
396440
usage run
397441
exit

0 commit comments

Comments
 (0)