changeset 194:c0535b218466 trunk

Fix regression introduced in [242]: any reference to an undefined name would result in a `NameError`.
author cmlenz
date Thu, 24 Aug 2006 19:05:22 +0000
parents 404c02f3156b
children f5952780267a
files markup/eval.py markup/tests/eval.py
diffstat 2 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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
 
--- 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:
Copyright (C) 2012-2017 Edgewall Software