#!/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>"
# Print report of all previous test results
TEST_REPORT()
{
+ echo ""
echo ""
echo "Test Report"
echo "==========="
curl_put /profile "{ \"nickname\": \"$player\" }" "-c ${!player_cookie}"
empathy_get $player events >/dev/null 2>&1 &
eval ${player_pid}=$!
+ empathy_players+=($player)
}
# Usage: empathy_player_deactivate <player_name>
{
player="$1"
player_pid=${player}_pid
- pkill -P ${!player_pid}
+ if [ "${!player_pid}" != "" ]; then
+ pkill -P ${!player_pid}
+ fi
+ 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
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"
test "$result" = '"alice" 1 "bob" 1 "charlie" 0'
TEST_END
-empathy_player_deactivate alice
-empathy_player_deactivate bob
-empathy_player_deactivate charlie
-
-TEST_REPORT
+cleanup_and_report