Constraint build argument types. Numbers are cast into strings

Numerical driver_opts are also valid and typecast into strings.
Additional config tests.

Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
Joffrey F 2016-02-16 16:48:04 -08:00
commit 1952b52392
5 changed files with 72 additions and 5 deletions

View file

@ -231,7 +231,7 @@ class ConfigTest(unittest.TestCase):
assert volumes['simple'] == {}
assert volumes['other'] == {}
def test_volume_invalid_driver_opt(self):
def test_volume_numeric_driver_opt(self):
config_details = build_config_details({
'version': '2',
'services': {
@ -241,6 +241,19 @@ class ConfigTest(unittest.TestCase):
'simple': {'driver_opts': {'size': 42}},
}
})
cfg = config.load(config_details)
assert cfg.volumes['simple']['driver_opts']['size'] == '42'
def test_volume_invalid_driver_opt(self):
config_details = build_config_details({
'version': '2',
'services': {
'simple': {'image': 'busybox'}
},
'volumes': {
'simple': {'driver_opts': {'size': True}},
}
})
with pytest.raises(ConfigurationError) as exc:
config.load(config_details)
assert 'driver_opts.size contains an invalid type' in exc.exconly()
@ -608,6 +621,34 @@ class ConfigTest(unittest.TestCase):
self.assertTrue('context' in service[0]['build'])
self.assertEqual(service[0]['build']['dockerfile'], 'Dockerfile-alt')
def test_load_with_buildargs(self):
service = config.load(
build_config_details(
{
'version': '2',
'services': {
'web': {
'build': {
'context': '.',
'dockerfile': 'Dockerfile-alt',
'args': {
'opt1': 42,
'opt2': 'foobar'
}
}
}
}
},
'tests/fixtures/extends',
'filename.yml'
)
).services[0]
assert 'args' in service['build']
assert 'opt1' in service['build']['args']
assert isinstance(service['build']['args']['opt1'], str)
assert service['build']['args']['opt1'] == '42'
assert service['build']['args']['opt2'] == 'foobar'
def test_load_with_multiple_files_v2(self):
base_file = config.ConfigFile(
'base.yaml',