Code

Ticket #11461: 11461.diff

File 11461.diff, 5.2 KB (added by kmtracey, 4 years ago)
Line 
1Index: django/template/__init__.py
2===================================================================
3--- django/template/__init__.py (revision 12623)
4+++ django/template/__init__.py (working copy)
5@@ -104,20 +104,7 @@
6 invalid_var_format_string = None
7
8 class TemplateSyntaxError(Exception):
9-    def __str__(self):
10-        try:
11-            import cStringIO as StringIO
12-        except ImportError:
13-            import StringIO
14-        output = StringIO.StringIO()
15-        output.write(Exception.__str__(self))
16-        # Check if we wrapped an exception and print that too.
17-        if hasattr(self, 'exc_info'):
18-            import traceback
19-            output.write('\n\nOriginal ')
20-            e = self.exc_info
21-            traceback.print_exception(e[0], e[1], e[2], 500, output)
22-        return output.getvalue()
23+    pass
24
25 class TemplateDoesNotExist(Exception):
26     pass
27Index: django/template/debug.py
28===================================================================
29--- django/template/debug.py    (revision 12623)
30+++ django/template/debug.py    (working copy)
31@@ -79,7 +79,7 @@
32             wrapped = TemplateSyntaxError(u'Caught an exception while rendering: %s' % force_unicode(e, errors='replace'))
33             wrapped.source = node.source
34             wrapped.exc_info = exc_info()
35-            raise wrapped
36+            raise wrapped, None, wrapped.exc_info[2]
37         return result
38
39 class DebugVariableNode(VariableNode):
40Index: tests/regressiontests/debug/views.py
41===================================================================
42--- tests/regressiontests/debug/views.py        (revision 12623)
43+++ tests/regressiontests/debug/views.py        (working copy)
44@@ -1,3 +1,5 @@
45+from django.shortcuts import render_to_response
46+
47 from regressiontests.debug import BrokenException, except_args
48
49 def view_exception(request, n):
50@@ -3,2 +5,5 @@
51     raise BrokenException(except_args[int(n)])
52
53+def template_exception(request, n):
54+    return render_to_response('debug/template_exception.html',
55+        {'arg': except_args[int(n)]})
56Index: tests/regressiontests/debug/tests.py
57===================================================================
58--- tests/regressiontests/debug/tests.py        (revision 12623)
59+++ tests/regressiontests/debug/tests.py        (working copy)
60@@ -1,6 +1,9 @@
61+import inspect
62+
63 from django.test import TestCase
64 from django.conf import settings
65 from django.core.urlresolvers import reverse
66+from django.template import TemplateSyntaxError
67
68 from regressiontests.debug import BrokenException, except_args
69
70@@ -10,12 +13,24 @@
71     def setUp(self):
72         self.old_debug = settings.DEBUG
73         settings.DEBUG = True
74+        self.old_template_debug = settings.TEMPLATE_DEBUG
75+        settings.TEMPLATE_DEBUG = True
76
77     def tearDown(self):
78         settings.DEBUG = self.old_debug
79+        settings.TEMPLATE_DEBUG = self.old_template_debug
80
81     def test_view_exceptions(self):
82         for n in range(len(except_args)):
83             self.assertRaises(BrokenException, self.client.get,
84                 reverse('view_exception', args=(n,)))
85
86+    def test_template_exceptions(self):
87+        for n in range(len(except_args)):
88+            try:
89+                self.client.get(reverse('template_exception', args=(n,)))
90+            except TemplateSyntaxError, e:
91+                raising_loc = inspect.trace()[-1][-2][0].strip()
92+                self.failIf(raising_loc.find('raise BrokenException') == -1,
93+                    "Failed to find 'raise BrokenException' in last frame of traceback, instead found: %s" % raising_loc)
94+
95Index: tests/regressiontests/debug/templatetags/debugtags.py
96===================================================================
97--- tests/regressiontests/debug/templatetags/debugtags.py       (revision 0)
98+++ tests/regressiontests/debug/templatetags/debugtags.py       (revision 0)
99@@ -0,0 +1,10 @@
100+from django import template
101+
102+from regressiontests.debug import BrokenException
103+
104+register = template.Library()
105+
106+@register.simple_tag
107+def go_boom(arg):
108+    raise BrokenException(arg)
109+
110
111Property changes on: tests\regressiontests\debug\templatetags\debugtags.py
112___________________________________________________________________
113Added: svn:eol-style
114   + native
115
116Index: tests/regressiontests/debug/urls.py
117===================================================================
118--- tests/regressiontests/debug/urls.py (revision 12623)
119+++ tests/regressiontests/debug/urls.py (working copy)
120@@ -2,4 +2,5 @@
121
122 urlpatterns = patterns('regressiontests.debug.views',
123     url(r'view_exception/(?P<n>\d+)/$', 'view_exception', name='view_exception'),
124+    url(r'template_exception/(?P<n>\d+)/$', 'template_exception', name='template_exception'),
125 )
126Index: tests/regressiontests/debug/templates/debug/template_exception.html
127===================================================================
128--- tests/regressiontests/debug/templates/debug/template_exception.html (revision 0)
129+++ tests/regressiontests/debug/templates/debug/template_exception.html (revision 0)
130@@ -0,0 +1,2 @@
131+{% load debugtags %}
132+{% go_boom arg %}
133Index: tests/regressiontests/debug/templates/__init__.py
134===================================================================
135
136Property changes on: tests\regressiontests\debug\templates\__init__.py
137___________________________________________________________________
138Added: svn:eol-style
139   + native
140