Fix build section without context.

Signed-off-by: Daniel Nephin <dnephin@docker.com>
This commit is contained in:
Daniel Nephin 2016-02-10 13:32:04 -05:00
parent cea7911f56
commit 2ced83e3d9
4 changed files with 22 additions and 4 deletions

View File

@ -878,6 +878,9 @@ def validate_paths(service_dict):
build_path = build
elif isinstance(build, dict) and 'context' in build:
build_path = build['context']
else:
# We have a build section but no context, so nothing to validate
return
if (
not is_url(build_path) and

View File

@ -195,7 +195,12 @@
"anyOf": [
{"required": ["build"]},
{"required": ["image"]}
]
],
"properties": {
"build": {
"required": ["context"]
}
}
}
}
}

View File

@ -253,10 +253,9 @@ def handle_generic_service_error(error, path):
msg_format = "{path} contains an invalid type, it should be {msg}"
error_msg = _parse_valid_types_from_validator(error.validator_value)
# TODO: no test case for this branch, there are no config options
# which exercise this branch
elif error.validator == 'required':
msg_format = "{path} is invalid, {msg}"
error_msg = ", ".join(error.validator_value)
msg_format = "{path} is invalid, {msg} is required."
elif error.validator == 'dependencies':
config_key = list(error.validator_value.keys())[0]

View File

@ -1136,6 +1136,17 @@ class ConfigTest(unittest.TestCase):
config.load(config_details)
assert "Service 'one' depends on service 'three'" in exc.exconly()
def test_load_dockerfile_without_context(self):
config_details = build_config_details({
'version': '2',
'services': {
'one': {'build': {'dockerfile': 'Dockerfile.foo'}},
},
})
with pytest.raises(ConfigurationError) as exc:
config.load(config_details)
assert 'one.build is invalid, context is required.' in exc.exconly()
class NetworkModeTest(unittest.TestCase):
def test_network_mode_standard(self):