# 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 }}"