community.general/tests/integration/targets/alternatives/tasks/tests_family.yml

66 lines
1.8 KiB
YAML

---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
- name: Add an alternative with a family
alternatives:
name: dummy
path: /usr/bin/dummy1
link: /usr/bin/dummy
family: family1
priority: 100
state: selected
- name: Ensure that the alternative has family assigned
shell: 'grep family1 {{ alternatives_dir }}/dummy'
- name: Add two alternatives with different families
alternatives:
name: dummy
path: '/usr/bin/dummy{{ item.n }}'
link: /usr/bin/dummy
family: family2
priority: "{{ item.priority }}"
state: present
loop:
- { n: 2, priority: 20 }
- { n: 3, priority: 10 }
- { n: 4, priority: 5 }
# Here we select the whole family of alternatives
- name: Set family as an alternatives
alternatives:
name: dummy
family: family2
state: selected
- name: Ensure manual mode
shell: 'head -n1 {{ alternatives_dir }}/dummy | grep "^manual"'
- name: Execute the current dummy command
shell: dummy
register: cmd
# Despite the fact that there is alternative with higher priority (/usr/bin/dummy1),
# it is not chosen as it doesn't belong to the selected family
- name: Ensure that the alternative from the selected family is used
assert:
that:
- cmd.stdout == "dummy2"
- name: Remove the alternative with the highest priority that belongs to the family
alternatives:
name: dummy
path: '/usr/bin/dummy2'
state: absent
- name: Execute the current dummy command
shell: dummy
register: cmd
- name: Ensure that the next alternative is selected as having the highest priority from the family
assert:
that:
- cmd.stdout == "dummy3"