- name: Try with subcommands alternatives: name: dummymain path: '/usr/bin/dummy1' link: '/usr/bin/dummymain' subcommands: - name: dummysubcmd path: '/usr/bin/dummy2' 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 == "dummy1" - name: Execute the current dummysubcmd command command: dummysubcmd register: cmd - name: Ensure that the expected command was executed assert: 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 path: '/usr/bin/dummy1' link: '/usr/bin/dummymain' register: alternative - name: Check expected command was executed assert: that: - 'alternative is not changed' - name: Execute the current dummysubcmd command command: dummysubcmd register: cmd - name: Ensure that the expected command was executed assert: that: - cmd.stdout == "dummy2" - name: Subcommands are removed if set to an empty list alternatives: name: dummymain path: '/usr/bin/dummy1' link: '/usr/bin/dummymain' subcommands: [] register: alternative - name: Check expected command was executed assert: that: - 'alternative is changed' - 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: 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