Add '--mode' to set test coverage mode in cover.sh Coverage mode options passed to 'go test'. Defaults to 'atomic'. Run 'cover.sh --help' for usage. Ensure that results are in same dir as cover.sh file.
diff --git a/cover.sh b/cover.sh index 7c312e5..59dc9b4 100755 --- a/cover.sh +++ b/cover.sh
@@ -1,10 +1,48 @@ #!/usr/bin/env bash set -e -echo "mode: atomic" > coverage.txt +DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) + +usage() +{ +cat << EOF +Usage: $(basename $0) --mode CoverMode + +This script will run 'go test' on all non-vendor subdirs, then 'go tool cover' +for test coverage. Any 'go test' failures will exit the script. If all tests +are successful, it outputs a 'coverage.html' file with test coverage result. + +OPTIONS: + -h Show this message + -m or --mode Test coverage mode: set, count, or atomic (default) +EOF +} + +# Set default variables +coverMode="atomic" +while : +do + case $1 in + -h | --help | -\?) + usage + exit 0 # This not an error, User asked help. Don't do "exit 1" + ;; + -m | --mode) + coverMode=$2 + shift 2 + ;; + *) + break + ;; + esac +done + +echo "mode: $coverMode" | tee coverage.txt + +cd $DIR for d in $(go list ./... | grep -v vendor); do - go test -coverprofile=profile.out -covermode=atomic $d + go test -coverprofile=profile.out -covermode=$coverMode $d if [ -f profile.out ]; then tail +2 profile.out >> coverage.txt rm profile.out