[Checkins] SVN: Zope/trunk/src/DocumentTemplate/ LP #372629: fix <dtml-raise> for zExceptions.
Tres Seaver
tseaver at palladion.com
Wed May 6 12:19:57 EDT 2009
Log message for revision 99792:
LP #372629: fix <dtml-raise> for zExceptions.
Changed:
U Zope/trunk/src/DocumentTemplate/DT_Raise.py
A Zope/trunk/src/DocumentTemplate/tests/test_DT_Raise.py
-=-
Modified: Zope/trunk/src/DocumentTemplate/DT_Raise.py
===================================================================
--- Zope/trunk/src/DocumentTemplate/DT_Raise.py 2009-05-06 15:48:10 UTC (rev 99791)
+++ Zope/trunk/src/DocumentTemplate/DT_Raise.py 2009-05-06 16:19:56 UTC (rev 99792)
@@ -27,6 +27,7 @@
__version__='$Revision: 1.13 $'[11:-2]
from zExceptions import upgradeException
+from zExceptions import convertExceptionType
from DocumentTemplate.DT_Util import name_param
from DocumentTemplate.DT_Util import parse_params
from DocumentTemplate.DT_Util import render_blocks
@@ -49,12 +50,16 @@
def render(self,md):
expr = self.expr
if expr is None:
- t = __builtins__.get(self.__name__, RuntimeError)
+ t = convertExceptionType(self.__name__)
+ if t is None:
+ t = RuntimeError
else:
try:
t = expr.eval(md)
except:
- t = InvalidErrorTypeExpression
+ t = convertExceptionType(self.__name__)
+ if t is None:
+ t = InvalidErrorTypeExpression
try:
v = render_blocks(self.section, md)
Added: Zope/trunk/src/DocumentTemplate/tests/test_DT_Raise.py
===================================================================
--- Zope/trunk/src/DocumentTemplate/tests/test_DT_Raise.py (rev 0)
+++ Zope/trunk/src/DocumentTemplate/tests/test_DT_Raise.py 2009-05-06 16:19:56 UTC (rev 99792)
@@ -0,0 +1,69 @@
+import unittest
+
+class Test_Raise(unittest.TestCase):
+
+ def _getTargetClass(self):
+ from DocumentTemplate.DT_Raise import Raise
+ return Raise
+
+ def _makeOne(self, type=None, expr=None):
+ args = []
+ if type is not None:
+ args.append('type="%s"' % type)
+ if expr is not None:
+ args.append('expr="%s"' % expr)
+ blocks = [('raise', ' '.join(args), DummySection())]
+ return self._getTargetClass()(blocks)
+
+ def test_ctor_w_type(self):
+ raiser = self._makeOne(type='Redirect')
+ self.assertEqual(raiser.__name__, 'Redirect')
+ self.assertEqual(raiser.expr, None)
+
+ def test_ctor_w_expr(self):
+ from DocumentTemplate.DT_Util import Eval
+ raiser = self._makeOne(expr='SyntaxError')
+ self.assertEqual(raiser.__name__, 'SyntaxError')
+ self.assertEqual(raiser.expr.expr, 'SyntaxError')
+
+ def test_render_w_type_builtin_exception(self):
+ from DocumentTemplate.DT_Util import TemplateDict
+ raiser = self._makeOne(type='SyntaxError')
+ self.assertRaises(SyntaxError, raiser.render, TemplateDict())
+
+ def test_render_w_type_zExceptions_exception(self):
+ from DocumentTemplate.DT_Util import TemplateDict
+ from zExceptions import Redirect
+ raiser = self._makeOne(type='Redirect')
+ self.assertRaises(Redirect, raiser.render, TemplateDict())
+
+ def test_render_w_type_nonesuch(self):
+ from DocumentTemplate.DT_Util import TemplateDict
+ raiser = self._makeOne(type='NonesuchError')
+ self.assertRaises(RuntimeError, raiser.render, TemplateDict())
+
+ def test_render_w_expr_builtin_exception(self):
+ from DocumentTemplate.DT_Util import TemplateDict
+ raiser = self._makeOne(expr='SyntaxError')
+ self.assertRaises(SyntaxError, raiser.render, TemplateDict())
+
+ def test_render_w_expr_zExceptions_exception(self):
+ from DocumentTemplate.DT_Util import TemplateDict
+ from zExceptions import Redirect
+ raiser = self._makeOne(expr='Redirect')
+ self.assertRaises(Redirect, raiser.render, TemplateDict())
+
+ def test_render_w_expr_nonesuch(self):
+ from DocumentTemplate.DT_Raise import InvalidErrorTypeExpression
+ from DocumentTemplate.DT_Util import TemplateDict
+ raiser = self._makeOne(expr='NonesuchError')
+ self.assertRaises(InvalidErrorTypeExpression,
+ raiser.render, TemplateDict())
+
+class DummySection:
+ blocks = ['dummy']
+
+def test_suite():
+ return unittest.TestSuite((
+ unittest.makeSuite(Test_Raise),
+ ))
More information about the Checkins
mailing list