diff options
Diffstat (limited to 'test/units/module_utils/basic/test_command_nonexisting.py')
-rw-r--r-- | test/units/module_utils/basic/test_command_nonexisting.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/test/units/module_utils/basic/test_command_nonexisting.py b/test/units/module_utils/basic/test_command_nonexisting.py new file mode 100644 index 0000000..6ed7f91 --- /dev/null +++ b/test/units/module_utils/basic/test_command_nonexisting.py @@ -0,0 +1,31 @@ +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +import sys +import pytest +import json +import sys +import pytest +import subprocess +import ansible.module_utils.basic +from ansible.module_utils._text import to_bytes +from ansible.module_utils import basic + + +def test_run_non_existent_command(monkeypatch): + """ Test that `command` returns std{out,err} even if the executable is not found """ + def fail_json(msg, **kwargs): + assert kwargs["stderr"] == b'' + assert kwargs["stdout"] == b'' + sys.exit(1) + + def popen(*args, **kwargs): + raise OSError() + + monkeypatch.setattr(basic, '_ANSIBLE_ARGS', to_bytes(json.dumps({'ANSIBLE_MODULE_ARGS': {}}))) + monkeypatch.setattr(subprocess, 'Popen', popen) + + am = basic.AnsibleModule(argument_spec={}) + monkeypatch.setattr(am, 'fail_json', fail_json) + with pytest.raises(SystemExit): + am.run_command("lecho", "whatever") |