161 lines
5.0 KiB
YAML
161 lines
5.0 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
|