test create from config with duplicate mount points

Signed-off-by: Collins Abitekaniza <abtcolns@gmail.com>
This commit is contained in:
Collins Abitekaniza 2018-12-09 00:43:06 +03:00
parent d980d170a6
commit 47ff8d710c
3 changed files with 38 additions and 4 deletions

View File

@ -8,7 +8,7 @@ import os
import string import string
import sys import sys
from collections import namedtuple from collections import namedtuple
from operator import itemgetter, attrgetter from operator import attrgetter
import six import six
import yaml import yaml
@ -844,9 +844,9 @@ def finalize_service_volumes(service_dict, environment):
duplicate_mounts.append(mount.repr()) duplicate_mounts.append(mount.repr())
if duplicate_mounts: if duplicate_mounts:
raise ConfigurationError("Duplicate mount points: volumes [%s]" % ( raise ConfigurationError("Duplicate mount points: [%s]" % (
', '.join(duplicate_mounts))) ', '.join(duplicate_mounts)))
service_dict['volumes'] = finalized_volumes service_dict['volumes'] = finalized_volumes
return service_dict return service_dict

View File

@ -9,7 +9,6 @@ import sys
from collections import namedtuple from collections import namedtuple
from collections import OrderedDict from collections import OrderedDict
from operator import attrgetter from operator import attrgetter
from operator import itemgetter
import enum import enum
import six import six

View File

@ -3071,6 +3071,41 @@ class ConfigTest(unittest.TestCase):
) )
config.load(config_details) config.load(config_details)
def test_config_duplicate_mount_points(self):
config1 = build_config_details(
{
'version': '3.5',
'services': {
'web': {
'image': 'busybox',
'volumes': ['/tmp/foo:/tmp/foo', '/tmp/foo:/tmp/foo:rw']
}
}
}
)
config2 = build_config_details(
{
'version': '3.5',
'services': {
'web': {
'image': 'busybox',
'volumes': ['/x:/y', '/z:/y']
}
}
}
)
with self.assertRaises(ConfigurationError) as e:
config.load(config1)
self.assertEquals(str(e.exception), 'Duplicate mount points: [%s]' % (
', '.join(['/tmp/foo:/tmp/foo:rw']*2)))
with self.assertRaises(ConfigurationError) as e:
config.load(config2)
self.assertEquals(str(e.exception), 'Duplicate mount points: [%s]' % (
', '.join(['/x:/y:rw', '/z:/y:rw'])))
class NetworkModeTest(unittest.TestCase): class NetworkModeTest(unittest.TestCase):