Deprecate run_tests.sh

run_tests.sh does not run the unit tests or pep8 checks as Jenkins
does, leading to commits that fail Jenkins tests. This patch replaces
its functionality with instructions for installing and running tox.

Change-Id: Ie6b13b59726ed0e7483eb91ff4095d79f058a360
Closes-Bug: #1326055
This commit is contained in:
Steve McLellan 2014-06-12 13:23:50 -05:00
parent 9aa8a127b9
commit 58ef20e185
1 changed files with 36 additions and 115 deletions

View File

@ -1,123 +1,44 @@
#!/bin/bash
function usage {
echo "Usage: $0 [OPTION]..."
echo "Run Murano API's test suite(s)"
echo ""
echo " -V, --virtual-env Always use virtualenv. Install automatically if not present"
echo " -N, --no-virtual-env Don't use virtualenv. Run tests in local environment"
echo " -f, --force Force a clean re-build of the virtual environment. Useful when dependencies have been added."
echo " -u, --update Update the virtual environment with any newer package versions"
echo " --unittests-only Run unit tests only, exclude functional tests."
echo " -p, --pep8 Just run pep8"
echo " -P, --no-pep8 Don't run static code checks"
echo " -h, --help Print this usage message"
echo ""
echo "Note: with no options specified, the script will try to run the tests in a virtual environment,"
echo " If no virtualenv is found, the script will ask if you would like to create one. If you "
echo " prefer to run tests NOT in a virtual environment, simply pass the -N option."
exit
}
EXPECTED_TOX_VERSION="1.6.1"
function process_option {
case "$1" in
-h|--help) usage;;
-V|--virtual-env) let always_venv=1; let never_venv=0;;
-N|--no-virtual-env) let always_venv=0; let never_venv=1;;
-p|--pep8) let just_pep8=1;;
-P|--no-pep8) let no_pep8=1;;
-f|--force) let force=1;;
-u|--update) update=1;;
--unittests-only) noseopts="$noseopts --exclude-dir=functionaltests";;
-c|--coverage) noseopts="$noseopts --with-coverage --cover-package=murano";;
-*) noseopts="$noseopts $1";;
*) noseargs="$noseargs $1"
esac
}
venv=.venv
with_venv=tools/with_venv.sh
always_venv=0
never_venv=0
force=0
noseopts=
noseargs=
wrapper=""
just_pep8=0
no_pep8=0
update=0
export NOSE_WITH_OPENSTACK=1
export NOSE_OPENSTACK_COLOR=1
export NOSE_OPENSTACK_RED=0.05
export NOSE_OPENSTACK_YELLOW=0.025
export NOSE_OPENSTACK_SHOW_ELAPSED=1
export NOSE_OPENSTACK_STDOUT=1
for arg in "$@"; do
process_option $arg
done
function run_tests {
# Cleanup *pyc
${wrapper} find . -type f -name "*.pyc" -delete
# Just run the test suites in current environment
${wrapper} rm -f tests.sqlite
${wrapper} $NOSETESTS
}
function run_pep8 {
echo "Running pep8 ..."
PEP8_EXCLUDE=".venv,.tox,dist,doc,openstack"
PEP8_OPTIONS="--exclude=$PEP8_EXCLUDE --repeat"
PEP8_IGNORE="--ignore=E125,E126,E711,E712"
PEP8_INCLUDE=". bin/*"
${wrapper} pep8 $PEP8_OPTIONS $PEP8_INCLUDE $PEP8_IGNORE
}
NOSETESTS="nosetests $noseopts $noseargs"
if [ $never_venv -eq 0 ]
then
# Remove the virtual environment if --force used
if [ $force -eq 1 ]; then
echo "Cleaning virtualenv..."
rm -rf ${venv}
fi
if [ $update -eq 1 ]; then
echo "Updating virtualenv..."
python tools/install_venv.py
fi
if [ -e ${venv} ]; then
wrapper="${with_venv}"
else
if [ $always_venv -eq 1 ]; then
# Automatically install the virtualenv
python tools/install_venv.py
wrapper="${with_venv}"
else
echo -e "No virtual environment found...create one? (Y/n) \c"
read use_ve
if [ "x$use_ve" = "xY" -o "x$use_ve" = "x" -o "x$use_ve" = "xy" ]; then
# Install the virtualenv and run the test suite in it
python tools/install_venv.py
wrapper=${with_venv}
fi
fi
fi
tox_version=`tox --version 2>/dev/null`
if [ $? -ne 0 ]; then
tox_version="not installed"
else
tox_version=`echo $tox_version | cut -d' ' -f1`
fi
if [ $just_pep8 -eq 1 ]; then
run_pep8
exit
echo "run_tests.sh is deprecated in favor of running tox directly."
echo "This will ensure your results are the same as Jenkins'."
echo
if [ "$tox_version" == "not installed" ]; then
echo "It looks like tox isn't installed. You can install (globally or"
echo "into a virtualenv) with pip. Be sure to install version 1.6.1,"
echo "since later versions have problems running some tests. To install:"
echo
echo " pip install \"tox==1.6.1\""
echo
elif [ "$tox_version" != "$EXPECTED_TOX_VERSION" ]; then
echo "## WARNING ##"
echo "You have tox version $tox_version installed. Consider installing"
echo "version $EXPECTED_TOX_VERSION, since later versions may not run tests correctly."
echo
else
echo "You have tox $tox_version installed."
echo
fi
run_tests || exit
echo "To run unit tests or pep8 using tox:"
echo
echo " 'tox -e pep8' will run style checks"
echo " 'tox -e py26' will run python 2.6 unit tests"
echo " 'tox -e py27' will run python 2.7 unit tests"
echo " 'tox' will run all unit tests and pep8 (as Jenkins does)"
echo
echo "Tox creates its own virtual environments."
echo
echo "To run functional tests, run ./functionaltests/run_tests.sh"
if [ -z "$noseargs" ]; then
if [ $no_pep8 -eq 0 ]; then
run_pep8
fi
fi