diff --git a/changelogs/fragments/9546-fix-handling-of-tap-homebrew-packages.yml b/changelogs/fragments/9546-fix-handling-of-tap-homebrew-packages.yml new file mode 100644 index 00000000000..a8e3f333933 --- /dev/null +++ b/changelogs/fragments/9546-fix-handling-of-tap-homebrew-packages.yml @@ -0,0 +1,2 @@ +bugfixes: + - homebrew - fix incorrect handling of homebrew modules when a tap is requested (https://github.com/ansible-collections/community.general/pull/9546, https://github.com/ansible-collections/community.general/issues/9533). \ No newline at end of file diff --git a/plugins/modules/homebrew.py b/plugins/modules/homebrew.py index 1290ceb4655..c5e1c853133 100644 --- a/plugins/modules/homebrew.py +++ b/plugins/modules/homebrew.py @@ -385,7 +385,7 @@ def _save_package_info(self, package_detail, package_name): self.outdated_packages.add(package_name) def _extract_package_name(self, package_detail, is_cask): - canonical_name = package_detail["token"] if is_cask else package_detail["name"] # For ex: 'sqlite' + canonical_name = package_detail["full_token"] if is_cask else package_detail["full_name"] # For ex: 'sqlite' all_valid_names = set(package_detail.get("aliases", [])) # For ex: {'sqlite3'} all_valid_names.add(canonical_name) diff --git a/tests/integration/targets/homebrew/tasks/formulae.yml b/tests/integration/targets/homebrew/tasks/formulae.yml index 1559ba5dd87..56812c843c8 100644 --- a/tests/integration/targets/homebrew/tasks/formulae.yml +++ b/tests/integration/targets/homebrew/tasks/formulae.yml @@ -363,3 +363,27 @@ - "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 == []"