creole/tests/test_creolerun.py

56 lines
1.9 KiB
Python

#-*-coding:utf-8*-*
from commands import getstatusoutput
from os import unlink, system
from os.path import isfile
from creole.client import CreoleClient
test_file = '/tmp/test_process'
def _delete_test_file():
if isfile(test_file):
unlink(test_file)
def test_runcmd_code_ok():
assert system('CreoleRun "echo"') == 0
def test_runcmd_code_err():
_delete_test_file()
assert system('CreoleRun "ls %s 2>/dev/null"' % test_file) != 0
def test_runcmd_out_ok():
output = getstatusoutput('CreoleRun "echo -n coucou"')
assert output[0] == 0
assert output[1] == 'coucou'
def test_runcmd_out_err():
_delete_test_file()
output = getstatusoutput('CreoleRun "ls %s"' % test_file)
assert output[0] != 1
# getstatusoutput concatène stdout et stderr
assert test_file in output[1]
def test_runcmd_out_stdin():
output = getstatusoutput('echo hello | CreoleRun "cat"')
assert output[1] == 'hello'
def test_containers():
"""
Vérifie que la sortie est identique quelque soit le mode
"""
containers = CreoleClient().get_containers()
for container in containers:
# recherche du 1er conteneur différent de root
if container['name'] not in ['all', 'root']:
s1 = getstatusoutput('CreoleRun "echo \'\\\\\'" root')
s2 = getstatusoutput('CreoleRun "echo \'\\\\\'" %s' % container['name'])
assert s1 == s2
# Gestion du caractère "*" : #14894
system('touch {0}'.format(test_file))
system('CreoleRun "touch {0}" {1}'.format(test_file+'2', container['name']))
code, res = getstatusoutput('CreoleRun "ls {0}*" {1}'.format(test_file, container['name']))
if container['real_container'] == 'root':
assert res == '{0}\n{0}2'.format(test_file)
else:
assert res == test_file+'2'
break