Merge pull request #453 from nathanleclaire/coverage
Add structure to generate code coverage representation
This commit is contained in:
17
script/coverage
Executable file
17
script/coverage
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
docker build -t docker-machine .
|
||||
|
||||
if [[ "$1" == "serve" ]]; then
|
||||
SERVE=yes
|
||||
else
|
||||
SERVE=no
|
||||
fi
|
||||
|
||||
docker run -it \
|
||||
-e IN_CONTAINER=yes \
|
||||
-e SERVE=${SERVE} \
|
||||
-p 8000:8000 \
|
||||
--rm docker-machine \
|
||||
./script/generate-coverage
|
||||
55
script/generate-coverage
Executable file
55
script/generate-coverage
Executable file
@@ -0,0 +1,55 @@
|
||||
#!/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}/_integration-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
|
||||
Reference in New Issue
Block a user