Browse Source

Merge pull request #4048 from fabiofalci/test_integration_coverage

Collect package coverage information when running integration tests
Tianon Gravi 11 years ago
parent
commit
ea0cce6270
3 changed files with 16 additions and 15 deletions
  1. 13 2
      hack/make.sh
  2. 1 12
      hack/make/test
  3. 2 1
      hack/make/test-integration

+ 13 - 2
hack/make.sh

@@ -16,7 +16,7 @@ set -e
 #   in the Dockerfile at the root of the source. In other words:
 #   DO NOT CALL THIS SCRIPT DIRECTLY.
 # - The right way to call this script is to invoke "make" from
-#   your checkout of the Docker repository. 
+#   your checkout of the Docker repository.
 #   the Makefile will do a "docker build -t docker ." and then
 #   "docker run hack/make.sh" in the resulting container image.
 #
@@ -101,13 +101,14 @@ fi
 #
 go_test_dir() {
 	dir=$1
+	coverpkg=$2
 	testcover=()
 	if [ "$HAVE_GO_TEST_COVER" ]; then
 		# if our current go install has -cover, we want to use it :)
 		mkdir -p "$DEST/coverprofiles"
 		coverprofile="docker${dir#.}"
 		coverprofile="$DEST/coverprofiles/${coverprofile//\//-}"
-		testcover=( -cover -coverprofile "$coverprofile" )
+		testcover=( -cover -coverprofile "$coverprofile" $coverpkg )
 	fi
 	(
 		set -x
@@ -116,6 +117,16 @@ go_test_dir() {
 	)
 }
 
+# This helper function walks the current directory looking for directories
+# holding certain files ($1 parameter), and prints their paths on standard
+# output, one per line.
+find_dirs() {
+	find -not \( \
+		\( -wholename './vendor' -o -wholename './integration' -o -wholename './contrib' -o -wholename './pkg/mflag/example' \) \
+		-prune \
+	\) -name "$1" -print0 | xargs -0n1 dirname | sort -u
+}
+
 bundle() {
 	bundlescript=$1
 	bundle=$(basename $bundlescript)

+ 1 - 12
hack/make/test

@@ -19,7 +19,7 @@ bundle_test() {
 		date
 
 		TESTS_FAILED=()
-		for test_dir in $(find_test_dirs); do
+		for test_dir in $(find_dirs '*_test.go'); do
 			echo
 
 			if ! LDFLAGS="$LDFLAGS $LDFLAGS_STATIC" go_test_dir "$test_dir"; then
@@ -48,15 +48,4 @@ bundle_test() {
 	} 2>&1 | tee $DEST/test.log
 }
 
-
-# This helper function walks the current directory looking for directories
-# holding Go test files, and prints their paths on standard output, one per
-# line.
-find_test_dirs() {
-	find -not \( \
-		\( -wholename './vendor' -o -wholename './integration' \) \
-		-prune \
-	\) -name '*_test.go' -print0 | xargs -0n1 dirname | sort -u
-}
-
 bundle_test

+ 2 - 1
hack/make/test-integration

@@ -5,7 +5,8 @@ DEST=$1
 set -e
 
 bundle_test_integration() {
-	LDFLAGS="$LDFLAGS $LDFLAGS_STATIC" go_test_dir ./integration
+	LDFLAGS="$LDFLAGS $LDFLAGS_STATIC" go_test_dir ./integration \
+		"-coverpkg $(find_dirs '*.go' | sed 's,^\.,github.com/dotcloud/docker,g' | paste -d, -s)"
 }
 
 bundle_test_integration 2>&1 | tee $DEST/test.log