@@ -21,6 +21,7 @@ ID_TOKEN=""
2121URL=" "
2222
2323SHOW_HEADER=0
24+ SUPER_SILENT=0
2425HEADER_ONLY=0
2526SILENT=0
2627API_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
188192api_factory () {
@@ -199,6 +203,9 @@ api_factory() {
199203}
200204
201205test_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
249282test_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