diff options
Diffstat (limited to 'tests/ci')
-rw-r--r-- | tests/ci/cover.awk | 25 | ||||
-rw-r--r-- | tests/ci/cover.sh | 92 |
2 files changed, 91 insertions, 26 deletions
diff --git a/tests/ci/cover.awk b/tests/ci/cover.awk new file mode 100644 index 000000000..e4bb816dc --- /dev/null +++ b/tests/ci/cover.awk @@ -0,0 +1,25 @@ +BEGIN{ + template = "%6s %-75s\n" + printf template, "Delta", "Module Path" +} + +/^-/{ + s = substr($1, 2) + x[s] = $3; +}; + +/^+/{ + s = substr($1, 2) + d = $3 + if (s in x) + d = d - x[s] + y[s" "d] = d +} + +END{ + asorti(y, z1, "@val_num_asc") + for (i=1; i <= length(z1); i++){ + split(z1[i], z2, " ") + printf template, z2[2], z2[1] + } +} diff --git a/tests/ci/cover.sh b/tests/ci/cover.sh index 822ed2ff2..780a85a22 100644 --- a/tests/ci/cover.sh +++ b/tests/ci/cover.sh @@ -1,3 +1,4 @@ +#!/bin/bash ############################################################################## # Copyright 2015: Mirantis Inc. # All Rights Reserved. @@ -17,65 +18,104 @@ # rally/tests/ci/cover.sh ############################################################################## +if [[ -n $COVER_DIR_NAME ]]; then + : +elif [[ -n $_ ]]; then + COVER_DIR_NAME=$( dirname $_ ) +else + COVER_DIR_NAME=$( dirname $0 ) +fi + show_diff () { - head -1 $1 - diff -U 0 $1 $2 | sed 1,2d + diff -U 0 $1 $2 | awk -f $COVER_DIR_NAME/cover.awk } - run_coverage_test() { ALLOWED_EXTRA_MISSING=10 - + # enable debugging + set -x # Stash uncommitted changes, checkout master and save coverage report uncommited=$(git status --porcelain | grep -v "^??") - [[ -n $uncommited ]] && git stash > /dev/null + [[ -n ${uncommited} ]] && git stash > /dev/null git checkout HEAD^ baseline_report=$(mktemp -t yardstick_coverageXXXXXXX) + ls -l .testrepository + # workaround 'db type could not be determined' bug # https://bugs.launchpad.net/testrepository/+bug/1229445 rm -rf .testrepository - find . -type f -name "*.pyc" -delete && python setup.py testr --coverage --slowest --testr-args="$*" - coverage report > $baseline_report - baseline_missing=$(awk 'END { print $3 }' $baseline_report) + find . -type f -name "*.pyc" -delete + + #python setup.py testr --coverage --testr-args="" + python setup.py testr --coverage --slowest --testr-args="$*" + testr failing + coverage report > ${baseline_report} + + # debug awk + tail -1 ${baseline_report} + baseline_missing=$(awk 'END { if (int($3) > 0) print $3 }' ${baseline_report}) + + if [[ -z $baseline_missing ]]; then + echo "Failed to determine baseline missing" + exit 1 + fi # Checkout back and unstash uncommitted changes (if any) git checkout - - [[ -n $uncommited ]] && git stash pop > /dev/null + [[ -n ${uncommited} ]] && git stash pop > /dev/null # Generate and save coverage report current_report=$(mktemp -t yardstick_coverageXXXXXXX) + ls -l .testrepository + # workaround 'db type could not be determined' bug # https://bugs.launchpad.net/testrepository/+bug/1229445 rm -rf .testrepository - find . -type f -name "*.pyc" -delete && python setup.py testr --coverage --slowest --testr-args="$*" - coverage report > $current_report - current_missing=$(awk 'END { print $3 }' $current_report) + find . -type f -name "*.pyc" -delete + + #python setup.py testr --coverage --testr-args="" + python setup.py testr --coverage --slowest --testr-args="$*" + testr failing + coverage report > ${current_report} + + rm -rf cover-$PY_VER + coverage html -d cover-$PY_VER + + # debug awk + tail -1 ${current_report} + current_missing=$(awk 'END { if (int($3) > 0) print $3 }' ${current_report}) + + if [[ -z $current_missing ]]; then + echo "Failed to determine current missing" + exit 1 + fi # Show coverage details - allowed_missing=$((baseline_missing+ALLOWED_EXTRA_MISSING)) + new_missing=$((current_missing - baseline_missing)) - echo "Allowed to introduce missing lines : ${ALLOWED_EXTRA_MISSING}" + echo "Missing lines allowed to introduce : ${ALLOWED_EXTRA_MISSING}" + echo "Missing lines introduced : ${new_missing}" echo "Missing lines in master : ${baseline_missing}" echo "Missing lines in proposed change : ${current_missing}" - if [ $allowed_missing -gt $current_missing ]; + if [[ ${new_missing} -gt ${ALLOWED_EXTRA_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 + show_diff ${baseline_report} ${current_report} echo "Please write more unit tests, we should keep our test coverage :( " - rm $baseline_report $current_report + rm ${baseline_report} ${current_report} exit 1 + + elif [[ ${new_missing} -gt 0 ]]; + 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 - rm $baseline_report $current_report + rm ${baseline_report} ${current_report} } |