def test_did_you_mean_playbook(): """ Test adhoc with yml file as argument parameter""" adhoc_cli = AdHocCLI(['/bin/ansible', '-m', 'command', 'localhost.yml']) adhoc_cli.parse() with pytest.raises(AnsibleOptionsError) as exec_info: adhoc_cli.run() assert 'No argument passed to command module (did you mean to run ansible-playbook?)' == str(exec_info.value)
def test_no_argument(): """ Test no argument command""" adhoc_cli = AdHocCLI(['/bin/ansible', '-m', 'command', 'localhost']) adhoc_cli.parse() with pytest.raises(AnsibleOptionsError) as exec_info: adhoc_cli.run() assert 'No argument passed to command module' == str(exec_info.value)
def test_ansible_version(capsys, mocker): adhoc_cli = AdHocCLI(args=['/bin/ansible', '--version']) with pytest.raises(SystemExit): adhoc_cli.run() version = capsys.readouterr() try: version_lines = version.out.splitlines() except AttributeError: # Python 2.6 does return a named tuple, so get the first item version_lines = version[0].splitlines() assert len( version_lines ) == 6, 'Incorrect number of lines in "ansible --version" output' assert re.match( 'ansible [0-9.a-z]+$', version_lines[0] ), 'Incorrect ansible version line in "ansible --version" output' assert re.match( ' config file = .*$', version_lines[1] ), 'Incorrect config file line in "ansible --version" output' assert re.match( ' configured module search path = .*$', version_lines[2] ), 'Incorrect module search path in "ansible --version" output' assert re.match( ' ansible python module location = .*$', version_lines[3] ), 'Incorrect python module location in "ansible --version" output' assert re.match( ' executable location = .*$', version_lines[4] ), 'Incorrect executable locaction in "ansible --version" output' assert re.match(' python version = .*$', version_lines[5] ), 'Incorrect python version in "ansible --version" output'
def test_run_import_playbook(): """ Test import_playbook which is not allowed with ad-hoc command""" import_playbook = 'import_playbook' adhoc_cli = AdHocCLI(args=['/bin/ansible', '-m', import_playbook, 'localhost']) adhoc_cli.parse() with pytest.raises(AnsibleOptionsError) as exec_info: adhoc_cli.run() assert context.CLIARGS['module_name'] == import_playbook assert "'%s' is not a valid action for ad-hoc commands" % import_playbook == str(exec_info.value)
def test_simple_command(): """ Test valid command and its run""" adhoc_cli = AdHocCLI( ['/bin/ansible', '-m', 'command', 'localhost', '-a', 'echo "hi"']) adhoc_cli.parse() ret = adhoc_cli.run() assert ret == 0
def test_simple_command(): """ Test valid command and its run""" adhoc_cli = AdHocCLI(['/bin/ansible', '-m', 'command', 'localhost']) adhoc_cli.parse() adhoc_cli.options.module_args = "echo 'hi'" ret = adhoc_cli.run() assert ret == 0
def test(self, target): os.chdir(self.wd) # need to chdir before importing! from ansible.cli.adhoc import AdHocCLI cli = AdHocCLI( [ sys.argv[0], '-i', 'inventory', target, '-m', 'ping', '-o' ] ) cli.parse() exit = cli.run() os.chdir(self.pwd) return exit == 0