From 33998a5b707a9797f3ba594571ff77744ad0a764 Mon Sep 17 00:00:00 2001 From: Alexei Znamensky <103110+russoz@users.noreply.github.com> Date: Fri, 18 Aug 2023 17:36:06 +1200 Subject: [PATCH] snap: fix case when snap list is empty (#7124) * fix case when snap list is empty * add changelog frag --- changelogs/fragments/7124-snap-empty-list.yml | 2 ++ plugins/modules/snap.py | 12 +++++++----- tests/integration/targets/snap/tasks/main.yml | 2 ++ .../targets/snap/tasks/test_empty_list.yml | 14 ++++++++++++++ 4 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 changelogs/fragments/7124-snap-empty-list.yml create mode 100644 tests/integration/targets/snap/tasks/test_empty_list.yml diff --git a/changelogs/fragments/7124-snap-empty-list.yml b/changelogs/fragments/7124-snap-empty-list.yml new file mode 100644 index 0000000000..4c4e90550c --- /dev/null +++ b/changelogs/fragments/7124-snap-empty-list.yml @@ -0,0 +1,2 @@ +bugfixes: + - snap - an exception was being raised when snap list was empty (https://github.com/ansible-collections/community.general/pull/7124, https://github.com/ansible-collections/community.general/issues/7120). diff --git a/plugins/modules/snap.py b/plugins/modules/snap.py index 485744d910..0a0aadef94 100644 --- a/plugins/modules/snap.py +++ b/plugins/modules/snap.py @@ -326,11 +326,13 @@ class Snap(StateModuleHelper): if x.startswith("warning: no snap found")])) return process_(rc, out, err) - with self.runner("info name", output_process=process) as ctx: - try: - names = ctx.run(name=snaps) - finally: - self.vars.snapinfo_run_info.append(ctx.run_info) + names = [] + if snaps: + with self.runner("info name", output_process=process) as ctx: + try: + names = ctx.run(name=snaps) + finally: + self.vars.snapinfo_run_info.append(ctx.run_info) return names def snap_status(self, snap_name, channel): diff --git a/tests/integration/targets/snap/tasks/main.yml b/tests/integration/targets/snap/tasks/main.yml index c533ed5bff..e96fbde38b 100644 --- a/tests/integration/targets/snap/tasks/main.yml +++ b/tests/integration/targets/snap/tasks/main.yml @@ -19,3 +19,5 @@ ansible.builtin.include_tasks: test_dangerous.yml - name: Include test_3dash ansible.builtin.include_tasks: test_3dash.yml + - name: Include test_empty_list + ansible.builtin.include_tasks: test_empty_list.yml diff --git a/tests/integration/targets/snap/tasks/test_empty_list.yml b/tests/integration/targets/snap/tasks/test_empty_list.yml new file mode 100644 index 0000000000..bea73cb5ef --- /dev/null +++ b/tests/integration/targets/snap/tasks/test_empty_list.yml @@ -0,0 +1,14 @@ +--- +# Copyright (c) Ansible Project +# 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: Empty list present + community.general.snap: + name: [] + state: present + +- name: Empty list absent + community.general.snap: + name: [] + state: absent