Use json to encode invalid values in configuration errors so that the user sees a proper repr of the value.

Signed-off-by: Daniel Nephin <dnephin@docker.com>
This commit is contained in:
Daniel Nephin 2015-10-30 16:50:31 -04:00
parent 475a091768
commit bf1552da79
8 changed files with 17 additions and 3 deletions

View File

@ -1,3 +1,6 @@
from __future__ import absolute_import
from __future__ import unicode_literals
from compose.cli.main import main from compose.cli.main import main
main() main()

View File

@ -1,3 +1,6 @@
from __future__ import absolute_import
from __future__ import unicode_literals
from compose.config.errors import DependencyError from compose.config.errors import DependencyError

View File

@ -254,7 +254,8 @@ def _parse_oneof_validator(error):
) )
return "{}contains {}, which is an invalid type, it should be {}".format( return "{}contains {}, which is an invalid type, it should be {}".format(
invalid_config_key, invalid_config_key,
context.instance, # Always print the json repr of the invalid value
json.dumps(context.instance),
_parse_valid_types_from_validator(context.validator_value)) _parse_valid_types_from_validator(context.validator_value))
if context.validator == 'uniqueItems': if context.validator == 'uniqueItems':

View File

@ -1,3 +1,4 @@
from __future__ import absolute_import
from __future__ import unicode_literals from __future__ import unicode_literals

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
from __future__ import print_function
from __future__ import absolute_import from __future__ import absolute_import
from __future__ import print_function
from __future__ import unicode_literals from __future__ import unicode_literals
import datetime import datetime

View File

@ -1,3 +1,4 @@
from __future__ import absolute_import
from __future__ import unicode_literals from __future__ import unicode_literals
from docker.errors import DockerException from docker.errors import DockerException

View File

@ -552,7 +552,9 @@ class ConfigTest(unittest.TestCase):
) )
def test_config_extra_hosts_list_of_dicts_validation_error(self): def test_config_extra_hosts_list_of_dicts_validation_error(self):
expected_error_msg = "key 'extra_hosts' contains {'somehost': '162.242.195.82'}, which is an invalid type, it should be a string" expected_error_msg = (
"key 'extra_hosts' contains {\"somehost\": \"162.242.195.82\"}, "
"which is an invalid type, it should be a string")
with self.assertRaisesRegexp(ConfigurationError, expected_error_msg): with self.assertRaisesRegexp(ConfigurationError, expected_error_msg):
config.load( config.load(

View File

@ -1,3 +1,6 @@
from __future__ import absolute_import
from __future__ import unicode_literals
import pytest import pytest
from compose.config.errors import ConfigurationError from compose.config.errors import ConfigurationError