From d51249acf4d2f8e6a4b9b7e9f4084621cc95203b Mon Sep 17 00:00:00 2001 From: Luca Nardelli Date: Thu, 15 Oct 2020 00:21:58 +0200 Subject: [PATCH] Report which variable fails interpolation when they are mandatory Add default value before raising UnsetRequiredSubstitution Signed-off-by: Luca Nardelli --- compose/config/interpolation.py | 2 ++ tests/unit/config/interpolation_test.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/compose/config/interpolation.py b/compose/config/interpolation.py index 832344e2c..a464f9465 100644 --- a/compose/config/interpolation.py +++ b/compose/config/interpolation.py @@ -111,12 +111,14 @@ class TemplateWithDefaults(Template): var, _, err = braced.partition(':?') result = mapping.get(var) if not result: + err = err or var raise UnsetRequiredSubstitution(err) return result elif '?' == sep: var, _, err = braced.partition('?') if var in mapping: return mapping.get(var) + err = err or var raise UnsetRequiredSubstitution(err) # Modified from python2.7/string.py diff --git a/tests/unit/config/interpolation_test.py b/tests/unit/config/interpolation_test.py index 6f3533d0b..1fd50d60b 100644 --- a/tests/unit/config/interpolation_test.py +++ b/tests/unit/config/interpolation_test.py @@ -416,7 +416,7 @@ def test_interpolate_mandatory_no_err_msg(defaults_interpolator): with pytest.raises(UnsetRequiredSubstitution) as e: defaults_interpolator("not ok ${BAZ?}") - assert e.value.err == '' + assert e.value.err == 'BAZ' def test_interpolate_mixed_separators(defaults_interpolator):