mirror of https://github.com/docker/docker-py.git
Use shlex for exec string cmd, added integration testcase.
This commit is contained in:
parent
3ac4c78850
commit
b365796439
|
@ -548,8 +548,8 @@ class Client(requests.Session):
|
||||||
raise Exception('Exec is not supported in API < 1.15!')
|
raise Exception('Exec is not supported in API < 1.15!')
|
||||||
if isinstance(container, dict):
|
if isinstance(container, dict):
|
||||||
container = container.get('Id')
|
container = container.get('Id')
|
||||||
if not isinstance(cmd, (list, tuple)):
|
if isinstance(cmd, six.string_types):
|
||||||
cmd = [cmd]
|
cmd = shlex.split(str(cmd))
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
'Container': container,
|
'Container': container,
|
||||||
|
|
|
@ -630,7 +630,8 @@ class TestRestartingContainer(BaseTestCase):
|
||||||
|
|
||||||
class TestExecuteCommand(BaseTestCase):
|
class TestExecuteCommand(BaseTestCase):
|
||||||
def runTest(self):
|
def runTest(self):
|
||||||
container = self.client.create_container('busybox', ['false'])
|
container = self.client.create_container('busybox', 'cat',
|
||||||
|
detach=True, stdin_open=True)
|
||||||
id = container['Id']
|
id = container['Id']
|
||||||
self.client.start(id)
|
self.client.start(id)
|
||||||
self.tmp_containers.append(id)
|
self.tmp_containers.append(id)
|
||||||
|
@ -640,9 +641,23 @@ class TestExecuteCommand(BaseTestCase):
|
||||||
self.assertEqual(res, expected)
|
self.assertEqual(res, expected)
|
||||||
|
|
||||||
|
|
||||||
|
class TestExecuteCommandString(BaseTestCase):
|
||||||
|
def runTest(self):
|
||||||
|
container = self.client.create_container('busybox', 'cat',
|
||||||
|
detach=True, stdin_open=True)
|
||||||
|
id = container['Id']
|
||||||
|
self.client.start(id)
|
||||||
|
self.tmp_containers.append(id)
|
||||||
|
|
||||||
|
res = self.client.execute(id, 'echo hello world', stdout=True)
|
||||||
|
expected = b'hello world\n' if six.PY3 else 'hello world\n'
|
||||||
|
self.assertEqual(res, expected)
|
||||||
|
|
||||||
|
|
||||||
class TestExecuteCommandStreaming(BaseTestCase):
|
class TestExecuteCommandStreaming(BaseTestCase):
|
||||||
def runTest(self):
|
def runTest(self):
|
||||||
container = self.client.create_container('busybox', ['false'])
|
container = self.client.create_container('busybox', 'cat',
|
||||||
|
detach=True, stdin_open=True)
|
||||||
id = container['Id']
|
id = container['Id']
|
||||||
self.client.start(id)
|
self.client.start(id)
|
||||||
self.tmp_containers.append(id)
|
self.tmp_containers.append(id)
|
||||||
|
|
Loading…
Reference in New Issue