浏览代码

Don't allow booleans for mapping types.

Signed-off-by: Daniel Nephin <[email protected]>
Daniel Nephin 9 年之前
父节点
当前提交
18510b4024

+ 1 - 2
compose/config/config_schema_v1.json

@@ -156,8 +156,7 @@
           "type": "object",
           "patternProperties": {
             ".+": {
-              "type": ["string", "number", "boolean", "null"],
-              "format": "bool-value-in-mapping"
+              "type": ["string", "number", "null"]
             }
           },
           "additionalProperties": false

+ 1 - 2
compose/config/config_schema_v2.0.json

@@ -301,8 +301,7 @@
           "type": "object",
           "patternProperties": {
             ".+": {
-              "type": ["string", "number", "boolean", "null"],
-              "format": "bool-value-in-mapping"
+              "type": ["string", "number", "null"]
             }
           },
           "additionalProperties": false

+ 1 - 18
compose/config/validation.py

@@ -63,23 +63,6 @@ def format_expose(instance):
     return True
 
 
[email protected]_checks(format="bool-value-in-mapping")
-def format_boolean_in_environment(instance):
-    """Check if there is a boolean in the mapping sections and display a warning.
-    Always return True here so the validation won't raise an error.
-    """
-    if isinstance(instance, bool):
-        log.warn(
-            "There is a boolean value in the 'environment', 'labels', or "
-            "'extra_hosts' field of a service.\n"
-            "These sections only support string values.\n"
-            "Please add quotes to any boolean values to make them strings "
-            "(eg, 'True', 'false', 'yes', 'N', 'on', 'Off').\n"
-            "This warning will become an error in a future release. \r\n"
-        )
-    return True
-
-
 def match_named_volumes(service_dict, project_volumes):
     service_volumes = service_dict.get('volumes', [])
     for volume_spec in service_volumes:
@@ -370,7 +353,7 @@ def process_config_schema_errors(error):
 
 def validate_against_config_schema(config_file):
     schema = load_jsonschema(config_file.version)
-    format_checker = FormatChecker(["ports", "expose", "bool-value-in-mapping"])
+    format_checker = FormatChecker(["ports", "expose"])
     validator = Draft4Validator(
         schema,
         resolver=RefResolver(get_resolver_path(), schema),

+ 11 - 15
tests/unit/config/config_test.py

@@ -1095,22 +1095,18 @@ class ConfigTest(unittest.TestCase):
             ).services
             self.assertEqual(service[0]['entrypoint'], entrypoint)
 
-    @mock.patch('compose.config.validation.log')
-    def test_logs_warning_for_boolean_in_environment(self, mock_logging):
-        expected_warning_msg = "There is a boolean value in the 'environment'"
-        config.load(
-            build_config_details(
-                {'web': {
-                    'image': 'busybox',
-                    'environment': {'SHOW_STUFF': True}
-                }},
-                'working_dir',
-                'filename.yml'
-            )
-        )
+    def test_logs_warning_for_boolean_in_environment(self):
+        config_details = build_config_details({
+            'web': {
+                'image': 'busybox',
+                'environment': {'SHOW_STUFF': True}
+            }
+        })
+
+        with pytest.raises(ConfigurationError) as exc:
+            config.load(config_details)
 
-        assert mock_logging.warn.called
-        assert expected_warning_msg in mock_logging.warn.call_args[0][0]
+        assert "contains true, which is an invalid type" in exc.exconly()
 
     def test_config_valid_environment_dict_key_contains_dashes(self):
         services = config.load(