aboutsummaryrefslogtreecommitdiffstats
path: root/tests/ci
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ci')
-rw-r--r--tests/ci/cover.awk25
-rw-r--r--tests/ci/cover.sh92
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}
}