Chromium Code Reviews| Index: telemetry/telemetry/util/js_template.py |
| diff --git a/telemetry/telemetry/util/js_template.py b/telemetry/telemetry/util/js_template.py |
| index 61f5d5f9b1d5d56e013d753e78db13fc78a407c0..c167ebc3afa1922baed36966e49d940cd65a4f4b 100644 |
| --- a/telemetry/telemetry/util/js_template.py |
| +++ b/telemetry/telemetry/util/js_template.py |
| @@ -38,12 +38,16 @@ def Render(template, **kwargs): |
| to interpolate with values. |
| **kwargs: Values to be interpolated in the template. |
| """ |
| + unused = set(kwargs) |
| + |
| def interpolate(m): |
| field_spec = m.group('field_spec').strip() |
| field = RE_FIELD_IDENTIFIER.match(field_spec) |
| if not field: |
| raise KeyError(field_spec) |
| - value = kwargs[field.group('name')] |
| + key = field.group('name') |
| + value = kwargs[key] |
| + unused.discard(key) |
| if field.group('modifier') == '@': |
| if not isinstance(value, str): |
| raise ValueError('Literal value for %s must be a string' % field_spec) |
| @@ -51,4 +55,8 @@ def Render(template, **kwargs): |
| else: |
| return RenderValue(value) |
| - return RE_REPLACEMENT_FIELD.sub(interpolate, template) |
| + result = RE_REPLACEMENT_FIELD.sub(interpolate, template) |
| + if unused: |
| + raise TypeError('Unexpected arguments not used in template: %s.' % ( |
| + ', '.join(repr(str(k)) for k in sorted(unused)))) |
|
nednguyen
2017/02/02 14:33:50
On another hand, ca we also output error if there
perezju
2017/02/02 14:42:44
Those will raise a KeyError when trying to read th
|
| + return result |