[Checkins] SVN: zope.exceptions/trunk/ Fix HTML-escaping bug in format_exception(as_html=True).
Marius Gedminas
cvs-admin at zope.org
Mon Dec 10 16:58:12 UTC 2012
Log message for revision 128550:
Fix HTML-escaping bug in format_exception(as_html=True).
Changed:
U zope.exceptions/trunk/CHANGES.txt
U zope.exceptions/trunk/src/zope/exceptions/exceptionformatter.py
U zope.exceptions/trunk/src/zope/exceptions/tests/test_exceptionformatter.py
-=-
Modified: zope.exceptions/trunk/CHANGES.txt
===================================================================
--- zope.exceptions/trunk/CHANGES.txt 2012-12-10 16:28:48 UTC (rev 128549)
+++ zope.exceptions/trunk/CHANGES.txt 2012-12-10 16:58:12 UTC (rev 128550)
@@ -4,13 +4,16 @@
4.0.3 (unreleased)
------------------
-- TBD
+- Fixed format_exception(..., as_html=True) not to HTML-escape the '<br />'
+ it adds to the exception value.
+
4.0.2 (2012-11-21)
------------------
- Test Python 3.3 support under tox.
+
4.0.1 (2012-08-20)
------------------
Modified: zope.exceptions/trunk/src/zope/exceptions/exceptionformatter.py
===================================================================
--- zope.exceptions/trunk/src/zope/exceptions/exceptionformatter.py 2012-12-10 16:28:48 UTC (rev 128549)
+++ zope.exceptions/trunk/src/zope/exceptions/exceptionformatter.py 2012-12-10 16:58:12 UTC (rev 128550)
@@ -161,7 +161,7 @@
def formatExceptionOnly(self, etype, value):
result = ''.join(traceback.format_exception_only(etype, value))
- return result.replace('\n', self.line_sep)
+ return result
def formatLastLine(self, exc_line):
return self.escape(exc_line)
@@ -237,7 +237,8 @@
return '<li>%s</li>' % line
def formatLastLine(self, exc_line):
- return '</ul><p>%s</p>' % self.escape(exc_line)
+ line = '</ul><p>%s</p>' % self.escape(exc_line)
+ return line.replace('\n', self.line_sep)
def format_exception(t, v, tb, limit=None, as_html=False,
Modified: zope.exceptions/trunk/src/zope/exceptions/tests/test_exceptionformatter.py
===================================================================
--- zope.exceptions/trunk/src/zope/exceptions/tests/test_exceptionformatter.py 2012-12-10 16:28:48 UTC (rev 128549)
+++ zope.exceptions/trunk/src/zope/exceptions/tests/test_exceptionformatter.py 2012-12-10 16:58:12 UTC (rev 128550)
@@ -14,6 +14,8 @@
"""ExceptionFormatter tests.
"""
import unittest
+import doctest
+import sys
class TextExceptionFormatterTests(unittest.TestCase):
@@ -784,11 +786,29 @@
delattr(self.module, key)
+def doctest_format_exception_as_html():
+ """Test for format_exception (as_html=True)
+
+ >>> from zope.exceptions.exceptionformatter import format_exception
+ >>> try:
+ ... exec 'foo = '
+ ... except:
+ ... print ''.join(format_exception(*sys.exc_info(), as_html=True)),
+ <p>Traceback (most recent call last):</p>
+ <ul>
+ <li> Module zope.exceptions.tests.test_exceptionformatter, line 2, in <module><br />
+ exec 'foo = '</li>
+ </ul><p> File "<string>", line 1<br />
+ foo =<br />
+ ^<br />
+ SyntaxError: invalid syntax<br />
+ </p>
+
+ """
+
+
def test_suite():
- return unittest.TestSuite((
- unittest.makeSuite(TextExceptionFormatterTests),
- unittest.makeSuite(HTMLExceptionFormatterTests),
- unittest.makeSuite(Test_format_exception),
- unittest.makeSuite(Test_print_exception),
- unittest.makeSuite(Test_extract_stack),
- ))
+ return unittest.TestSuite([
+ unittest.defaultTestLoader.loadTestsFromName(__name__),
+ doctest.DocTestSuite(optionflags=doctest.NORMALIZE_WHITESPACE),
+ ])
More information about the checkins
mailing list