1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

homebrew_cask: reinstall when force is install option (#4090)

* homebrew_cask: reinstall when force is install option

* add changelog entry

* Fix OSX CI runs - run as non-root

* test with cask that has no macos dependencies

* use `brooklyn` cask to test
This commit is contained in:
Joseph Torcasso 2022-02-02 15:31:05 -05:00 committed by GitHub
parent 2ec37702de
commit 8b95c56030
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 87 additions and 1 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- homebrew_cask - fix force install operation (https://github.com/ansible-collections/community.general/issues/3703).

View file

@ -102,6 +102,12 @@ EXAMPLES = '''
state: present state: present
install_options: 'debug,appdir=/Applications' install_options: 'debug,appdir=/Applications'
- name: Install cask with force option
community.general.homebrew_cask:
name: alfred
state: present
install_options: force
- name: Allow external app - name: Allow external app
community.general.homebrew_cask: community.general.homebrew_cask:
name: alfred name: alfred
@ -600,7 +606,7 @@ class HomebrewCask(object):
self.message = 'Invalid cask: {0}.'.format(self.current_cask) self.message = 'Invalid cask: {0}.'.format(self.current_cask)
raise HomebrewCaskException(self.message) raise HomebrewCaskException(self.message)
if self._current_cask_is_installed(): if '--force' not in self.install_options and self._current_cask_is_installed():
self.unchanged_count += 1 self.unchanged_count += 1
self.message = 'Cask already installed: {0}'.format( self.message = 'Cask already installed: {0}'.format(
self.current_cask, self.current_cask,

View file

@ -0,0 +1,6 @@
shippable/posix/group1
skip/aix
skip/freebsd
skip/rhel
skip/docker
skip/python2.6

View file

@ -0,0 +1 @@
cask: brooklyn

View file

@ -0,0 +1,71 @@
####################################################################
# WARNING: These are designed specifically for Ansible tests #
# and should not be used as examples of how to write Ansible roles #
####################################################################
# Test code for the homebrew_cask module.
# Copyright: (c) 2022, Joseph Torcasso <jtorcass@redhat.com>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
---
- name: Find brew binary
command: which brew
register: brew_which
when: ansible_distribution in ['MacOSX']
- name: Get owner of brew binary
stat:
path: "{{ brew_which.stdout }}"
register: brew_stat
when: ansible_distribution in ['MacOSX']
- block:
- name: Install cask
homebrew_cask:
name: "{{ cask }}"
state: present
become: yes
become_user: "{{ brew_stat.stat.pw_name }}"
register: cask_install_result
- assert:
that:
- cask_install_result is changed
- "'Cask installed' in cask_install_result.msg"
- name: Install cask (idempotence)
homebrew_cask:
name: "{{ cask }}"
state: present
become: yes
become_user: "{{ brew_stat.stat.pw_name }}"
register: cask_install_result
- assert:
that:
- cask_install_result is not changed
- "'Cask installed' not in cask_install_result.msg"
- "'Cask already installed' in cask_install_result.msg"
- name: Install cask with force install option
homebrew_cask:
name: "{{ cask }}"
state: present
install_options: force
become: yes
become_user: "{{ brew_stat.stat.pw_name }}"
register: cask_install_result
- assert:
that:
- cask_install_result is changed
- "'Cask installed' in cask_install_result.msg"
always:
- name: Delete cask
homebrew_cask:
name: "{{ cask }}"
state: absent
install_options: force
become: yes
become_user: "{{ brew_stat.stat.pw_name }}"
ignore_errors: yes