# SPDX-License-Identifier: BSD-3-Clause --- # This expects the variable test_playbook to be set from the outside - name: Prepare for coverage extraction hosts: all tasks: # Use set_fact to set variables to make them available in all plays # 'vars:' Would only set variables for the current play - name: set facts set_fact: coverage_module: network_connections coverage: /root/.local/bin/coverage destdir: "remote_coverage/{{ test_playbook }}" # This uses variables from the other set_fact task, therefore it needs to # be its own task - name: set more facts set_fact: coverage_file: # yamllint disable-line rule:line-length ansible-coverage-{{ coverage_module }}-{{ test_playbook|replace('.yml', '') }} - name: debug info debug: msg: # yamllint disable-line rule:line-length Getting coverage for '{{ coverage_module }}' with '{{ test_playbook }}' # combine data in case old data is left there - command: "{{ coverage }} combine" environment: COVERAGE_FILE: "{{ coverage_file }}" ignore_errors: yes - name: remove old data file: state: absent path: "{{ coverage_file }}" - name: find coverage files to delete find: path: "{{ ansible_env.HOME }}" patterns: ".coverage.*" hidden: yes register: files_to_delete - name: remove old data file: path: "{{ item.path }}" state: absent with_items: "{{ files_to_delete.files }}" - name: copy coveragerc copy: content: "[run]\ndisable_warnings = no-data-collected\n" dest: .coveragerc - name: install latest pip pip: name: coverage extra_args: --user --upgrade - import_playbook: "{{ test_playbook }}" vars: ansible_python_interpreter: # yamllint disable-line rule:line-length "{{ coverage }} run -p --include /*/modules/network_connections.py,/*/module_utils/network_lsr/*" - name: Gather coverage data hosts: all tasks: - shell: "{{ coverage }} combine .coverage.*" environment: COVERAGE_FILE: "{{ coverage_file }}" - name: Get coverage data hosts: all tasks: - fetch: src: "{{ coverage_file }}" dest: "{{ destdir }}" flat: no