legacy_test.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import mock
  2. from compose import legacy
  3. from compose.project import Project
  4. from .testcases import DockerClientTestCase
  5. class ProjectTest(DockerClientTestCase):
  6. def setUp(self):
  7. super(ProjectTest, self).setUp()
  8. self.services = [
  9. self.create_service('web'),
  10. self.create_service('db'),
  11. ]
  12. self.project = Project('composetest', self.services, self.client)
  13. # Create a legacy container for each service
  14. for service in self.services:
  15. service.ensure_image_exists()
  16. self.client.create_container(
  17. name='{}_{}_1'.format(self.project.name, service.name),
  18. **service.options
  19. )
  20. # Create a single one-off legacy container
  21. self.client.create_container(
  22. name='{}_{}_run_1'.format(self.project.name, self.services[0].name),
  23. **self.services[0].options
  24. )
  25. def get_names(self, **kwargs):
  26. if 'stopped' not in kwargs:
  27. kwargs['stopped'] = True
  28. return list(legacy.get_legacy_container_names(
  29. self.client,
  30. self.project.name,
  31. [s.name for s in self.services],
  32. **kwargs
  33. ))
  34. def test_get_legacy_container_names(self):
  35. self.assertEqual(len(self.get_names()), len(self.services))
  36. def test_get_legacy_container_names_one_off(self):
  37. self.assertEqual(len(self.get_names(one_off=True)), 1)
  38. def test_migration_to_labels(self):
  39. with mock.patch.object(legacy, 'log', autospec=True) as mock_log:
  40. self.assertEqual(self.project.containers(stopped=True), [])
  41. self.assertEqual(mock_log.warn.call_count, len(self.services))
  42. legacy.migrate_project_to_labels(self.project)
  43. self.assertEqual(len(self.project.containers(stopped=True)), len(self.services))