From 264ea7068e22e82294829d876942877e0b9ecfc5 Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Sat, 27 Jun 2020 08:59:25 -0700 Subject: [PATCH] Add clean handling of Control-C to the test suite Interrupting the test suite will noe run all cleanup necessary, (such as terminating the child processes that are still actively listening to empathy event streams), and will give a (partial) test report of all tests that have been completed. This is convenient for when a user doesn't want to wait for the slow tests to complete, but can still get some good information from sumarizing the results of all of the fast tests that have already been performed. --- test | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/test b/test index 4cdeb89..48db90d 100755 --- a/test +++ b/test @@ -1,5 +1,15 @@ #!/bin/bash +# Arrange for some cleanup to be executed if the user interrupts the +# test sutie (for example, by pressing ControlC at the controlling +# terminal). +cleanup_and_report() { + empathy_deactivate_all >/dev/null 2>&1 + TEST_REPORT + exit $? +} +trap cleanup_and_report INT + usage () { echo "Usage:$0 " @@ -60,6 +70,7 @@ TEST_END() # Print report of all previous test results TEST_REPORT() { + echo "" echo "" echo "Test Report" echo "===========" @@ -481,6 +492,13 @@ empathy_player_deactivate() eval ${player_pid}="" } +empathy_deactivate_all() +{ + for player in ${empathy_players[*]}; do + empathy_player_deactivate $player + done +} + # Pulls a single named event out of the empathy event stream # # Usage: empathy_get_event @@ -866,6 +884,12 @@ result=$(echo $(empathy_scores_names_numbers alice)) test "$result" = '"alice" 2 "bob" 2 "charlie" 0 "dale" 0 "eric" 0 "fred" 0' TEST_END +echo "" +echo "NOTE: Slow tests ahead!" +echo "If you are impatient and somehow \"know\" you don't care about the" +echo "tests below then you can interrupt the test suite with Control-C" +echo "to get a summary report on the tests that have already been run." + TEST_SUBSECTION "Inactive players don't appear in scores" TEST "Start 2-player game with 6 registered players" @@ -899,13 +923,4 @@ result=$(echo $(empathy_scores_names_numbers alice)) test "$result" = '"alice" 1 "bob" 1 "charlie" 0' TEST_END -empathy_deactivate_all() -{ - for player in ${empathy_players[*]}; do - empathy_player_deactivate $player - done -} - -empathy_deactivate_all - -TEST_REPORT +cleanup_and_report -- 2.43.0