mirror of
https://github.com/linux-system-roles/network.git
synced 2026-07-18 17:05:13 +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>
160 lines
5 KiB
YAML
160 lines
5 KiB
YAML
# SPDX-License-Identifier: BSD-3-Clause
|
|
---
|
|
- hosts: all
|
|
name: Setup for test running
|
|
tasks:
|
|
- include_tasks: tasks/el_repo_setup.yml
|
|
|
|
- name: Install dependencies
|
|
package:
|
|
name: "{{ item }}"
|
|
state: present
|
|
# Ignore error because some package names might not be available
|
|
ignore_errors: true
|
|
loop:
|
|
- NetworkManager-libnm
|
|
- python2-gobject-base
|
|
- python3-gobject-base
|
|
- python-gobject-base
|
|
- python2-mock
|
|
|
|
- hosts: all
|
|
name: execute python unit tests
|
|
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
|
|
|
|
# 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 {{ 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 -xvf {{ temptar.path | basename }}
|
|
args:
|
|
chdir: "{{ _rundir.path }}"
|
|
|
|
- file:
|
|
state: directory
|
|
path: "{{ item }}"
|
|
loop:
|
|
- "{{ _rundir.path }}/ansible"
|
|
- "{{ _rundir.path }}/ansible/module_utils"
|
|
|
|
- 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
|
|
|
|
- name: Copy unit test to remote system
|
|
copy:
|
|
src: unit/test_network_connections.py
|
|
dest: "{{ _rundir.path }}"
|
|
|
|
- set_fact:
|
|
_lsr_python_path: "{{
|
|
_rundir.path ~ '/' ~
|
|
modules_parent_and_dir.stdout_lines[1] ~ ':' ~
|
|
_rundir.path ~ '/' ~ 'ansible' ~ '/' ~
|
|
module_utils_parent_and_dir.stdout_lines[1] ~ ':' ~
|
|
_rundir.path ~ '/' ~
|
|
module_utils_parent_and_dir.stdout_lines[1] ~ ':' ~
|
|
_rundir.path
|
|
}}"
|
|
|
|
- command: ls -alrtFR {{ _rundir.path }}
|
|
- debug:
|
|
msg: path {{ _lsr_python_path }}
|
|
|
|
- name: Check if python2 is available
|
|
command: python2 --version
|
|
ignore_errors: true
|
|
register: python2_available
|
|
when: true
|
|
|
|
- name: Run python2 unit tests
|
|
command: >
|
|
python2 {{ _rundir.path }}/test_network_connections.py --verbose
|
|
environment:
|
|
PYTHONPATH: "{{ _lsr_python_path }}"
|
|
when: >
|
|
python2_available is succeeded and ansible_distribution != 'Fedora'
|
|
register: python2_result
|
|
|
|
- name: Check if python3 is available
|
|
command: python3 --version
|
|
ignore_errors: true
|
|
register: python3_available
|
|
when: true
|
|
|
|
- name: Run python3 unit tests
|
|
command: >
|
|
python3 {{ _rundir.path }}/test_network_connections.py --verbose
|
|
environment:
|
|
PYTHONPATH: "{{ _lsr_python_path }}"
|
|
when: python3_available is succeeded
|
|
register: python3_result
|
|
|
|
- name: Show python2 unit test results
|
|
debug:
|
|
var: python2_result.stderr_lines
|
|
when: python2_result is succeeded
|
|
|
|
- name: Show python3 unit test results
|
|
debug:
|
|
var: python3_result.stderr_lines
|
|
when: python3_result is succeeded
|
|
|
|
always:
|
|
- name: remove local tar file
|
|
file:
|
|
state: absent
|
|
path: "{{ temptar.path }}"
|
|
delegate_to: localhost
|
|
|
|
- name: remove tempdir
|
|
file:
|
|
state: absent
|
|
path: "{{ _rundir.path }}"
|
|
|
|
- name: Ensure that at least one python unit test ran
|
|
fail:
|
|
msg: Tests did not run with python2 or python3
|
|
when: not python2_available is succeeded and
|
|
not python3_available is succeeded
|