Browse Source

Properly fix "daemon kill" on test failure

Signed-off-by: Andrew "Tianon" Page <admwiggin@gmail.com>
Tianon Gravi 10 years ago
parent
commit
c18fdc3704
2 changed files with 31 additions and 12 deletions
  1. 17 8
      project/make/test-docker-py
  2. 14 4
      project/make/test-integration-cli

+ 17 - 8
project/make/test-docker-py

@@ -7,15 +7,24 @@ DEST=$1
 (
 (
 	source "$(dirname "$BASH_SOURCE")/.integration-daemon-start"
 	source "$(dirname "$BASH_SOURCE")/.integration-daemon-start"
 
 
-	dockerPy='/docker-py'
-	[ -d "$dockerPy" ] || {
-		dockerPy="$DEST/docker-py"
-		git clone https://github.com/docker/docker-py.git "$dockerPy"
-	}
+	# we need to wrap up everything in between integration-daemon-start and
+	# integration-daemon-stop to make sure we kill the daemon and don't hang,
+	# even and especially on test failures
+	didFail=
+	if ! {
+		dockerPy='/docker-py'
+		[ -d "$dockerPy" ] || {
+			dockerPy="$DEST/docker-py"
+			git clone https://github.com/docker/docker-py.git "$dockerPy"
+		}
 
 
-	cd "$dockerPy"
-	export PYTHONPATH=. # import "docker" from "."
-	python tests/integration_test.py
+		export PYTHONPATH="$dockerPy" # import "docker" from our local docker-py
+		python "$dockerPy/tests/integration_test.py"
+	}; then
+		didFail=1
+	fi
 
 
 	source "$(dirname "$BASH_SOURCE")/.integration-daemon-stop"
 	source "$(dirname "$BASH_SOURCE")/.integration-daemon-stop"
+
+	[ -z "$didFail" ] # "set -e" ftw
 ) 2>&1 | tee -a $DEST/test.log
 ) 2>&1 | tee -a $DEST/test.log

+ 14 - 4
project/make/test-integration-cli

@@ -11,12 +11,22 @@ bundle_test_integration_cli() {
 (
 (
 	source "$(dirname "$BASH_SOURCE")/.integration-daemon-start"
 	source "$(dirname "$BASH_SOURCE")/.integration-daemon-start"
 
 
-	# pull the busybox image before running the tests
-	sleep 2
+	# we need to wrap up everything in between integration-daemon-start and
+	# integration-daemon-stop to make sure we kill the daemon and don't hang,
+	# even and especially on test failures
+	didFail=
+	if ! {
+		# pull the busybox image before running the tests
+		sleep 2
 
 
-	source "$(dirname "$BASH_SOURCE")/.ensure-busybox"
+		source "$(dirname "$BASH_SOURCE")/.ensure-busybox"
 
 
-	bundle_test_integration_cli
+		bundle_test_integration_cli
+	}; then
+		didFail=1
+	fi
 
 
 	source "$(dirname "$BASH_SOURCE")/.integration-daemon-stop"
 	source "$(dirname "$BASH_SOURCE")/.integration-daemon-stop"
+
+	[ -z "$didFail" ] # "set -e" ftw
 ) 2>&1 | tee -a $DEST/test.log
 ) 2>&1 | tee -a $DEST/test.log