From 7e0f2e1f4266d69592f957ff93da1c7ba58dfe05 Mon Sep 17 00:00:00 2001 From: "patchback[bot]" <45432694+patchback[bot]@users.noreply.github.com> Date: Thu, 6 Jun 2024 13:18:57 +0200 Subject: [PATCH] [PR #8452/2a3819a6 backport][stable-8] git_config: fix state=absent if value is present (#8465) git_config: fix state=absent if value is present (#8452) * Fix state=absent if value is present. * Update changelog fragment. (cherry picked from commit 2a3819a696d0ee6d8646a2ff5583c01d8fffd356) Co-authored-by: Felix Fontein --- .../fragments/8452-git_config-absent.yml | 2 ++ plugins/modules/git_config.py | 2 +- .../targets/git_config/tasks/unset_value.yml | 24 +++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/8452-git_config-absent.yml diff --git a/changelogs/fragments/8452-git_config-absent.yml b/changelogs/fragments/8452-git_config-absent.yml new file mode 100644 index 0000000000..11e0767713 --- /dev/null +++ b/changelogs/fragments/8452-git_config-absent.yml @@ -0,0 +1,2 @@ +bugfixes: + - "git_config - fix behavior of ``state=absent`` if ``value`` is present (https://github.com/ansible-collections/community.general/issues/8436, https://github.com/ansible-collections/community.general/pull/8452)." diff --git a/plugins/modules/git_config.py b/plugins/modules/git_config.py index a8d2ebe979..844c27d8e6 100644 --- a/plugins/modules/git_config.py +++ b/plugins/modules/git_config.py @@ -263,7 +263,7 @@ def main(): module.exit_json(changed=False, msg='', config_value=old_values[0] if old_values else '') elif unset and not out: module.exit_json(changed=False, msg='no setting to unset') - elif new_value in old_values and (len(old_values) == 1 or add_mode == "add"): + elif new_value in old_values and (len(old_values) == 1 or add_mode == "add") and not unset: module.exit_json(changed=False, msg="") # Until this point, the git config was just read and in case no change is needed, the module has already exited. diff --git a/tests/integration/targets/git_config/tasks/unset_value.yml b/tests/integration/targets/git_config/tasks/unset_value.yml index dfa535a2d3..5f8c52c96f 100644 --- a/tests/integration/targets/git_config/tasks/unset_value.yml +++ b/tests/integration/targets/git_config/tasks/unset_value.yml @@ -18,6 +18,30 @@ scope: "{{ option_scope }}" register: get_result +- name: assert unset changed and deleted value + assert: + that: + - unset_result is changed + - unset_result.diff.before == option_value + "\n" + - unset_result.diff.after == "\n" + - get_result.config_value == '' + +- import_tasks: setup_value.yml + +- name: unsetting value with value specified + git_config: + name: "{{ option_name }}" + scope: "{{ option_scope }}" + value: "{{ option_value }}" + state: absent + register: unset_result + +- name: getting value + git_config: + name: "{{ option_name }}" + scope: "{{ option_scope }}" + register: get_result + - name: assert unset changed and deleted value assert: that: