1
0
Эх сурвалжийг харах

Fix validation message when there are multiple ested oneOf validations.

Signed-off-by: Daniel Nephin <[email protected]>
Daniel Nephin 9 жил өмнө
parent
commit
02535f0cf1

+ 4 - 0
compose/config/validation.py

@@ -312,6 +312,10 @@ def _parse_oneof_validator(error):
     types = []
     for context in error.context:
 
+        if context.validator == 'oneOf':
+            _, error_msg = _parse_oneof_validator(context)
+            return path_string(context.path), error_msg
+
         if context.validator == 'required':
             return (None, context.message)
 

+ 21 - 0
tests/unit/config/config_test.py

@@ -371,6 +371,27 @@ class ConfigTest(unittest.TestCase):
         error_msg = "service 'web' doesn't have any configuration options"
         assert error_msg in exc.exconly()
 
+    def test_load_with_empty_build_args(self):
+        config_details = build_config_details(
+            {
+                'version': '2',
+                'services': {
+                    'web': {
+                        'build': {
+                            'context': '.',
+                            'args': None,
+                        },
+                    },
+                },
+            }
+        )
+        with pytest.raises(ConfigurationError) as exc:
+            config.load(config_details)
+        assert (
+            "services.web.build.args contains an invalid type, it should be an "
+            "array, or an object" in exc.exconly()
+        )
+
     def test_config_integer_service_name_raise_validation_error(self):
         with pytest.raises(ConfigurationError) as excinfo:
             config.load(