Parcourir la source

Relax constraints on key naming for environment

One of the use cases is swarm requires at least : character, so going
from conservative to relaxed.

Signed-off-by: Mazz Mosley <[email protected]>
Mazz Mosley il y a 10 ans
Parent
commit
4b2fd7699b
2 fichiers modifiés avec 16 ajouts et 1 suppressions
  1. 1 1
      compose/config/fields_schema.json
  2. 15 0
      tests/unit/config_test.py

+ 1 - 1
compose/config/fields_schema.json

@@ -39,7 +39,7 @@
             {
               "type": "object",
               "patternProperties": {
-                "^[a-zA-Z0-9_]+$": {
+                "^[^-]+$": {
                   "type": ["string", "number", "boolean"],
                   "format": "environment"
                 }

+ 15 - 0
tests/unit/config_test.py

@@ -287,6 +287,21 @@ class ConfigTest(unittest.TestCase):
         self.assertTrue(mock_logging.warn.called)
         self.assertTrue(expected_warning_msg in mock_logging.warn.call_args[0][0])
 
+    def test_config_invalid_environment_dict_key_raises_validation_error(self):
+        expected_error_msg = "Service 'web' configuration key 'environment' contains an invalid type"
+
+        with self.assertRaisesRegexp(ConfigurationError, expected_error_msg):
+            config.load(
+                config.ConfigDetails(
+                    {'web': {
+                        'image': 'busybox',
+                        'environment': {'---': 'nope'}
+                    }},
+                    'working_dir',
+                    'filename.yml'
+                )
+            )
+
 
 class InterpolationTest(unittest.TestCase):
     @mock.patch.dict(os.environ)