mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-22 12:50:22 -07:00
git_config: support multiple values for same name (#7260)
* Refactor the existing git_config.py * Support multiple values for same name
This commit is contained in:
parent
b4a2e9da50
commit
07bac1777f
9 changed files with 259 additions and 56 deletions
|
@ -4,3 +4,8 @@
|
|||
|
||||
[http]
|
||||
proxy = foo
|
||||
|
||||
[push]
|
||||
pushoption = merge_request.create
|
||||
pushoption = merge_request.draft
|
||||
pushoption = merge_request.target=foobar
|
||||
|
|
|
@ -30,3 +30,4 @@
|
|||
- set_result.diff.after == option_value + "\n"
|
||||
- get_result is not changed
|
||||
- get_result.config_value == option_value
|
||||
...
|
|
@ -13,6 +13,7 @@
|
|||
import_tasks: setup.yml
|
||||
|
||||
- block:
|
||||
- import_tasks: set_value.yml
|
||||
# testing parameters exclusion: state and list_all
|
||||
- import_tasks: exclusion_state_list-all.yml
|
||||
# testing get/set option without state
|
||||
|
@ -31,5 +32,7 @@
|
|||
- import_tasks: unset_check_mode.yml
|
||||
# testing for case in issue #1776
|
||||
- import_tasks: set_value_with_tilde.yml
|
||||
- import_tasks: set_multi_value.yml
|
||||
- import_tasks: unset_multi_value.yml
|
||||
when: git_installed is succeeded and git_version.stdout is version(git_version_supporting_includes, ">=")
|
||||
...
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
---
|
||||
# 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
|
||||
|
||||
- import_tasks: setup_no_value.yml
|
||||
|
||||
- name: setting value
|
||||
git_config:
|
||||
name: push.pushoption
|
||||
add_mode: add
|
||||
value: "{{ item }}"
|
||||
state: present
|
||||
scope: global
|
||||
loop:
|
||||
- 'merge_request.create'
|
||||
- 'merge_request.draft'
|
||||
- 'merge_request.target=foobar'
|
||||
register: set_result1
|
||||
|
||||
- name: setting value
|
||||
git_config:
|
||||
name: push.pushoption
|
||||
add_mode: add
|
||||
value: "{{ item }}"
|
||||
state: present
|
||||
scope: global
|
||||
loop:
|
||||
- 'merge_request.create'
|
||||
- 'merge_request.draft'
|
||||
- 'merge_request.target=foobar'
|
||||
register: set_result2
|
||||
|
||||
- name: getting the multi-value
|
||||
git_config:
|
||||
name: push.pushoption
|
||||
scope: global
|
||||
register: get_single_result
|
||||
|
||||
- name: getting all values for the single option
|
||||
git_config_info:
|
||||
name: push.pushoption
|
||||
scope: global
|
||||
register: get_all_result
|
||||
|
||||
- name: replace-all values
|
||||
git_config:
|
||||
name: push.pushoption
|
||||
add_mode: replace-all
|
||||
value: merge_request.create
|
||||
state: present
|
||||
scope: global
|
||||
register: set_result3
|
||||
|
||||
- name: assert set changed and value is correct
|
||||
assert:
|
||||
that:
|
||||
- set_result1.results[0] is changed
|
||||
- set_result1.results[1] is changed
|
||||
- set_result1.results[2] is changed
|
||||
- set_result2.results[0] is not changed
|
||||
- set_result2.results[1] is not changed
|
||||
- set_result2.results[2] is not changed
|
||||
- set_result3 is changed
|
||||
- get_single_result.config_value == 'merge_request.create'
|
||||
- 'get_all_result.config_values == {"push.pushoption": ["merge_request.create", "merge_request.draft", "merge_request.target=foobar"]}'
|
||||
|
||||
- name: assert the diffs are also right
|
||||
assert:
|
||||
that:
|
||||
- set_result1.results[0].diff.before == "\n"
|
||||
- set_result1.results[0].diff.after == "merge_request.create\n"
|
||||
- set_result1.results[1].diff.before == "merge_request.create\n"
|
||||
- set_result1.results[1].diff.after == ["merge_request.create", "merge_request.draft"]
|
||||
- set_result1.results[2].diff.before == ["merge_request.create", "merge_request.draft"]
|
||||
- set_result1.results[2].diff.after == ["merge_request.create", "merge_request.draft", "merge_request.target=foobar"]
|
||||
- set_result3.diff.before == ["merge_request.create", "merge_request.draft", "merge_request.target=foobar"]
|
||||
- set_result3.diff.after == "merge_request.create\n"
|
||||
...
|
39
tests/integration/targets/git_config/tasks/set_value.yml
Normal file
39
tests/integration/targets/git_config/tasks/set_value.yml
Normal file
|
@ -0,0 +1,39 @@
|
|||
---
|
||||
# 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
|
||||
|
||||
- import_tasks: setup_no_value.yml
|
||||
|
||||
- name: setting value
|
||||
git_config:
|
||||
name: core.name
|
||||
value: foo
|
||||
scope: global
|
||||
register: set_result1
|
||||
|
||||
- name: setting another value for same name
|
||||
git_config:
|
||||
name: core.name
|
||||
value: bar
|
||||
scope: global
|
||||
register: set_result2
|
||||
|
||||
- name: getting value
|
||||
git_config:
|
||||
name: core.name
|
||||
scope: global
|
||||
register: get_result
|
||||
|
||||
- name: assert set changed and value is correct
|
||||
assert:
|
||||
that:
|
||||
- set_result1 is changed
|
||||
- set_result2 is changed
|
||||
- get_result is not changed
|
||||
- get_result.config_value == 'bar'
|
||||
- set_result1.diff.before == "\n"
|
||||
- set_result1.diff.after == "foo\n"
|
||||
- set_result2.diff.before == "foo\n"
|
||||
- set_result2.diff.after == "bar\n"
|
||||
...
|
|
@ -11,7 +11,7 @@
|
|||
value: '~/foo/bar'
|
||||
state: present
|
||||
scope: global
|
||||
register: set_result
|
||||
register: set_result1
|
||||
|
||||
- name: setting value again
|
||||
git_config:
|
||||
|
@ -30,7 +30,7 @@
|
|||
- name: assert set changed and value is correct
|
||||
assert:
|
||||
that:
|
||||
- set_result is changed
|
||||
- set_result1 is changed
|
||||
- set_result2 is not changed
|
||||
- get_result is not changed
|
||||
- get_result.config_value == '~/foo/bar'
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
# 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
|
||||
|
||||
- import_tasks: setup_value.yml
|
||||
|
||||
- name: unsetting "push.pushoption"
|
||||
git_config:
|
||||
name: push.pushoption
|
||||
scope: global
|
||||
state: absent
|
||||
register: unset_result
|
||||
|
||||
- name: getting all pushoptions values
|
||||
git_config_info:
|
||||
name: push.pushoption
|
||||
scope: global
|
||||
register: get_all_result
|
||||
|
||||
- name: assert unsetting muti-values
|
||||
assert:
|
||||
that:
|
||||
- unset_result is changed
|
||||
- 'get_all_result.config_values == {"push.pushoption": []}'
|
||||
- unset_result.diff.before == ["merge_request.create", "merge_request.draft", "merge_request.target=foobar"]
|
||||
- unset_result.diff.after == "\n"
|
||||
...
|
Loading…
Add table
Add a link
Reference in a new issue