summaryrefslogtreecommitdiff
path: root/run_tests.sh
diff options
context:
space:
mode:
authorJosh Kearney <josh@jk0.org>2013-01-22 11:09:11 -0600
committerJosh Kearney <josh@jk0.org>2013-01-22 12:16:09 -0600
commit63c8bb5306d15c7679b2cd1d22b6ee556967863d (patch)
tree3ffa74771e9c85cd9023ce5294147bb633d3cea2 /run_tests.sh
parentc1ea2989049c102fde0ea22ac06d066a34d7b0db (diff)
downloadpython-openstackclient-63c8bb5306d15c7679b2cd1d22b6ee556967863d.tar.gz
Migrate from nose to testr.
Run tests with testr for parallel execution. Part of blueprint grizzly-testtools. Change-Id: I560592186f2f440049a451a32e58067262ab62d0
Diffstat (limited to 'run_tests.sh')
-rwxr-xr-xrun_tests.sh60
1 files changed, 45 insertions, 15 deletions
diff --git a/run_tests.sh b/run_tests.sh
index 4700c116..ff5f83ec 100755
--- a/run_tests.sh
+++ b/run_tests.sh
@@ -33,8 +33,8 @@ function process_option {
-p|--pep8) just_pep8=1;;
-P|--no-pep8) no_pep8=1;;
-c|--coverage) coverage=1;;
- -*) noseopts="$noseopts $1";;
- *) noseargs="$noseargs $1"
+ -*) testropts="$testropts $1";;
+ *) testrargs="$testrargs $1"
esac
}
@@ -45,34 +45,62 @@ never_venv=0
force=0
no_site_packages=0
installvenvopts=
-noseargs=
-noseopts=
+testrargs=
+testropts=
wrapper=""
just_pep8=0
no_pep8=0
coverage=0
+LANG=en_US.UTF-8
+LANGUAGE=en_US:en
+LC_ALL=C
+
for arg in "$@"; do
process_option $arg
done
-# If enabled, tell nose to collect coverage data
-if [ $coverage -eq 1 ]; then
- noseopts="$noseopts --with-coverage --cover-package=openstackclient"
-fi
-
if [ $no_site_packages -eq 1 ]; then
installvenvopts="--no-site-packages"
fi
+function init_testr {
+ if [ ! -d .testrepository ]; then
+ ${wrapper} testr init
+ fi
+}
+
function run_tests {
+ # Cleanup *.pyc
+ ${wrapper} find . -type f -name "*.pyc" -delete
+
+ if [ $coverage -eq 1 ]; then
+ # Do not test test_coverage_ext when gathering coverage.
+ if [ "x$testrargs" = "x" ]; then
+ testrargs = "^(?!.*test_coverage_ext).*$"
+ fi
+ export PYTHON="${wrapper} coverage run --source novaclient --parallel-mode"
+ fi
# Just run the test suites in current environment
- ${wrapper} $NOSETESTS
- # If we get some short import error right away, print the error log directly
+ set +e
+ TESTRTESTS="$TESTRTESTS $testrargs"
+ echo "Running \`${wrapper} $TESTRTESTS\`"
+ ${wrapper} $TESTRTESTS
RESULT=$?
+ set -e
+
+ copy_subunit_log
+
return $RESULT
}
+function copy_subunit_log {
+ LOGNAME=`cat .testrepository/next-stream`
+ LOGNAME=$(($LOGNAME - 1))
+ LOGNAME=".testrepository/${LOGNAME}"
+ cp $LOGNAME subunit.log
+}
+
function run_pep8 {
echo "Running pep8 ..."
srcfiles="openstackclient tests"
@@ -96,7 +124,7 @@ function run_pep8 {
${wrapper} pep8 ${pep8_opts} ${srcfiles}
}
-NOSETESTS="nosetests $noseopts $noseargs"
+TESTRTESTS="testr run --parallel $testropts"
if [ $never_venv -eq 0 ]
then
@@ -134,13 +162,14 @@ if [ $just_pep8 -eq 1 ]; then
exit
fi
+init_testr
run_tests
# NOTE(sirp): we only want to run pep8 when we're running the full-test suite,
# not when we're running tests individually. To handle this, we need to
# distinguish between options (noseopts), which begin with a '-', and
-# arguments (noseargs).
-if [ -z "$noseargs" ]; then
+# arguments (testrargs).
+if [ -z "$testrargs" ]; then
if [ $no_pep8 -eq 0 ]; then
run_pep8
fi
@@ -148,5 +177,6 @@ fi
if [ $coverage -eq 1 ]; then
echo "Generating coverage report in covhtml/"
- ${wrapper} coverage html -d covhtml -i
+ ${wrapper} cverage combine
+ ${wrapper} coverage html --include='novaclient/*' --omit='novaclient/openstack/common/*' -d covhtml -i
fi