Fix log_invocation function to pass unittests on python3
Normalize this function to use native strings. Native strings won't display an extra "u" or "b" character to denote py2 unicode or py3 bytes types.
This commit is contained in:
parent
6e8e90ceb4
commit
49194a66c8
2 changed files with 1 additions and 9 deletions
|
@ -1832,14 +1832,7 @@ class AnsibleModule(object):
|
||||||
param_val = param_val.encode('utf-8')
|
param_val = param_val.encode('utf-8')
|
||||||
log_args[param] = heuristic_log_sanitize(param_val, self.no_log_values)
|
log_args[param] = heuristic_log_sanitize(param_val, self.no_log_values)
|
||||||
|
|
||||||
msg = []
|
msg = ['%s=%s' % (to_native(arg), to_native(val)) for arg, val in log_args.items()]
|
||||||
for arg in log_args:
|
|
||||||
arg_val = log_args[arg]
|
|
||||||
if not isinstance(arg_val, (text_type, binary_type)):
|
|
||||||
arg_val = str(arg_val)
|
|
||||||
elif isinstance(arg_val, text_type):
|
|
||||||
arg_val = arg_val.encode('utf-8')
|
|
||||||
msg.append('%s=%s' % (arg, arg_val))
|
|
||||||
if msg:
|
if msg:
|
||||||
msg = 'Invoked with %s' % ' '.join(msg)
|
msg = 'Invoked with %s' % ' '.join(msg)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -30,7 +30,6 @@ from ansible.compat.tests.mock import MagicMock
|
||||||
|
|
||||||
|
|
||||||
class TestModuleUtilsBasic(unittest.TestCase):
|
class TestModuleUtilsBasic(unittest.TestCase):
|
||||||
@unittest.skipIf(sys.version_info[0] >= 3, "Python 3 is not supported on targets (yet)")
|
|
||||||
def test_module_utils_basic__log_invocation(self):
|
def test_module_utils_basic__log_invocation(self):
|
||||||
with swap_stdin_and_argv(stdin_data=json.dumps(
|
with swap_stdin_and_argv(stdin_data=json.dumps(
|
||||||
dict(
|
dict(
|
||||||
|
|
Loading…
Reference in a new issue