# 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 }}' - name: Combine data in case old data is left there command: "{{ coverage }} combine" environment: COVERAGE_FILE: "{{ coverage_file }}" failed_when: false changed_when: false - name: Remove old data file: state: absent path: "{{ coverage_file }}" - name: Find coverage files to delete find: path: "{{ ansible_env.HOME }}" patterns: ".coverage.*" hidden: true register: files_to_delete - name: Remove old data from files_to_delete 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 mode: "0644" - name: Install latest pip pip: name: coverage extra_args: --user --upgrade - name: Import the playbook '{{ test_playbook }}' 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: - name: Gather coverage data shell: "{{ coverage }} combine .coverage.*" environment: COVERAGE_FILE: "{{ coverage_file }}" changed_when: false - name: Get coverage data hosts: all tasks: - name: "Fetch {{ coverage_file }}" fetch: src: "{{ coverage_file }}" dest: "{{ destdir }}" flat: false