diff --git a/playbooks/unittests/post.yaml b/playbooks/unittests/post.yaml index dcf3709e8..a19836486 100644 --- a/playbooks/unittests/post.yaml +++ b/playbooks/unittests/post.yaml @@ -1,4 +1,3 @@ - hosts: all roles: - - fetch-testr-output - - fetch-stestr-output + - fetch-subunit-output diff --git a/roles/fetch-subunit-output/README.rst b/roles/fetch-subunit-output/README.rst new file mode 100644 index 000000000..1d9c992bb --- /dev/null +++ b/roles/fetch-subunit-output/README.rst @@ -0,0 +1,12 @@ +Collect subunit outputs + +**Role Variables** + +.. zuul:rolevar:: zuul_work_dir + :default: {{ zuul.project.src_dir }} + + Directory to work in + +.. zuul:rolevar:: tox_envlist + + tox environment that was used to run the tests originally. diff --git a/roles/fetch-subunit-output/defaults/main.yaml b/roles/fetch-subunit-output/defaults/main.yaml new file mode 100644 index 000000000..a0afa22c5 --- /dev/null +++ b/roles/fetch-subunit-output/defaults/main.yaml @@ -0,0 +1,2 @@ +--- +zuul_work_dir: "src/{{ zuul.project.canonical_name }}" diff --git a/roles/fetch-subunit-output/tasks/main.yaml b/roles/fetch-subunit-output/tasks/main.yaml new file mode 100644 index 000000000..195b02a5d --- /dev/null +++ b/roles/fetch-subunit-output/tasks/main.yaml @@ -0,0 +1,48 @@ +- name: Check for stestr directory + stat: + path: "{{ zuul_work_dir }}/.stestr" + register: stestr_stat + +- name: Generate stestr subunit file + shell: + cmd: ".tox/{{ tox_envlist }}/bin/stestr last --subunit > ./testrepository.subunit" + chdir: "{{ zuul_work_dir }}" + when: + - tox_envlist is defined + - stestr_stat.stat.exists + +- name: Generate stestr subunit file + shell: + cmd: "stestr last --subunit > ./testrepository.subunit" + chdir: "{{ zuul_work_dir }}" + when: + - tox_envlist is not defined + - stestr_stat.stat.exists + +- name: Check for testr directory + stat: + path: "{{ zuul_work_dir }}/.stestr" + register: testr_stat + when: not stestr_stat.stat.exists + +- name: Generate testrepository.subunit file + shell: + cmd: ".tox/{{ tox_envlist }}/bin/testr last --subunit > ./testrepository.subunit" + chdir: "{{ zuul_work_dir }}" + when: + - tox_envlist is defined + - not stestr_stat.stat.exists + - testr_stat.stat.exists + +- name: Generate testrepository.subunit file + shell: + cmd: "testr last --subunit > ./testrepository.subunit" + chdir: "{{ zuul_work_dir }}" + when: + - tox_envlist is not defined + - not stestr_stat.stat.exists + - testr_stat.stat.exists + +- name: Process and fetch subunit results + include: process.yaml + when: stestr_stat.stat.exists or testr_stat.stat.exists diff --git a/roles/fetch-subunit-output/tasks/process.yaml b/roles/fetch-subunit-output/tasks/process.yaml new file mode 100644 index 000000000..4f401bb61 --- /dev/null +++ b/roles/fetch-subunit-output/tasks/process.yaml @@ -0,0 +1,19 @@ +- name: Generate testr_results.html file + # TODO(pabelanger): We cannot depend on /usr/os-testr-env here!!! + command: "/usr/os-testr-env/bin/subunit2html ./testrepository.subunit testr_results.html" + args: + chdir: "{{ zuul_work_dir }}" + +- name: Compress testrepository.subunit file + archive: + path: "{{ zuul_work_dir }}/testrepository.subunit" + +- name: Collect test-results + synchronize: + dest: "{{ zuul.executor.log_root }}" + mode: pull + src: "{{ zuul_work_dir }}/{{ item }}" + verify_host: true + with_items: + - "*testr_results.html.gz" + - "*testrepository.subunit.gz"