# HG changeset patch # User cmlenz # Date 1156446322 0 # Node ID eb5c8200f49be8222e4ba3cee4aba2b99e59934f # Parent 76129a79458d663f59a6775f7907c788ae31f06b Fix regression introduced in [242]: any reference to an undefined name would result in a `NameError`. diff --git a/markup/eval.py b/markup/eval.py --- a/markup/eval.py +++ b/markup/eval.py @@ -92,7 +92,7 @@ '_lookup_name': _lookup_name, '_lookup_attr': _lookup_attr, '_lookup_item': _lookup_item}) - if not nocall and callable(retval): + if not nocall and type(retval) is not Undefined and callable(retval): retval = retval() return retval diff --git a/markup/tests/eval.py b/markup/tests/eval.py --- a/markup/tests/eval.py +++ b/markup/tests/eval.py @@ -240,6 +240,10 @@ expr = Expression("[i['name'] for i in items if i['value'] > 1]") self.assertEqual(['b'], expr.evaluate({'items': items})) + def test_error_access_undefined(self): + expr = Expression("nothing", filename='index.html', lineno=50) + self.assertEqual(Undefined, type(expr.evaluate({}))) + def test_error_call_undefined(self): expr = Expression("nothing()", filename='index.html', lineno=50) try: