فهرست منبع

Merge pull request #5831 from docker/5829-no-fallthrough

Avoid fallthrough with empty defaults
Joffrey F 7 سال پیش
والد
کامیت
46191fe07b
2فایلهای تغییر یافته به همراه14 افزوده شده و 3 حذف شده
  1. 2 3
      compose/config/interpolation.py
  2. 12 0
      tests/unit/config/interpolation_test.py

+ 2 - 3
compose/config/interpolation.py

@@ -133,9 +133,8 @@ class TemplateWithDefaults(Template):
             braced = mo.group('braced')
             if braced is not None:
                 sep = mo.group('sep')
-                result = self.process_braced_group(braced, sep, mapping)
-                if result:
-                    return result
+                if sep:
+                    return self.process_braced_group(braced, sep, mapping)
 
             if named is not None:
                 val = mapping[named]

+ 12 - 0
tests/unit/config/interpolation_test.py

@@ -420,3 +420,15 @@ def test_interpolate_unicode_values():
 
     interpol("$FOO") == '十六夜 咲夜'
     interpol("${BAR}") == '十六夜 咲夜'
+
+
+def test_interpolate_no_fallthrough():
+    # Test regression on docker/compose#5829
+    variable_mapping = {
+        'TEST:-': 'hello',
+        'TEST-': 'hello',
+    }
+    interpol = Interpolator(TemplateWithDefaults, variable_mapping).interpolate
+
+    assert interpol('${TEST:-}') == ''
+    assert interpol('${TEST-}') == ''