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
main()

View File

@ -1,3 +1,6 @@
from __future__ import absolute_import
from __future__ import unicode_literals
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(
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))
if context.validator == 'uniqueItems':

View File

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

View File

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

View File

@ -1,3 +1,4 @@
from __future__ import absolute_import
from __future__ import unicode_literals
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):
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):
config.load(

View File

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