Don't fetch coverage report from failing tests

When test runs fail, coverage reports are not generated. We try to fetch
them anyway, which leads to POST_FAILURE instead of FAILURE.

Add in a check to ensure the test run was successful, then a check for
the coverage dir and an explicit error message so that it's clear to
people that the issue is that coverage wasn't generated after a
successful run, rather than there being an issue with rsync or
something.

Change-Id: I07f942a9df518d6602ee151d82b35ce413769c73
This commit is contained in:
Monty Taylor 2018-01-17 11:40:19 -06:00 committed by Andreas Jaeger
parent fa54ff21e1
commit b6adb9a8c4
3 changed files with 22 additions and 8 deletions

View File

@ -12,7 +12,7 @@ on the worker to the log root of the executor.
root. root.
.. zuul:rolevar:: coverage_output_src .. zuul:rolevar:: coverage_output_src
:default: {{ zuul.project.canonical_name }}/cover/ :default: {{ zuul.project.src_dir }}/cover/
The location on the worker from which to fetch the coverage The location on the worker from which to fetch the coverage
output detail. By default, the ``cover`` dir of the current output detail. By default, the ``cover`` dir of the current

View File

@ -1,2 +1,2 @@
zuul_executor_dest: "{{ zuul.executor.log_root }}" zuul_executor_dest: "{{ zuul.executor.log_root }}"
coverage_output_src: "src/{{ zuul.project.canonical_name }}/cover" coverage_output_src: "{{ zuul.project.src_dir }}/cover"

View File

@ -1,6 +1,20 @@
- name: Collect coverage details output - when: zuul_success | default(true) | bool
synchronize: block:
dest: "{{ zuul_executor_dest }}"
mode: pull - name: Check to see if coverage report exists
src: "{{ coverage_output_src }}" stat:
verify_host: true path: "{{ coverage_output_src }}"
register: coverage_report_stat
- name: Collect coverage details output
synchronize:
dest: "{{ zuul_executor_dest }}"
mode: pull
src: "{{ coverage_output_src }}"
verify_host: true
when: coverage_report_stat.stat.exists
- name: Fail if coverage report not found
fail:
msg: "Coverage report was not found even though tests succeeded"
when: not coverage_report_stat.stat.exists