Files
zuul-jobs/roles/tox/tasks/main.yaml
Paul Belanger d2d4abedc5 Move subunit processing into fetch-testr-output
This logic makes more sense in the fetch-testr-output role. I've also
left a few TODO action for a followup patch.  Specifically, this
still depends some openstack-infra configuration.

Change-Id: Iea8968708e3e80f0d21434ec08fff5e4ee7bdf4d
Signed-off-by: Paul Belanger <pabelanger@redhat.com>
2017-07-26 14:29:26 -04:00

70 lines
2.1 KiB
YAML

- name: Require tox_envlist variable - {{ tox_envlist }}
fail:
msg: "tox_envlist is required for this role"
when: tox_envlist is not defined
- name: Run tox
args:
chdir: "{{ zuul_work_dir }}"
executable: /bin/bash
environment: "{{ tox_environment | default(omit) }}"
shell: |
# If a bundle file is present, call tox with the jenkins version of
# the test environment so it is used. Otherwise, use the normal
# (non-bundle) test environment.
venv={{ tox_envlist }}
function process_testr_artifacts {
if [ ! -d ".testrepository" ] ; then
return
fi
rancount=$($bin_path/testr last | sed -ne 's/Ran \([0-9]\+\).*tests in.*/\1/p')
if [ -z "$rancount" ] || [ "$rancount" -eq "0" ] ; then
echo
echo "Zero tests were run. At least one test should have been run."
echo "Failing this test as a result"
echo
exit 1
fi
}
function check_nose_html {
htmlreport=$(find . -name $NOSE_HTML_OUT_FILE)
if [ -f "$htmlreport" ]; then
passcount=$(grep -c 'tr class=.passClass' $htmlreport)
if [ $passcount -eq "0" ]; then
echo
echo "Zero tests passed, which probably means there was an error"
echo "parsing one of the python files, or that some other failure"
echo "during test setup prevented a sane run."
echo
exit 1
fi
fi
}
script_path=/usr/local/jenkins/slave_scripts
bin_path=.tox/$venv/bin
export PYTHON=$bin_path/python
cat /etc/image-hostname.txt
$script_path/jenkins-oom-grep.sh pre
sudo $script_path/jenkins-sudo-grep.sh pre
tox -vv -e$venv
result=$?
process_testr_artifacts
check_nose_html
# Rename tox .log files to .log.txt so that Apache serves them as
# text/plain files since it can handle .txt special - and .log is
# unknown and therefore served as binary.
find .tox -type f -name "*.log" -exec mv {} {}.txt \;
exit $result