--- #################################################################### # 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 module. # Copyright (c) 2020, Abhijeet Kasurde # 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: Find brew binary command: which brew register: brew_which - name: Get owner of brew binary stat: path: "{{ brew_which.stdout }}" register: brew_stat #- name: Use ignored-pinned option while upgrading all # homebrew: # upgrade_all: true # upgrade_options: ignore-pinned # become: true # become_user: "{{ brew_stat.stat.pw_name }}" # register: upgrade_option_result # environment: # HOMEBREW_NO_AUTO_UPDATE: True #- assert: # that: # - upgrade_option_result.changed - vars: package_name: gnu-tar block: - name: Make sure {{ package_name }} package is not installed homebrew: name: "{{ package_name }}" state: absent update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" - name: Install {{ package_name }} package using homebrew homebrew: name: "{{ package_name }}" state: present update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: package_result - assert: that: - package_result is changed - "package_result.msg == 'Package installed: gnu-tar'" - "package_result.changed_pkgs == ['gnu-tar']" - "package_result.unchanged_pkgs == []" - name: Again install {{ package_name }} package using homebrew homebrew: name: "{{ package_name }}" state: present update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: package_result - assert: that: - package_result is not changed - "package_result.msg == 'Package already installed: gnu-tar'" - "package_result.changed_pkgs == []" - "package_result.unchanged_pkgs == ['gnu-tar']" - name: Unlink {{ package_name }} package using homebrew homebrew: name: "{{ package_name }}" state: unlinked update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: package_result - assert: that: - package_result is changed - "package_result.msg == 'Package unlinked: gnu-tar'" - "package_result.changed_pkgs == ['gnu-tar']" - "package_result.unchanged_pkgs == []" - name: Link {{ package_name }} package using homebrew homebrew: name: "{{ package_name }}" state: linked update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: package_result - assert: that: - package_result is changed - "package_result.msg == 'Package linked: gnu-tar'" - "package_result.changed_pkgs == ['gnu-tar']" - "package_result.unchanged_pkgs == []" - name: Uninstall {{ package_name }} package using homebrew homebrew: name: "{{ package_name }}" state: absent update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: package_result - assert: that: - package_result is changed - "package_result.msg == 'Package uninstalled: gnu-tar'" - "package_result.changed_pkgs == ['gnu-tar']" - "package_result.unchanged_pkgs == []" - name: Again uninstall {{ package_name }} package using homebrew homebrew: name: "{{ package_name }}" state: absent update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: package_result - assert: that: - package_result is not changed - "package_result.msg == 'Package already uninstalled: gnu-tar'" - "package_result.changed_pkgs == []" - "package_result.unchanged_pkgs == ['gnu-tar']" - name: Upgrade {{ package_name }} package using homebrew homebrew: name: "{{ package_name }}" state: latest update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: package_result - assert: that: - package_result is changed - "package_result.msg == 'Package upgraded: gnu-tar'" - "package_result.changed_pkgs == ['gnu-tar']" - "package_result.unchanged_pkgs == []" - name: Again upgrade {{ package_name }} package using homebrew homebrew: name: "{{ package_name }}" state: latest update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: package_result - assert: that: - package_result is not changed - "package_result.msg == 'Package already upgraded: gnu-tar'" - "package_result.changed_pkgs == []" - "package_result.unchanged_pkgs == ['gnu-tar']" - vars: package_names: - gnu-tar - gnu-time block: - name: Make sure {{ package_names }} packages are not installed homebrew: name: "{{ package_names }}" state: absent update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" - name: Install only {{ package_names[0] }} package using homebrew homebrew: name: "{{ package_names[0] }}" state: present update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" - name: Install {{ package_names }} packages using homebrew (one is already installed) homebrew: name: "{{ package_names }}" state: present update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: package_result - assert: that: - package_result is changed - "package_result.msg == 'Changed: 1, Unchanged: 1'" - "package_result.changed_pkgs == ['gnu-time']" - "package_result.unchanged_pkgs == ['gnu-tar']" - name: Again install {{ package_names }} packages using homebrew homebrew: name: "{{ package_names }}" state: present update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: package_result - assert: that: - package_result is not changed - "package_result.msg == 'Changed: 0, Unchanged: 2'" - "package_result.changed_pkgs == []" - "package_result.unchanged_pkgs | sort == ['gnu-tar', 'gnu-time']" - name: Unlink {{ package_names }} packages using homebrew homebrew: name: "{{ package_names }}" state: unlinked update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: package_result - assert: that: - package_result is changed - "package_result.msg == 'Changed: 2, Unchanged: 0'" - "package_result.changed_pkgs | sort == ['gnu-tar', 'gnu-time']" - "package_result.unchanged_pkgs == []" - name: Link {{ package_names }} packages using homebrew homebrew: name: "{{ package_names }}" state: linked update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: package_result - assert: that: - package_result is changed - "package_result.msg == 'Changed: 2, Unchanged: 0'" - "package_result.changed_pkgs | sort == ['gnu-tar', 'gnu-time']" - "package_result.unchanged_pkgs == []" - name: Uninstall {{ package_names }} packages using homebrew homebrew: name: "{{ package_names }}" state: absent update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: package_result - assert: that: - package_result is changed - "package_result.msg == 'Changed: 2, Unchanged: 0'" - "package_result.changed_pkgs | sort == ['gnu-tar', 'gnu-time']" - "package_result.unchanged_pkgs == []" - name: Again uninstall {{ package_names }} packages using homebrew homebrew: name: "{{ package_names }}" state: absent update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: package_result - assert: that: - package_result is not changed - "package_result.msg == 'Changed: 0, Unchanged: 2'" - "package_result.changed_pkgs == []" - "package_result.unchanged_pkgs | sort == ['gnu-tar', 'gnu-time']" - name: Upgrade {{ package_names }} packages using homebrew homebrew: name: "{{ package_names }}" state: latest update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: package_result - assert: that: - package_result is changed - "package_result.msg == 'Changed: 2, Unchanged: 0'" - "package_result.changed_pkgs | sort == ['gnu-tar', 'gnu-time']" - "package_result.unchanged_pkgs == []" - name: Again upgrade {{ package_names }} packages using homebrew homebrew: name: "{{ package_names }}" state: latest update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: package_result - assert: that: - package_result is not changed - "package_result.msg == 'Changed: 0, Unchanged: 2'" - "package_result.changed_pkgs == []" - "package_result.unchanged_pkgs | sort == ['gnu-tar', 'gnu-time']" # Test alias handling with sqlite (that is aliased to sqlite3) - block: - name: Make sure sqlite package is not installed homebrew: name: "sqlite" state: absent update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" - name: Install sqlite package using alias (sqlite3) homebrew: name: "sqlite3" state: present update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: install_result - assert: that: - install_result is changed - "install_result.msg == 'Package installed: sqlite3'" - "install_result.changed_pkgs == ['sqlite3']" - "install_result.unchanged_pkgs == []" - name: Again install sqlite package using alias (sqlite3) homebrew: name: "sqlite3" state: present update_homebrew: false become: true become_user: "{{ brew_stat.stat.pw_name }}" register: reinstall_result - assert: that: - reinstall_result is not changed - "reinstall_result.msg == 'Package already installed: sqlite3'" - "reinstall_result.changed_pkgs == []" - "reinstall_result.unchanged_pkgs == ['sqlite3']" # Test with homebrew tap - block: - name: Tap terraform homebrew repository community.general.homebrew_tap: name: hashicorp/tap become: true become_user: "{{ brew_stat.stat.pw_name }}" - name: Install homebrew tap community.general.homebrew: name: hashicorp/tap/terraform state: latest update_homebrew: false register: terraform_install_result become: true become_user: "{{ brew_stat.stat.pw_name }}" - assert: that: - terraform_install_result is changed - "terraform_install_result.msg == 'Package upgraded: hashicorp/tap/terraform'" - "terraform_install_result.changed_pkgs == ['hashicorp/tap/terraform']" - "terraform_install_result.unchanged_pkgs == []"