]> git.cworth.org Git - empires-server/blobdiff - test
Add clean handling of Control-C to the test suite
[empires-server] / test
diff --git a/test b/test
index 4cdeb895991e6122379b0d412d527997963aa838..48db90d117ca13a295f565984db5dc57c0aed463 100755 (executable)
--- 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 <URL-to-test>"
@@ -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 <player_name> <event_name>
@@ -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