1f80d94459
Nose has been in maintenance mode for the past several years. It has issue with exit code [1] which leads to false positive results for our seleniun-headless job. This patch changes test runner for Horizon tests and does the following things: * Django test runner executes test in a different order than Nose does. That's why we've got an issue with side-effect in horizon.tests.unit.tables.test_tables.MyToggleAction class. This patch adds workaround to it. * Rename filename of test files to names starting with 'test_' so that the django test runner can find tests expectedly. * '--with-html-output' option is temporary dropped and will be added in a following patch. * Integraion tests is marked via django.test.tag mechanism which is introduced in Django 1.10 * 'selenium-headless' is broken now because we don't have geckodriver on gates, this patch makes it non-voting. * 'tox -e cover' is fixed * Remove @memorized decorator from dashboards.project.images.images.tables.filter_tenant_ids function. [1] https://github.com/nose-devs/nose/issues/984 Depends-On: https://review.openstack.org/572095 Depends-On: https://review.openstack.org/572124 Depends-On: https://review.openstack.org/572390 Depends-On: https://review.openstack.org/572391 Related blueprint: improve-horizon-testing Change-Id: I7fb2fd7dd40f301ea822154b9809a9a07610c507
51 lines
1.6 KiB
Bash
Executable File
51 lines
1.6 KiB
Bash
Executable File
# Uses envpython and toxinidir from tox run to construct a test command
|
|
testcommand="${1} ${2}/manage.py test"
|
|
posargs="${@:3}"
|
|
|
|
tagarg="--exclude-tag selenium --exclude-tag integration"
|
|
|
|
if [[ -n "${WITH_SELENIUM}" ]]
|
|
then
|
|
tagarg="--tag selenium"
|
|
elif [[ -n "${INTEGRATION_TESTS}" ]]
|
|
then
|
|
tagarg="--tag integration"
|
|
#else
|
|
# tag="unit"
|
|
fi
|
|
|
|
# Attempt to identify if any of the arguments passed from tox is a test subset
|
|
if [ -n "$posargs" ]; then
|
|
for arg in "$posargs"
|
|
do
|
|
if [ ${arg:0:1} != "-" ]; then
|
|
subset=$arg
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# If we are running a test subset, supply the correct settings file.
|
|
# If not, simply run the entire test suite.
|
|
if [ -n "$subset" ]; then
|
|
project="${subset%%.*}"
|
|
if [ $project == "horizon" ]; then
|
|
$testcommand --settings=horizon.test.settings --verbosity 2 $tagarg $posargs
|
|
elif [ $project == "openstack_dashboard" ]; then
|
|
$testcommand --settings=openstack_dashboard.test.settings --verbosity 2 $tagarg $posargs
|
|
elif [ $project == "openstack_auth" ]; then
|
|
$testcommand --settings=openstack_auth.tests.settings --verbosity 2 $tagarg $posargs
|
|
fi
|
|
else
|
|
$testcommand horizon --settings=horizon.test.settings --verbosity 2 $tagarg $posargs
|
|
horizon_tests=0
|
|
$testcommand openstack_dashboard --settings=openstack_dashboard.test.settings --verbosity 2 $tagarg $posargs
|
|
openstack_dashboard_tests=$?
|
|
$testcommand openstack_auth --settings=openstack_auth.tests.settings --verbosity 2 $tagarg $posargs
|
|
auth_tests=$?
|
|
# we have to tell tox if either of these test runs failed
|
|
if [[ $horizon_tests != 0 || $openstack_dashboard_tests != 0 || \
|
|
$auth_tests != 0 ]]; then
|
|
exit 1;
|
|
fi
|
|
fi
|