diff --git a/run_tests.sh b/run_tests.sh index a7d66dd12..9cee6751b 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -2,163 +2,45 @@ set -eu -function usage { - echo "Usage: $0 [OPTION]..." - echo "Run python-novaclient test suite" - 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 " -s, --no-site-packages Isolate the virtualenv from the global Python environment" - echo " -x, --stop Stop running tests after the first error or failure." - echo " -f, --force Force a clean re-build of the virtual environment. Useful when dependencies have been added." - echo " -p, --pep8 Just run pep8" - echo " -P, --no-pep8 Don't run pep8" - echo " -c, --coverage Generate coverage report" - echo " -h, --help Print this usage message" - echo " --hide-elapsed Don't print the elapsed time for each test along with slow test list" - 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 -} +cat <<EOF +run_tests.sh is deprecated and this script will be removed +before the Mitaka release. All tests should be run through +tox. -function process_option { - case "$1" in - -h|--help) usage;; - -V|--virtual-env) always_venv=1; never_venv=0;; - -N|--no-virtual-env) always_venv=0; never_venv=1;; - -s|--no-site-packages) no_site_packages=1;; - -f|--force) force=1;; - -p|--pep8) just_pep8=1;; - -P|--no-pep8) no_pep8=1;; - -c|--coverage) coverage=1;; - -*) testropts="$testropts $1";; - *) testrargs="$testrargs $1" - esac -} +To run style checks: -venv=.venv -with_venv=tools/with_venv.sh -always_venv=0 -never_venv=0 -force=0 -no_site_packages=0 -installvenvopts= -testrargs= -testropts= -wrapper="" -just_pep8=0 -no_pep8=0 -coverage=0 + tox -e pep8 -LANG=en_US.UTF-8 -LANGUAGE=en_US:en -LC_ALL=C +To run python 2.7 unit tests -for arg in "$@"; do - process_option $arg -done + tox -e py27 -if [ $no_site_packages -eq 1 ]; then - installvenvopts="--no-site-packages" -fi +To run functional tests -function init_testr { - if [ ! -d .testrepository ]; then - ${wrapper} testr init - fi -} + tox -e functional -function run_tests { - # Cleanup *pyc - ${wrapper} find . -type f -name "*.pyc" -delete +To run a subset of any of these tests: - 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 - set +e - TESTRTESTS="$TESTRTESTS $testrargs" - echo "Running \`${wrapper} $TESTRTESTS\`" - ${wrapper} $TESTRTESTS - RESULT=$? - set -e + tox -e py27 someregex - copy_subunit_log + i.e.: tox -e py27 test_servers - return $RESULT -} +Use following to replace './run_test.sh -8' to do pep8 check with changed files -function copy_subunit_log { - LOGNAME=`cat .testrepository/next-stream` - LOGNAME=$(($LOGNAME - 1)) - LOGNAME=".testrepository/${LOGNAME}" - cp $LOGNAME subunit.log -} + tox -e pep8 -- -HEAD -function run_pep8 { - echo "Running flake8 ..." - ${wrapper} flake8 -} +Additional tox targets are available in tox.ini. For more information +see: +http://docs.openstack.org/project-team-guide/project-setup/python.html -TESTRTESTS="testr run --parallel $testropts" +NOTE: if you really really don't want to use tox to run tests, you +can instead use: -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 [ -e ${venv} ]; then - wrapper="${with_venv}" - else - if [ $always_venv -eq 1 ]; then - # Automatically install the virtualenv - python tools/install_venv.py $installvenvopts - 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 $installvenvopts - wrapper=${with_venv} - fi - fi - fi -fi + testr run -# Delete old coverage data from previous runs -if [ $coverage -eq 1 ]; then - ${wrapper} coverage erase -fi +Documentation on using testr directly can be found at +http://testrepository.readthedocs.org/en/latest/MANUAL.html -if [ $just_pep8 -eq 1 ]; then - run_pep8 - exit -fi +EOF -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 (testrargs). -if [ -z "$testrargs" ]; then - if [ $no_pep8 -eq 0 ]; then - run_pep8 - fi -fi - -if [ $coverage -eq 1 ]; then - echo "Generating coverage report in covhtml/" - ${wrapper} coverage combine - ${wrapper} coverage html --include='novaclient/*' --omit='novaclient/openstack/common/*' -d covhtml -i -fi +exit 1