From 9bd7147bb87fb9ec8950a471a77377fe295ca3ab Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Thu, 22 Feb 2018 16:56:03 -0600 Subject: [PATCH] Start of tests for modify_module, specifically to ensure proper shebang replacement on old style modules (#36602) (#36606) (cherry picked from commit a7062b75874ef7e5948c9a6964971ae173a0880f) --- .../module_common/test_modify_module.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 test/units/executor/module_common/test_modify_module.py diff --git a/test/units/executor/module_common/test_modify_module.py b/test/units/executor/module_common/test_modify_module.py new file mode 100644 index 00000000000..54113718299 --- /dev/null +++ b/test/units/executor/module_common/test_modify_module.py @@ -0,0 +1,42 @@ +# Copyright (c) 2018 Matt Martz +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) +# -*- coding: utf-8 -*- + +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +import pytest + +from ansible.executor.module_common import modify_module +from ansible.module_utils.six import PY2 + +from test_module_common import templar + + +FAKE_OLD_MODULE = b'''#!/usr/bin/python +import sys +print('{"result": "%s"}' % sys.executable) +''' + + +@pytest.fixture +def fake_old_module_open(mocker): + m = mocker.mock_open(read_data=FAKE_OLD_MODULE) + if PY2: + mocker.patch('__builtin__.open', m) + else: + mocker.patch('builtins.open', m) + + +def test_shebang(fake_old_module_open): + (data, style, shebang) = modify_module('fake_module', 'fake_path', {}) + assert shebang == '#!/usr/bin/python' + + +def test_shebang_task_vars(fake_old_module_open, templar): + task_vars = { + 'ansible_python_interpreter': '/usr/bin/python3' + } + + (data, style, shebang) = modify_module('fake_module', 'fake_path', {}, task_vars=task_vars, templar=templar) + assert shebang == '#!/usr/bin/python3'