Fix alternatives module (#4836) (#4840)

* Only pass subcommands when they are specified as module arguments.

* When 'subcommands' is specified, 'link' must be given for every subcommand.

* Extend subcommand tests.

(cherry picked from commit 84d8ca9234)

Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
patchback[bot] 2022-06-14 16:30:42 +02:00 committed by GitHub
commit de5fbe457f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 151 additions and 3 deletions

View file

@ -66,6 +66,8 @@
state: absent
with_items:
- '{{ alternatives_dir }}/dummy'
- '{{ alternatives_dir }}/dummymain'
- '{{ alternatives_dir }}/dummysubcmd'
- file:
path: '/usr/bin/dummy{{ item }}'

View file

@ -32,6 +32,15 @@
that:
- cmd.stdout == "dummy2"
- name: Get dummymain alternatives output
command:
cmd: '{{ alternatives_command }} --display dummymain'
register: result
- name: Print result
debug:
var: result.stdout_lines
- name: Subcommands are not removed if not specified
alternatives:
name: dummymain
@ -75,4 +84,134 @@
assert:
that:
- cmd.rc == 2
- '"No such file" in cmd.msg'
- '"No such file" in cmd.msg'
- name: Get dummymain alternatives output
command:
cmd: '{{ alternatives_command }} --display dummymain'
register: result
- name: Print result
debug:
var: result.stdout_lines
- name: Install other alternative with subcommands
alternatives:
name: dummymain
path: '/usr/bin/dummy3'
link: '/usr/bin/dummymain'
subcommands:
- name: dummysubcmd
path: '/usr/bin/dummy4'
link: '/usr/bin/dummysubcmd'
register: alternative
- name: Check expected command was executed
assert:
that:
- 'alternative is changed'
- name: Execute the current dummymain command
command: dummymain
register: cmd
- name: Ensure that the expected command was executed
assert:
that:
- cmd.stdout == "dummy3"
- name: Execute the current dummysubcmd command
command: dummysubcmd
register: cmd
- name: Ensure that the expected command was executed
assert:
that:
- cmd.stdout == "dummy4"
- name: Get dummymain alternatives output
command:
cmd: '{{ alternatives_command }} --display dummymain'
register: result
- name: Print result
debug:
var: result.stdout_lines
- name: Switch to first alternative
alternatives:
name: dummymain
path: '/usr/bin/dummy1'
register: alternative
- name: Check expected command was executed
assert:
that:
- 'alternative is changed'
- name: Execute the current dummymain command
command: dummymain
register: cmd
- name: Ensure that the expected command was executed
assert:
that:
- cmd.stdout == "dummy1"
- name: Execute the current dummysubcmd command
command: dummysubcmd
register: cmd
ignore_errors: True
- name: Ensure that the subcommand is gone
assert:
that:
- cmd.rc == 2
- '"No such file" in cmd.msg'
- name: Get dummymain alternatives output
command:
cmd: '{{ alternatives_command }} --display dummymain'
register: result
- name: Print result
debug:
var: result.stdout_lines
- name: Switch to second alternative
alternatives:
name: dummymain
path: '/usr/bin/dummy3'
register: alternative
- name: Check expected command was executed
assert:
that:
- 'alternative is changed'
- name: Execute the current dummymain command
command: dummymain
register: cmd
- name: Ensure that the expected command was executed
assert:
that:
- cmd.stdout == "dummy3"
- name: Execute the current dummysubcmd command
command: dummysubcmd
register: cmd
- name: Ensure that the expected command was executed
assert:
that:
- cmd.stdout == "dummy4"
- name: Get dummymain alternatives output
command:
cmd: '{{ alternatives_command }} --display dummymain'
register: result
- name: Print result
debug:
var: result.stdout_lines

View file

@ -1,2 +1,3 @@
---
alternatives_dir: /var/lib/dpkg/alternatives/
alternatives_command: update-alternatives

View file

@ -1,2 +1,3 @@
---
alternatives_dir: /var/lib/rpm/alternatives/
alternatives_command: update-alternatives

View file

@ -1,2 +1,3 @@
---
alternatives_dir: /var/lib/alternatives/
alternatives_command: update-alternatives