mirror of https://github.com/docker/compose.git
Work around some coupling of links, net & volume_from
This is minimal disruptive change I could make to ensure the service integration tests worked, now we have some validation happening. There is some coupling/entanglement/assumption going on here. Project when creating a service, using it's class method from_dicts performs some transformations on links, net & volume_from, which get passed on to Service when creating. Service itself, then performs some transformation on those values. This worked fine in the tests before because those options were merely passed on via make_service_dict. This is no longer true with our validation in place. You can't pass to ServiceLoader [(obj, 'string')] for links, the validation expects it to be a list of strings. Which it would be when passed into Project.from_dicts method. I think the tests need some re-factoring but for now, manually deleting keys out of the kwargs and then putting them back in for Service Creation allows the tests to continue. I am not super happy about this approach. Hopefully we can come back and improve it. Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
This commit is contained in:
parent
9b8e404d13
commit
d31d24d19f
|
@ -31,11 +31,29 @@ class DockerClientTestCase(unittest.TestCase):
|
|||
if 'command' not in kwargs:
|
||||
kwargs['command'] = ["top"]
|
||||
|
||||
links = kwargs.get('links', None)
|
||||
volumes_from = kwargs.get('volumes_from', None)
|
||||
net = kwargs.get('net', None)
|
||||
|
||||
workaround_options = ['links', 'volumes_from', 'net']
|
||||
for key in workaround_options:
|
||||
try:
|
||||
del kwargs[key]
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
options = ServiceLoader(working_dir='.', filename=None, service_name=name, service_dict=kwargs).make_service_dict()
|
||||
|
||||
labels = options.setdefault('labels', {})
|
||||
labels['com.docker.compose.test-name'] = self.id()
|
||||
|
||||
if links:
|
||||
options['links'] = links
|
||||
if volumes_from:
|
||||
options['volumes_from'] = volumes_from
|
||||
if net:
|
||||
options['net'] = net
|
||||
|
||||
return Service(
|
||||
project='composetest',
|
||||
client=self.client,
|
||||
|
|
Loading…
Reference in New Issue