d6ae964f47
Fstrings are not supported in python3.5 which is in use on Xenial. We don't claim to support Xenial, but this is an easy regression to avoid. Also, add test jobs for this role so that we get feedback before copying it to the prod roles. Also, add a xenial test job to exercise it since we still have Xenial nodes available. Change-Id: Ifc773aa688adb1a01cfe691b3bdca0b3086658cd
132 lines
4.3 KiB
YAML
132 lines
4.3 KiB
YAML
- name: Run the fetch-subunit-output role
|
|
hosts: all
|
|
vars:
|
|
tests_data:
|
|
main:
|
|
directory: "{{ zuul_work_dir }}"
|
|
test_pattern: "WorkingTest.test_success"
|
|
secondary:
|
|
directory: "/var/tmp/extratests"
|
|
test_pattern: "FailingTest.test_failure"
|
|
pre_tasks:
|
|
- name: Ensure pip
|
|
include_role:
|
|
name: ensure-pip
|
|
# Required packages; install them into a .tox path
|
|
# to cover the find-*.sh scripts in the role a bit more.
|
|
- name: Install stestr and subunit-output
|
|
pip:
|
|
name:
|
|
- stestr
|
|
- python-subunit
|
|
- 'voluptuous==0.13.1'
|
|
virtualenv: "{{ zuul_work_dir }}/.tox/utests/"
|
|
virtualenv_command: '{{ ensure_pip_virtualenv_command }}'
|
|
|
|
- name: Ensure that the test directories exists
|
|
file:
|
|
name: "{{ item.value.directory }}"
|
|
state: directory
|
|
loop: "{{ tests_data|dict2items }}"
|
|
|
|
- name: Copy the test files on all directories
|
|
copy:
|
|
src: "subunit_tests"
|
|
dest: "{{ item.value.directory }}"
|
|
loop: "{{ tests_data|dict2items }}"
|
|
|
|
- name: Prepare the test results on all directories
|
|
shell: |
|
|
. {{ zuul_work_dir }}/.tox/utests/bin/activate
|
|
stestr init
|
|
stestr run --test-path subunit_tests {{ item.value.test_pattern }}
|
|
args:
|
|
chdir: "{{ item.value.directory }}"
|
|
ignore_errors: yes
|
|
loop: "{{ tests_data|dict2items }}"
|
|
roles:
|
|
- role: fetch-subunit-output
|
|
post_tasks:
|
|
- name: Check that the testrepository file has been pulled
|
|
delegate_to: localhost
|
|
file:
|
|
path: "{{ zuul.executor.log_root }}/testrepository.subunit"
|
|
state: file
|
|
register: local_subunit_file
|
|
|
|
- name: Check that HTML test result file has been pulled
|
|
delegate_to: localhost
|
|
file:
|
|
path: "{{ zuul.executor.log_root }}/testr_results.html"
|
|
state: file
|
|
register: local_html_test_results
|
|
|
|
- name: Validate that files were pulled correctly
|
|
assert:
|
|
that:
|
|
- local_subunit_file is not changed
|
|
- local_subunit_file is succeeded
|
|
- local_html_test_results is not changed
|
|
- local_html_test_results is succeeded
|
|
|
|
# only one subunit file; the failed result should be hidden
|
|
- name: Check the content of the HTML file
|
|
delegate_to: localhost
|
|
shell: |
|
|
GLOBAL_RESULT=1
|
|
zgrep -q -E 'subunit_tests.test_working.WorkingTest.test_success$' \
|
|
{{ zuul.executor.log_root }}/testr_results.html
|
|
T1=$?
|
|
zgrep -q -E 'subunit_tests.test_failing.FailingTest.test_failure.*_StringException:' \
|
|
{{ zuul.executor.log_root }}/testr_results.html
|
|
T2=$?
|
|
if [ ${T1} -eq 0 ] && [ ${T2} -ne 0 ]; then
|
|
GLOBAL_RESULT=0
|
|
fi
|
|
exit $GLOBAL_RESULT
|
|
|
|
# The following test(s) require(s) the previous playbook
|
|
- name: Run the fetch-subunit-output role with multiple subunits
|
|
hosts: all
|
|
roles:
|
|
- role: fetch-subunit-output
|
|
fetch_subunit_output_additional_dirs:
|
|
- "/var/tmp/extratests"
|
|
post_tasks:
|
|
- name: Check that the testrepository file has been pulled
|
|
delegate_to: localhost
|
|
file:
|
|
path: "{{ zuul.executor.log_root }}/testrepository.subunit"
|
|
state: file
|
|
register: local_subunit_file
|
|
|
|
- name: Check that HTML test result file has been pulled
|
|
delegate_to: localhost
|
|
file:
|
|
path: "{{ zuul.executor.log_root }}/testr_results.html"
|
|
state: file
|
|
register: local_html_test_results
|
|
|
|
- name: Validate that files were pulled correctly
|
|
assert:
|
|
that:
|
|
- local_subunit_file is not changed
|
|
- local_subunit_file is succeeded
|
|
- local_html_test_results is not changed
|
|
- local_html_test_results is succeeded
|
|
|
|
- name: Check the content of the HTML file
|
|
delegate_to: localhost
|
|
shell: |
|
|
GLOBAL_RESULT=1
|
|
zgrep -q -E 'subunit_tests.test_working.WorkingTest.test_success$' \
|
|
{{ zuul.executor.log_root }}/testr_results.html
|
|
T1=$?
|
|
zgrep -q -E 'subunit_tests.test_failing.FailingTest.test_failure.*_StringException:' \
|
|
{{ zuul.executor.log_root }}/testr_results.html
|
|
T2=$?
|
|
if [ ${T1} -eq 0 ] && [ ${T2} -eq 0 ]; then
|
|
GLOBAL_RESULT=0
|
|
fi
|
|
exit $GLOBAL_RESULT
|