diff options
author | kubi <jean.gaoliang@huawei.com> | 2015-09-14 02:50:50 -0400 |
---|---|---|
committer | kubi <jean.gaoliang@huawei.com> | 2015-10-28 11:21:26 +0800 |
commit | 607148f8e4eb4ebb443dd5098b4fea5f880f9fbb (patch) | |
tree | f220a594c6688144d2ebcfea5b4f14f98190179c /ci | |
parent | f37d291f6397891cd0dc37c6140b114868921b61 (diff) |
part 2 :add coverage report in Jenkins for Yardstick
this part is focus on script on run coverage test,not only show missing lines
but also show diff between your patch and master,
actually,it produce a html for coverage,but now ,it just on your local machine
extra missing lines is 10-lines,final target is 4-lines
JIRA:YARDSTICK-108
Change-Id: I550dff51d6f89562447e12127646155325e38a4a
Signed-off-by: kubi <jean.gaoliang@huawei.com>
Diffstat (limited to 'ci')
-rw-r--r-- | ci/cover.sh | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/ci/cover.sh b/ci/cover.sh new file mode 100644 index 000000000..51b009de8 --- /dev/null +++ b/ci/cover.sh @@ -0,0 +1,66 @@ +############################################################################## +# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +# make coverage report +############################################################################## + +show_diff () { + head -1 $1 + diff -U 0 $1 $2 | sed 1,2d +} + + +run_coverage_test() { + + ALLOWED_EXTRA_MISSING=10 + + + # Stash uncommitted changes, checkout master and save coverage report + uncommited=$(git status --porcelain | grep -v "^??") + [[ -n $uncommited ]] && git stash > /dev/null + git checkout HEAD^ + + baseline_report=$(mktemp -t yardstick_coverageXXXXXXX) + find . -type f -name "*.pyc" -delete && python setup.py testr --coverage --testr-args="$*" + coverage report > $baseline_report + baseline_missing=$(awk 'END { print $3 }' $baseline_report) + + # Checkout back and unstash uncommitted changes (if any) + git checkout - + [[ -n $uncommited ]] && git stash pop > /dev/null + + # Generate and save coverage report + current_report=$(mktemp -t yardstick_coverageXXXXXXX) + find . -type f -name "*.pyc" -delete && python setup.py testr --coverage --testr-args="$*" + coverage report > $current_report + current_missing=$(awk 'END { print $3 }' $current_report) + + # Show coverage details + allowed_missing=$((baseline_missing+ALLOWED_EXTRA_MISSING)) + + echo "Allowed to introduce missing lines : ${ALLOWED_EXTRA_MISSING}" + echo "Missing lines in master : ${baseline_missing}" + echo "Missing lines in proposed change : ${current_missing}" + + if [ $allowed_missing -gt $current_missing ]; + then + if [ $baseline_missing -lt $current_missing ]; + then + show_diff $baseline_report $current_report + echo "I believe you can cover all your code with 100% coverage!" + else + echo "Thank you! You are awesome! Keep writing unit tests! :)" + fi + else + show_diff $baseline_report $current_report + echo "Please write more unit tests, we should keep our test coverage :( " + rm $baseline_report $current_report + exit 1 + fi + + rm $baseline_report $current_report +} |