mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-10-03 15:04:02 -07:00
Some checks failed
EOL CI / EOL Sanity (Ⓐ2.16) (push) Has been cancelled
EOL CI / EOL Units (Ⓐ2.16+py2.7) (push) Has been cancelled
EOL CI / EOL Units (Ⓐ2.16+py3.11) (push) Has been cancelled
EOL CI / EOL Units (Ⓐ2.16+py3.6) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+alpine3+py:azp/posix/1/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+alpine3+py:azp/posix/2/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+alpine3+py:azp/posix/3/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+fedora38+py:azp/posix/1/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+fedora38+py:azp/posix/2/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+fedora38+py:azp/posix/3/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+opensuse15+py:azp/posix/1/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+opensuse15+py:azp/posix/2/) (push) Has been cancelled
EOL CI / EOL I (Ⓐ2.16+opensuse15+py:azp/posix/3/) (push) Has been cancelled
nox / Run extra sanity tests (push) Has been cancelled
homebrew: Support old_tokens and oldnames in homebrew package data (#10805)
* homebrew: Support old_tokens and oldnames in homebrew package data
Fixes #10804
Since brew info will accept old_tokens (for casks) and oldnames (for formulae) when provided by the homebrew module "name" argument, the module also needs to consider thes old names as valid for the given package. This commit updates _extract_package_name to do that.
All existing package name tests, including existing tests for name aliases and tap prefixing, have been consolidated with new name tests into package_names.yml.
* Added changelog fragment.
* homebrew: replace non-py2 compliant f-string usage
* code formatting lint, and py2 compatibility fixes
* homebrew: added licenses to new files, nox lint
* Update plugins/modules/homebrew.py
use str.format() instead of string addition
* Update tests/integration/targets/homebrew/tasks/casks.yml
* Update tests/integration/targets/homebrew/tasks/package_names_item.yml
* Update tests/integration/targets/homebrew/tasks/formulae.yml
* Fixes for performance concerns on new homebrew tests.
1) tests for alternate package names are commented out in main.yml.
2) the "install via alternate name, uninstall via base name" test
case was deemed duplicative, and has been deleted .
3) minor fixes to use jinja2 "~" for string concat instead of "+"
* Fix nox lint
---------
(cherry picked from commit 833e6e36de
)
Co-authored-by: brad2014 <brad2014@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
442 lines
14 KiB
YAML
442 lines
14 KiB
YAML
---
|
|
####################################################################
|
|
# 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 <akasurde@redhat.com>
|
|
# 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
|
|
become: true
|
|
become_user: "{{ brew_stat.stat.pw_name }}"
|
|
|
|
- name: Install {{ package_name }} package using homebrew
|
|
homebrew:
|
|
name: "{{ package_name }}"
|
|
state: present
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 install from homebrew tap
|
|
- block:
|
|
- name: Tap hashicorp repository
|
|
community.general.homebrew_tap:
|
|
name: hashicorp/tap
|
|
become: true
|
|
become_user: "{{ brew_stat.stat.pw_name }}"
|
|
|
|
- name: Install terraform from tap
|
|
community.general.homebrew:
|
|
name: hashicorp/tap/terraform
|
|
state: latest
|
|
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 == []"
|
|
|
|
- name: Remove terraform
|
|
homebrew:
|
|
name: hashicorp/tap/terraform
|
|
state: absent
|
|
become: true
|
|
become_user: "{{ brew_stat.stat.pw_name }}"
|
|
|
|
# Test irregular formulae name case
|
|
- block:
|
|
- name: Install terraform from full tap name with irregular case
|
|
community.general.homebrew:
|
|
name: HasHicorp/TAp/tErRaForm
|
|
state: latest
|
|
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 == []"
|
|
|
|
# Test tap with no public fallback
|
|
- block:
|
|
- name: Tap ascii-image-converter homebrew repository
|
|
community.general.homebrew_tap:
|
|
name: TheZoraiz/ascii-image-converter
|
|
become: true
|
|
become_user: "{{ brew_stat.stat.pw_name }}"
|
|
|
|
- name: Install ascii from full tap name
|
|
community.general.homebrew:
|
|
name: TheZoraiz/ascii-image-converter/ascii-image-converter
|
|
state: latest
|
|
register: ascii_install_result
|
|
become: true
|
|
become_user: "{{ brew_stat.stat.pw_name }}"
|
|
|
|
- assert:
|
|
that:
|
|
- ascii_install_result is changed
|
|
- "ascii_install_result.msg == 'Package upgraded: thezoraiz/ascii-image-converter/ascii-image-converter'"
|
|
- "ascii_install_result.changed_pkgs == ['thezoraiz/ascii-image-converter/ascii-image-converter']"
|
|
- "ascii_install_result.unchanged_pkgs == []"
|
|
|
|
- name: Again install ascii from full tap name
|
|
community.general.homebrew:
|
|
name: TheZoraiz/ascii-image-converter/ascii-image-converter
|
|
state: latest
|
|
register: ascii_reinstall_result
|
|
become: true
|
|
become_user: "{{ brew_stat.stat.pw_name }}"
|
|
|
|
- assert:
|
|
that:
|
|
- ascii_reinstall_result is not changed
|
|
- "ascii_reinstall_result.msg == 'Package already upgraded: thezoraiz/ascii-image-converter/ascii-image-converter'"
|
|
- "ascii_reinstall_result.changed_pkgs == []"
|
|
- "ascii_reinstall_result.unchanged_pkgs == ['thezoraiz/ascii-image-converter/ascii-image-converter']"
|
|
|
|
- name: Remove ascii from full tap name
|
|
homebrew:
|
|
name: TheZoraiz/ascii-image-converter/ascii-image-converter
|
|
state: absent
|
|
register: ascii_uninstall_result
|
|
become: true
|
|
become_user: "{{ brew_stat.stat.pw_name }}"
|
|
|
|
- assert:
|
|
that:
|
|
- ascii_uninstall_result is changed
|
|
- "ascii_uninstall_result.msg == 'Package uninstalled: thezoraiz/ascii-image-converter/ascii-image-converter'"
|
|
- "ascii_uninstall_result.changed_pkgs == ['thezoraiz/ascii-image-converter/ascii-image-converter']"
|
|
- "ascii_uninstall_result.unchanged_pkgs == []"
|
|
|
|
- name: Again remove ascii from full tap name
|
|
homebrew:
|
|
name: TheZoraiz/ascii-image-converter/ascii-image-converter
|
|
state: absent
|
|
register: ascii_again_uninstall_result
|
|
|
|
become: true
|
|
become_user: "{{ brew_stat.stat.pw_name }}"
|
|
|
|
- assert:
|
|
that:
|
|
- ascii_again_uninstall_result is not changed
|
|
- "ascii_again_uninstall_result.msg == 'Package already uninstalled: thezoraiz/ascii-image-converter/ascii-image-converter'"
|
|
- "ascii_again_uninstall_result.changed_pkgs == []"
|
|
- "ascii_again_uninstall_result.unchanged_pkgs == ['thezoraiz/ascii-image-converter/ascii-image-converter']"
|
|
|
|
- name: Install ascii from regular name
|
|
community.general.homebrew:
|
|
name: ascii-image-converter
|
|
state: latest
|
|
register: ascii_install_result
|
|
become: true
|
|
become_user: "{{ brew_stat.stat.pw_name }}"
|
|
|
|
- assert:
|
|
that:
|
|
- ascii_install_result is changed
|
|
- "ascii_install_result.msg == 'Package upgraded: ascii-image-converter'"
|
|
- "ascii_install_result.changed_pkgs == ['ascii-image-converter']"
|
|
- "ascii_install_result.unchanged_pkgs == []"
|
|
|
|
- name: Remove ascii from regular name
|
|
homebrew:
|
|
name: ascii-image-converter
|
|
state: absent
|
|
become: true
|
|
become_user: "{{ brew_stat.stat.pw_name }}"
|