testcases.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from __future__ import unicode_literals
  2. from __future__ import absolute_import
  3. from compose.service import Service
  4. from compose.config import make_service_dict
  5. from compose.cli.docker_client import docker_client
  6. from compose.progress_stream import stream_output
  7. from .. import unittest
  8. class DockerClientTestCase(unittest.TestCase):
  9. @classmethod
  10. def setUpClass(cls):
  11. cls.client = docker_client()
  12. # TODO: update to use labels in #652
  13. def setUp(self):
  14. for c in self.client.containers(all=True):
  15. if c['Names'] and 'composetest' in c['Names'][0]:
  16. self.client.kill(c['Id'])
  17. self.client.remove_container(c['Id'])
  18. for i in self.client.images():
  19. if isinstance(i.get('Tag'), basestring) and 'composetest' in i['Tag']:
  20. self.client.remove_image(i)
  21. def create_service(self, name, **kwargs):
  22. if 'image' not in kwargs and 'build' not in kwargs:
  23. kwargs['image'] = 'busybox:latest'
  24. if 'command' not in kwargs:
  25. kwargs['command'] = ["/bin/sleep", "300"]
  26. return Service(
  27. project='composetest',
  28. client=self.client,
  29. **make_service_dict(name, kwargs, working_dir='.')
  30. )
  31. def check_build(self, *args, **kwargs):
  32. build_output = self.client.build(*args, **kwargs)
  33. stream_output(build_output, open('/dev/null', 'w'))