Report which variable fails interpolation when they are mandatory

Add default value before raising UnsetRequiredSubstitution

Signed-off-by: Luca Nardelli <luca.nardelli@protonmail.com>
This commit is contained in:
Luca Nardelli 2020-10-15 00:21:58 +02:00 committed by Luca Nardelli
parent a24843e1e4
commit d51249acf4
2 changed files with 3 additions and 1 deletions

View File

@ -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

View File

@ -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):