mirror of
https://github.com/linux-system-roles/network.git
synced 2026-01-23 10:25:28 +00:00
The unit tests that are run during integration test did not work for the role converted to collection format. The tests need to get the paths from the environment then set up the runtime environment to look like the real Ansible runtime environment. Signed-off-by: Rich Megginson <rmeggins@redhat.com>
149 lines
4.4 KiB
YAML
149 lines
4.4 KiB
YAML
# SPDX-License-Identifier: BSD-3-Clause
|
|
---
|
|
- name: Install dependencies for integration tests
|
|
hosts: all
|
|
vars:
|
|
- rpmdependencies:
|
|
- git
|
|
- python3-pip
|
|
- rsync
|
|
|
|
tasks:
|
|
- name: Install rpm dependencies
|
|
package:
|
|
state: present
|
|
name: "{{ rpmdependencies }}"
|
|
|
|
- name: Install Pytest
|
|
command: "pip3 install pytest"
|
|
|
|
|
|
# Import needed in order to install initscripts dependencies on the remote
|
|
# system.
|
|
- import_playbook: "../tests_default_initscripts.yml"
|
|
|
|
# Import needed in order to install Network Manager dependencies on the remote
|
|
# system.
|
|
- import_playbook: "../tests_default_nm.yml"
|
|
|
|
|
|
- name: Run Pytest tests
|
|
hosts: all
|
|
tasks:
|
|
- block:
|
|
- name: create tempdir for code to test
|
|
tempfile:
|
|
state: directory
|
|
prefix: lsrtest_
|
|
register: _rundir
|
|
|
|
- name: get tempfile for tar
|
|
tempfile:
|
|
prefix: lsrtest_
|
|
suffix: ".tar"
|
|
register: temptar
|
|
delegate_to: localhost
|
|
|
|
- include_tasks: ../tasks/get_modules_and_utils_paths.yml
|
|
|
|
- name: get tests directory
|
|
set_fact:
|
|
tests_directory: "{{ lookup('first_found', params) }}"
|
|
vars:
|
|
params:
|
|
files:
|
|
- tests
|
|
- network
|
|
paths:
|
|
- "../.."
|
|
|
|
# TODO: using tar and copying the file is a workaround for the
|
|
# synchronize module that does not work in test-harness. Related issue:
|
|
# https://github.com/linux-system-roles/test-harness/issues/102
|
|
#
|
|
- name: Create Tar file
|
|
command: >
|
|
tar -cvf {{ temptar.path }} --exclude "*.pyc"
|
|
--exclude "__pycache__"
|
|
-C {{ tests_directory | realpath | dirname }}
|
|
{{ tests_directory | basename }}
|
|
-C {{ modules_parent_and_dir.stdout_lines[0] }}
|
|
{{ modules_parent_and_dir.stdout_lines[1] }}
|
|
-C {{ module_utils_parent_and_dir.stdout_lines[0] }}
|
|
{{ module_utils_parent_and_dir.stdout_lines[1] }}
|
|
delegate_to: localhost
|
|
|
|
- name: Copy testrepo.tar to the remote system
|
|
copy:
|
|
src: "{{ temptar.path }}"
|
|
dest: "{{ _rundir.path }}"
|
|
|
|
- name: Untar testrepo.tar
|
|
command: tar xf {{ temptar.path | basename }}
|
|
args:
|
|
chdir: "{{ _rundir.path }}"
|
|
|
|
- file:
|
|
state: directory
|
|
path: "{{ _rundir.path }}/ansible"
|
|
|
|
- name: Move module_utils to ansible directory
|
|
shell: |
|
|
if [ -d {{ _rundir.path }}/module_utils ]; then
|
|
mv {{ _rundir.path }}/module_utils {{ _rundir.path }}/ansible
|
|
fi
|
|
|
|
- name: Fake out python module directories, primarily for python2
|
|
shell: |
|
|
for dir in $(find {{ _rundir.path }} -type d -print); do
|
|
if [ ! -f "$dir/__init__.py" ]; then
|
|
touch "$dir/__init__.py"
|
|
fi
|
|
done
|
|
|
|
- set_fact:
|
|
_lsr_python_path: "{{
|
|
_rundir.path ~ '/' ~
|
|
modules_parent_and_dir.stdout_lines[1] ~ ':' ~ _rundir.path
|
|
}}"
|
|
|
|
- debug:
|
|
msg: path {{ _lsr_python_path }}
|
|
- command: ls -alrtFR {{ _rundir.path }}
|
|
|
|
- block:
|
|
- name: Run pytest with nm
|
|
command: >
|
|
pytest
|
|
{{ _rundir.path }}/{{ tests_directory | basename }}/integration/
|
|
--provider=nm
|
|
register: playbook_run
|
|
environment:
|
|
PYTHONPATH: "{{ _lsr_python_path }}"
|
|
always:
|
|
- debug:
|
|
var: playbook_run.stdout_lines
|
|
|
|
- block:
|
|
- name: Run pytest with initscripts
|
|
command: >
|
|
pytest
|
|
{{ _rundir.path }}/{{ tests_directory | basename }}/integration/
|
|
--provider=initscripts
|
|
register: playbook_run
|
|
environment:
|
|
PYTHONPATH: "{{ _lsr_python_path }}"
|
|
always:
|
|
- debug:
|
|
var: playbook_run.stdout_lines
|
|
always:
|
|
- name: remove local tar file
|
|
file:
|
|
state: absent
|
|
path: "{{ temptar.path }}"
|
|
delegate_to: localhost
|
|
|
|
- name: remove tempdir
|
|
file:
|
|
state: absent
|
|
path: "{{ _rundir.path }}"
|