docs/script/generate-coverage

56 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
set -e
COVERAGE_DIR=/tmp/coverage
generate_coverage_for_dir () {
echo
echo "Generating coverage report for $1..."
cd "$1" >/dev/null
PKG_COVERAGE_DIR=${COVERAGE_DIR}/"$1"
PKG_PROFILE=${PKG_COVERAGE_DIR}/profile.txt
mkdir -p ${PKG_COVERAGE_DIR}
go test -covermode=set -coverprofile=${PKG_PROFILE}
go tool cover -html=${PKG_PROFILE} -o ${PKG_COVERAGE_DIR}/index.html
cd - >/dev/null
echo "Done generating coverage for $1."
for f in $(ls "$1"); do
REL_PATH="$1/$f"
for exclude in ${EXCLUDED_DIRS}; do
if [[ "$REL_PATH" == "$exclude" ]]; then
continue 2
fi
done
# If file is directory and not Godeps
# (don't worry about generating 3rd party code coverage)
if [[ -d "$REL_PATH" ]]; then
# invoke recursively
generate_coverage_for_dir ${REL_PATH}
fi
done
echo
}
if [[ "$IN_CONTAINER" == "yes" ]]; then
cd /go/src/github.com/docker
DIR="machine"
else
DIR="."
fi
# Script will bomb out on some dirs if there are no buildable source files,
# we shouldn't be checking these anyway so skip over them.
EXCLUDED_DIRS="${DIR}/Godeps ${DIR}/test ${DIR}/docs ${DIR}/script"
generate_coverage_for_dir ${DIR}
echo "Done checking and generating coverage!"
if [[ "$SERVE" == "yes" ]]; then
cd ${COVERAGE_DIR}/machine
echo "*****************************************"
echo "* Serving coverage file on port 8000... *"
echo "*****************************************"
python -m SimpleHTTPServer 8000
fi