# Test code for the package module. # (c) 2017, James Tanner # This file is part of Ansible # # Ansible is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Ansible is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Ansible. If not, see . # Verify correct default package manager for Fedora # Validates: https://github.com/ansible/ansible/issues/34014 - block: - name: install apt dnf: name: apt state: present - name: gather facts again setup: - name: validate output assert: that: - 'ansible_pkg_mgr == "dnf"' always: - name: remove apt dnf: name: apt state: absent - name: gather facts again setup: when: ansible_distribution == "Fedora" # Verify correct default package manager for Debian/Ubuntu when Zypper installed - block: # Just make an executable file called "zypper" - installing zypper itself # consistently is hard - and we're not going to use it - name: install fake zypper file: state: touch mode: 0755 path: /usr/bin/zypper - name: gather facts again setup: - name: validate output assert: that: - 'ansible_pkg_mgr == "apt"' always: - name: remove fake zypper file: path: /usr/bin/zypper state: absent - name: gather facts again setup: when: ansible_os_family == "Debian" ## ## package ## # Verify module_defaults for package and the underlying module are utilized # Validates: https://github.com/ansible/ansible/issues/72918 - block: # 'name' is required - name: install apt with package defaults package: module_defaults: package: name: apt state: present - name: install apt with dnf defaults (auto) package: module_defaults: dnf: name: apt state: present - name: install apt with dnf defaults (use dnf) package: use: dnf module_defaults: dnf: name: apt state: present always: - name: remove apt dnf: name: apt state: absent when: ansible_distribution == "Fedora" - name: define distros to attempt installing at on set_fact: package_distros: - RedHat - CentOS - ScientificLinux - Fedora - Ubuntu - Debian - block: - name: remove at package package: name: at state: absent register: at_check0 - name: verify at command is missing shell: which at register: at_check1 failed_when: at_check1.rc == 0 - name: reinstall at package package: name: at state: present register: at_install0 - debug: var=at_install0 - name: validate results assert: that: - 'at_install0.changed is defined' - 'at_install0.changed' - name: verify at command is installed shell: which at - name: remove at package package: name: at state: absent register: at_install0 - name: validate package removal assert: that: - "at_install0 is changed" when: ansible_distribution in package_distros ## ## dnf ## #Validation for new parameter 'use' in dnf action plugin which aliases to 'use_backend' #Issue: https://github.com/ansible/ansible/issues/70774 - block: - name: verify if using both the parameters 'use' and 'use_backend' throw error dnf: name: at state: present use_backend: dnf use: dnf ignore_errors: yes register: result - name: verify error assert: that: - "'parameters are mutually exclusive' in result.msg" - "not result is changed" - name: verify if package installation is successful using 'use' parameter dnf: name: at state: present use: dnf register: result - name: verify the result assert: that: - "result is changed" - name: remove at package dnf: name: at state: absent use: dnf register: result - name: verify package removal assert: that: - "result is changed" - name: verify if package installation is successful using 'use_backend' parameter dnf: name: at state: present use_backend: dnf register: result - name: verify the result assert: that: - "result is changed" - name: remove at package dnf: name: at state: absent use_backend: dnf register: result - name: verify package removal assert: that: - "result is changed" - name: verify if package installation is successful without using 'use_backend' and 'use' parameters dnf: name: at state: present register: result - name: verify the result assert: that: - "result is changed" - name: remove at package dnf: name: at state: absent register: result - name: verify package removal assert: that: - "result is changed" when: ansible_distribution == "Fedora" - name: test ansible_package_use block: - name: test with var package: name: doesnotmatter vars: ansible_package_use: lola ignore_errors: true register: use_to_use - assert: that: - use_to_use is failed - "'Could not find a matching action' in use_to_use['msg']"