mirror of https://github.com/ansible/ansible.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
891 B
Python
29 lines
891 B
Python
4 years ago
|
from __future__ import (absolute_import, division, print_function)
|
||
|
__metaclass__ = type
|
||
|
|
||
|
import json
|
||
|
import sys
|
||
|
import pytest
|
||
|
import subprocess
|
||
|
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")
|