1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

xfconf: add command output to results (#5037)

* xfconf: add command output to results

* add changelog fragment

* add docs for return value cmd

* Update plugins/modules/system/xfconf.py

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
Alexei Znamensky 2022-08-01 21:21:06 +12:00 committed by GitHub
parent ab0cd83bb1
commit 5933d28dc4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 1 deletions

View file

@ -0,0 +1,2 @@
minor_changes:
- xfconf - add ``stdout``, ``stderr`` and ``cmd`` to the module results (https://github.com/ansible-collections/community.general/pull/5037).

View file

@ -143,6 +143,24 @@ RETURN = '''
returned: success returned: success
type: any type: any
sample: '"96" or ["red", "blue", "green"]' sample: '"96" or ["red", "blue", "green"]'
cmd:
description:
- A list with the resulting C(xfconf-query) command executed by the module.
returned: success
type: list
elements: str
version_added: 5.4.0
sample:
- /usr/bin/xfconf-query
- --channel
- xfce4-panel
- --property
- /plugins/plugin-19/timezone
- --create
- --type
- string
- --set
- Pacific/Auckland
''' '''
from ansible_collections.community.general.plugins.module_utils.module_helper import StateModuleHelper from ansible_collections.community.general.plugins.module_utils.module_helper import StateModuleHelper
@ -211,6 +229,11 @@ class XFConfProperty(StateModuleHelper):
def state_absent(self): def state_absent(self):
with self.runner('channel property reset', check_mode_skip=True) as ctx: with self.runner('channel property reset', check_mode_skip=True) as ctx:
ctx.run(reset=True) ctx.run(reset=True)
self.vars.stdout = ctx.results_out
self.vars.stderr = ctx.results_err
self.vars.cmd = ctx.cmd
if self.verbosity >= 4:
self.vars.run_info = ctx.run_info
self.vars.value = None self.vars.value = None
def state_present(self): def state_present(self):
@ -237,6 +260,11 @@ class XFConfProperty(StateModuleHelper):
with self.runner('channel property create force_array values_and_types', check_mode_skip=True) as ctx: with self.runner('channel property create force_array values_and_types', check_mode_skip=True) as ctx:
ctx.run(create=True, force_array=self.vars.is_array, values_and_types=(self.vars.value, value_type)) ctx.run(create=True, force_array=self.vars.is_array, values_and_types=(self.vars.value, value_type))
self.vars.stdout = ctx.results_out
self.vars.stderr = ctx.results_err
self.vars.cmd = ctx.cmd
if self.verbosity >= 4:
self.vars.run_info = ctx.run_info
if not self.vars.is_array: if not self.vars.is_array:
self.vars.value = self.vars.value[0] self.vars.value = self.vars.value[0]

View file

@ -268,7 +268,7 @@ def test_xfconf(mocker, capfd, patch_xfconf, testcase):
# Mock function used for running commands first # Mock function used for running commands first
call_results = [item[2] for item in testcase['run_command.calls']] call_results = [item[2] for item in testcase['run_command.calls']]
mock_run_command = mocker.patch( mock_run_command = mocker.patch(
'ansible_collections.community.general.plugins.module_utils.mh.module_helper.AnsibleModule.run_command', 'ansible.module_utils.basic.AnsibleModule.run_command',
side_effect=call_results) side_effect=call_results)
# Try to run test case # Try to run test case
@ -296,6 +296,11 @@ def test_xfconf(mocker, capfd, patch_xfconf, testcase):
print("expected args list =\n%s" % expected_call_args_list) print("expected args list =\n%s" % expected_call_args_list)
assert call_args_list == expected_call_args_list assert call_args_list == expected_call_args_list
expected_cmd, dummy, expected_res = testcase['run_command.calls'][-1]
assert results['cmd'] == expected_cmd
assert results['stdout'] == expected_res[1]
assert results['stderr'] == expected_res[2]
for conditional_test_result in ('msg', 'value', 'previous_value'): for conditional_test_result in ('msg', 'value', 'previous_value'):
if conditional_test_result in testcase: if conditional_test_result in testcase:
assert conditional_test_result in results, "'{0}' not found in {1}".format(conditional_test_result, results) assert conditional_test_result in results, "'{0}' not found in {1}".format(conditional_test_result, results)