diff --git a/lib/ansible/module_utils/basic.py b/lib/ansible/module_utils/basic.py index a06814a4c56..f3a5756daa8 100644 --- a/lib/ansible/module_utils/basic.py +++ b/lib/ansible/module_utils/basic.py @@ -1435,9 +1435,13 @@ class AnsibleModule(object): def _load_params(self): ''' read the input and set the params attribute. Sets the constants as well.''' - buffer = sys.stdin.read() + # Avoid tracebacks when locale is non-utf8 + if sys.version_info < (3,): + buffer = sys.stdin.read() + else: + buffer = sys.stdin.buffer.read() try: - params = json.loads(buffer) + params = json.loads(buffer.decode('utf-8')) except ValueError: # This helper used too early for fail_json to work. print('{"msg": "Error: Module unable to decode valid JSON on stdin. Unable to figure out what parameters were passed", "failed": true}') @@ -1451,31 +1455,6 @@ class AnsibleModule(object): print('{"msg": "Error: Module unable to locate ANSIBLE_MODULE_ARGS and ANSIBLE_MODULE_CONSTANTS in json data from stdin. Unable to figure out what parameters were passed", "failed": true}') sys.exit(1) -# import select -# buffer = '' -# while True: -# input_list = select.select([sys.stdin], [], [], 5.0)[0] -# if sys.stdin not in input_list: -# # This helper used too early for fail_json to work. -# print('{"msg": "Error: Module unable to read arguments from stdin. Unable to figure out what parameters were passed", "failed": true}') -# sys.exit(1) -# buffer += sys.stdin.read() -# if json.loads(buffer): -# -# for line in sys.stdin: -# if line is None: -# print('s') -# data = sys.stdin.read() -# if MODULE_COMPLEX_ARGS is None: -# # This helper used too early for fail_json to work. -# print('{"msg": "Error: ANSIBLE_MODULE_ARGS not found in environment. Unable to figure out what parameters were passed", "failed": true}') -# sys.exit(1) -# -# params = json_dict_unicode_to_bytes(json.loads(data)) -# if params is None: -# params = dict() -# self.params = params - def _log_to_syslog(self, msg): if HAS_SYSLOG: module = 'ansible-%s' % os.path.basename(__file__) diff --git a/test/units/module_utils/basic/test__log_invocation.py b/test/units/module_utils/basic/test__log_invocation.py index 5e7524e3601..34037f963c9 100644 --- a/test/units/module_utils/basic/test__log_invocation.py +++ b/test/units/module_utils/basic/test__log_invocation.py @@ -22,18 +22,38 @@ __metaclass__ = type import sys import json +from io import BytesIO, StringIO + +from ansible.compat.six import PY3 +from ansible.utils.unicode import to_bytes from ansible.compat.tests import unittest from ansible.compat.tests.mock import MagicMock class TestModuleUtilsBasic(unittest.TestCase): + def setUp(self): + self.real_stdin = sys.stdin + args = json.dumps( + dict( + ANSIBLE_MODULE_ARGS=dict( + foo=False, bar=[1,2,3], bam="bam", baz=u'baz'), + ANSIBLE_MODULE_CONSTANTS=dict() + ) + ) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + + def tearDown(self): + sys.stdin = self.real_stdin + @unittest.skipIf(sys.version_info[0] >= 3, "Python 3 is not supported on targets (yet)") def test_module_utils_basic__log_invocation(self): from ansible.module_utils import basic # test basic log invocation - basic.MODULE_COMPLEX_ARGS = json.dumps(dict(foo=False, bar=[1,2,3], bam="bam", baz=u'baz')) - basic.MODULE_CONSTANTS = '{}' am = basic.AnsibleModule( argument_spec=dict( foo = dict(default=True, type='bool'), diff --git a/test/units/module_utils/basic/test_exit_json.py b/test/units/module_utils/basic/test_exit_json.py index ffb98e0b588..249dc380d93 100644 --- a/test/units/module_utils/basic/test_exit_json.py +++ b/test/units/module_utils/basic/test_exit_json.py @@ -23,8 +23,10 @@ __metaclass__ = type import copy import json import sys -from io import BytesIO +from io import BytesIO, StringIO +from ansible.compat.six import PY3 +from ansible.utils.unicode import to_bytes from ansible.compat.tests import unittest from ansible.module_utils import basic @@ -37,9 +39,13 @@ empty_invocation = {u'module_args': {}} class TestAnsibleModuleExitJson(unittest.TestCase): def setUp(self): - self.COMPLEX_ARGS = basic.MODULE_COMPLEX_ARGS - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + self.old_stdin = sys.stdin + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) self.old_stdout = sys.stdout self.fake_stream = BytesIO() @@ -48,8 +54,8 @@ class TestAnsibleModuleExitJson(unittest.TestCase): self.module = basic.AnsibleModule(argument_spec=dict()) def tearDown(self): - basic.MODULE_COMPLEX_ARGS = self.COMPLEX_ARGS sys.stdout = self.old_stdout + sys.stdin = self.old_stdin def test_exit_json_no_args_exits(self): with self.assertRaises(SystemExit) as ctx: @@ -118,19 +124,31 @@ class TestAnsibleModuleExitValuesRemoved(unittest.TestCase): ) def setUp(self): - self.COMPLEX_ARGS = basic.MODULE_COMPLEX_ARGS + self.old_stdin = sys.stdin + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + self.old_stdout = sys.stdout def tearDown(self): - basic.MODULE_COMPLEX_ARGS = self.COMPLEX_ARGS + sys.stdin = self.old_stdin sys.stdout = self.old_stdout def test_exit_json_removes_values(self): self.maxDiff = None for args, return_val, expected in self.dataset: sys.stdout = BytesIO() - basic.MODULE_COMPLEX_ARGS = json.dumps(args) - basic.MODULE_CONSTANTS = '{}' + params = dict(ANSIBLE_MODULE_ARGS=args, ANSIBLE_MODULE_CONSTANTS={}) + params = json.dumps(params) + if PY3: + sys.stdin = StringIO(params) + sys.stdin.buffer = BytesIO(to_bytes(params)) + else: + sys.stdin = BytesIO(to_bytes(params)) module = basic.AnsibleModule( argument_spec = dict( username=dict(), @@ -149,8 +167,13 @@ class TestAnsibleModuleExitValuesRemoved(unittest.TestCase): del expected['changed'] expected['failed'] = True sys.stdout = BytesIO() - basic.MODULE_COMPLEX_ARGS = json.dumps(args) - basic.MODULE_CONSTANTS = '{}' + params = dict(ANSIBLE_MODULE_ARGS=args, ANSIBLE_MODULE_CONSTANTS={}) + params = json.dumps(params) + if PY3: + sys.stdin = StringIO(params) + sys.stdin.buffer = BytesIO(to_bytes(params)) + else: + sys.stdin = BytesIO(to_bytes(params)) module = basic.AnsibleModule( argument_spec = dict( username=dict(), diff --git a/test/units/module_utils/basic/test_log.py b/test/units/module_utils/basic/test_log.py index 0a78ffb96de..0452ce7d903 100644 --- a/test/units/module_utils/basic/test_log.py +++ b/test/units/module_utils/basic/test_log.py @@ -21,7 +21,12 @@ from __future__ import (absolute_import, division) __metaclass__ = type import sys +import json import syslog +from io import BytesIO, StringIO + +from ansible.compat.six import PY3 +from ansible.utils.unicode import to_bytes from ansible.compat.tests import unittest from ansible.compat.tests.mock import patch, MagicMock @@ -41,10 +46,14 @@ except ImportError: class TestAnsibleModuleSysLogSmokeTest(unittest.TestCase): def setUp(self): - self.complex_args_token = basic.MODULE_COMPLEX_ARGS - self.constants_sentinel = basic.MODULE_CONSTANTS - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + self.real_stdin = sys.stdin + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + self.am = basic.AnsibleModule( argument_spec = dict(), ) @@ -55,8 +64,7 @@ class TestAnsibleModuleSysLogSmokeTest(unittest.TestCase): basic.has_journal = False def tearDown(self): - basic.MODULE_COMPLEX_ARGS = self.complex_args_token - basic.MODULE_CONSTANTS = self.constants_sentinel + sys.stdin = self.real_stdin basic.has_journal = self.has_journal def test_smoketest_syslog(self): @@ -75,17 +83,21 @@ class TestAnsibleModuleSysLogSmokeTest(unittest.TestCase): class TestAnsibleModuleJournaldSmokeTest(unittest.TestCase): def setUp(self): - self.complex_args_token = basic.MODULE_COMPLEX_ARGS - self.constants_sentinel = basic.MODULE_CONSTANTS - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + self.real_stdin = sys.stdin + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + + self.am = basic.AnsibleModule( argument_spec = dict(), ) def tearDown(self): - basic.MODULE_COMPLEX_ARGS = self.complex_args_token - basic.MODULE_CONSTANTS = self.constants_sentinel + sys.stdin = self.real_stdin @unittest.skipUnless(basic.has_journal, 'python systemd bindings not installed') def test_smoketest_journal(self): @@ -121,10 +133,15 @@ class TestAnsibleModuleLogSyslog(unittest.TestCase): } def setUp(self): - self.complex_args_token = basic.MODULE_COMPLEX_ARGS - self.constants_sentinel = basic.MODULE_CONSTANTS - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + self.real_stdin = sys.stdin + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + + self.am = basic.AnsibleModule( argument_spec = dict(), ) @@ -134,8 +151,7 @@ class TestAnsibleModuleLogSyslog(unittest.TestCase): basic.has_journal = False def tearDown(self): - basic.MODULE_COMPLEX_ARGS = self.complex_args_token - basic.MODULE_CONSTANTS = self.constants_sentinel + sys.stdin = self.real_stdin basic.has_journal = self.has_journal @patch('syslog.syslog', autospec=True) @@ -176,10 +192,14 @@ class TestAnsibleModuleLogJournal(unittest.TestCase): } def setUp(self): - self.complex_args_token = basic.MODULE_COMPLEX_ARGS - self.constants_sentinel = basic.MODULE_CONSTANTS - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + self.real_stdin = sys.stdin + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + self.am = basic.AnsibleModule( argument_spec = dict(), ) @@ -198,8 +218,8 @@ class TestAnsibleModuleLogJournal(unittest.TestCase): self._fake_out_reload(basic) def tearDown(self): - basic.MODULE_COMPLEX_ARGS = self.complex_args_token - basic.MODULE_CONSTANTS = self.constants_sentinel + sys.stdin = self.real_stdin + basic.has_journal = self.has_journal if self.module_patcher: self.module_patcher.stop() diff --git a/test/units/module_utils/basic/test_run_command.py b/test/units/module_utils/basic/test_run_command.py index 8a17f7e55aa..3c563658162 100644 --- a/test/units/module_utils/basic/test_run_command.py +++ b/test/units/module_utils/basic/test_run_command.py @@ -20,9 +20,13 @@ from __future__ import (absolute_import, division) __metaclass__ = type import errno +import json import sys import time -from io import BytesIO +from io import BytesIO, StringIO + +from ansible.compat.six import PY3 +from ansible.utils.unicode import to_bytes from ansible.compat.tests import unittest from ansible.compat.tests.mock import call, MagicMock, Mock, patch, sentinel @@ -61,8 +65,12 @@ class TestAnsibleModuleRunCommand(unittest.TestCase): if path == '/inaccessible': raise OSError(errno.EPERM, "Permission denied: '/inaccessible'") - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) self.module = AnsibleModule(argument_spec=dict()) self.module.fail_json = MagicMock(side_effect=SystemExit) diff --git a/test/units/module_utils/basic/test_safe_eval.py b/test/units/module_utils/basic/test_safe_eval.py index cb28e9063f7..36e9e1e399f 100644 --- a/test/units/module_utils/basic/test_safe_eval.py +++ b/test/units/module_utils/basic/test_safe_eval.py @@ -20,16 +20,32 @@ from __future__ import (absolute_import, division) __metaclass__ = type -from ansible.compat.tests import unittest +import sys +import json +from io import BytesIO, StringIO +from ansible.compat.tests import unittest +from ansible.compat.six import PY3 +from ansible.utils.unicode import to_bytes class TestAnsibleModuleExitJson(unittest.TestCase): + def setUp(self): + self.real_stdin = sys.stdin + + def tearDown(self): + sys.stdin = self.real_stdin + def test_module_utils_basic_safe_eval(self): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec=dict(), ) diff --git a/test/units/module_utils/test_basic.py b/test/units/module_utils/test_basic.py index 39d9efe0657..f8c96c65368 100644 --- a/test/units/module_utils/test_basic.py +++ b/test/units/module_utils/test_basic.py @@ -21,14 +21,19 @@ from __future__ import (absolute_import, division) __metaclass__ = type import errno +import json import os import sys +from io import BytesIO, StringIO try: import builtins except ImportError: import __builtin__ as builtins +from ansible.compat.six import PY3 +from ansible.utils.unicode import to_bytes + from ansible.compat.tests import unittest from ansible.compat.tests.mock import patch, MagicMock, mock_open, Mock, call @@ -37,10 +42,10 @@ realimport = builtins.__import__ class TestModuleUtilsBasic(unittest.TestCase): def setUp(self): - pass + self.real_stdin = sys.stdin def tearDown(self): - pass + sys.stdin = self.real_stdin def clear_modules(self, mods): for mod in mods: @@ -266,8 +271,13 @@ class TestModuleUtilsBasic(unittest.TestCase): def test_module_utils_basic_ansible_module_creation(self): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec=dict(), ) @@ -282,8 +292,13 @@ class TestModuleUtilsBasic(unittest.TestCase): req_to = (('bam', 'baz'),) # should test ok - basic.MODULE_COMPLEX_ARGS = '{"foo":"hello"}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={"foo": "hello"}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = arg_spec, mutually_exclusive = mut_ex, @@ -297,8 +312,13 @@ class TestModuleUtilsBasic(unittest.TestCase): # FIXME: add asserts here to verify the basic config # fail, because a required param was not specified - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + self.assertRaises( SystemExit, basic.AnsibleModule, @@ -312,8 +332,13 @@ class TestModuleUtilsBasic(unittest.TestCase): ) # fail because of mutually exclusive parameters - basic.MODULE_COMPLEX_ARGS = '{"foo":"hello", "bar": "bad", "bam": "bad"}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={"foo":"hello", "bar": "bad", "bam": "bad"}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + self.assertRaises( SystemExit, basic.AnsibleModule, @@ -327,8 +352,13 @@ class TestModuleUtilsBasic(unittest.TestCase): ) # fail because a param required due to another param was not specified - basic.MODULE_COMPLEX_ARGS = '{"bam":"bad"}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={"bam": "bad"}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + self.assertRaises( SystemExit, basic.AnsibleModule, @@ -344,8 +374,13 @@ class TestModuleUtilsBasic(unittest.TestCase): def test_module_utils_basic_ansible_module_load_file_common_arguments(self): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = dict(), ) @@ -394,8 +429,13 @@ class TestModuleUtilsBasic(unittest.TestCase): def test_module_utils_basic_ansible_module_selinux_mls_enabled(self): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = dict(), ) @@ -415,8 +455,13 @@ class TestModuleUtilsBasic(unittest.TestCase): def test_module_utils_basic_ansible_module_selinux_initial_context(self): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = dict(), ) @@ -430,8 +475,13 @@ class TestModuleUtilsBasic(unittest.TestCase): def test_module_utils_basic_ansible_module_selinux_enabled(self): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = dict(), ) @@ -463,8 +513,13 @@ class TestModuleUtilsBasic(unittest.TestCase): def test_module_utils_basic_ansible_module_selinux_default_context(self): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = dict(), ) @@ -500,8 +555,13 @@ class TestModuleUtilsBasic(unittest.TestCase): def test_module_utils_basic_ansible_module_selinux_context(self): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = dict(), ) @@ -543,8 +603,13 @@ class TestModuleUtilsBasic(unittest.TestCase): def test_module_utils_basic_ansible_module_is_special_selinux_path(self): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{"SELINUX_SPECIAL_FS": "nfs,nfsd,foos"}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={"SELINUX_SPECIAL_FS": "nfs,nfsd,foos"})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = dict(), ) @@ -585,20 +650,30 @@ class TestModuleUtilsBasic(unittest.TestCase): def test_module_utils_basic_ansible_module_to_filesystem_str(self): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = dict(), ) self.assertEqual(am._to_filesystem_str(u'foo'), b'foo') self.assertEqual(am._to_filesystem_str(u'föö'), b'f\xc3\xb6\xc3\xb6') - + def test_module_utils_basic_ansible_module_user_and_group(self): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = dict(), ) @@ -613,8 +688,13 @@ class TestModuleUtilsBasic(unittest.TestCase): def test_module_utils_basic_ansible_module_find_mount_point(self): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = dict(), ) @@ -638,8 +718,13 @@ class TestModuleUtilsBasic(unittest.TestCase): def test_module_utils_basic_ansible_module_set_context_if_different(self): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = dict(), ) @@ -684,8 +769,13 @@ class TestModuleUtilsBasic(unittest.TestCase): def test_module_utils_basic_ansible_module_set_owner_if_different(self): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = dict(), ) @@ -724,7 +814,13 @@ class TestModuleUtilsBasic(unittest.TestCase): def test_module_utils_basic_ansible_module_set_group_if_different(self): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = dict(), ) @@ -763,8 +859,13 @@ class TestModuleUtilsBasic(unittest.TestCase): def test_module_utils_basic_ansible_module_set_mode_if_different(self): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = dict(), ) @@ -852,8 +953,13 @@ class TestModuleUtilsBasic(unittest.TestCase): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = dict(), ) @@ -1031,8 +1137,13 @@ class TestModuleUtilsBasic(unittest.TestCase): from ansible.module_utils import basic - basic.MODULE_COMPLEX_ARGS = '{}' - basic.MODULE_CONSTANTS = '{}' + args = json.dumps(dict(ANSIBLE_MODULE_ARGS={}, ANSIBLE_MODULE_CONSTANTS={})) + if PY3: + sys.stdin = StringIO(args) + sys.stdin.buffer = BytesIO(to_bytes(args)) + else: + sys.stdin = BytesIO(to_bytes(args)) + am = basic.AnsibleModule( argument_spec = dict(), )