mirror of https://github.com/python/cpython
merge #12890: don't emit <p> tags in text mode when logdir specified.
Patch by Jeff McNeil.
This commit is contained in:
commit
c4b8e05092
11
Lib/cgitb.py
11
Lib/cgitb.py
|
@ -292,14 +292,19 @@ class Hook:
|
|||
if self.logdir is not None:
|
||||
suffix = ['.txt', '.html'][self.format=="html"]
|
||||
(fd, path) = tempfile.mkstemp(suffix=suffix, dir=self.logdir)
|
||||
|
||||
try:
|
||||
file = os.fdopen(fd, 'w')
|
||||
file.write(doc)
|
||||
file.close()
|
||||
msg = '<p> %s contains the description of this error.' % path
|
||||
msg = '%s contains the description of this error.' % path
|
||||
except:
|
||||
msg = '<p> Tried to save traceback to %s, but failed.' % path
|
||||
self.file.write(msg + '\n')
|
||||
msg = 'Tried to save traceback to %s, but failed.' % path
|
||||
|
||||
if self.format == 'html':
|
||||
self.file.write('<p>%s</p>\n' % msg)
|
||||
else:
|
||||
self.file.write(msg + '\n')
|
||||
try:
|
||||
self.file.flush()
|
||||
except: pass
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
from test.support import run_unittest
|
||||
from test.script_helper import assert_python_failure, temp_dir
|
||||
import unittest
|
||||
import sys
|
||||
import subprocess
|
||||
import tempfile
|
||||
import cgitb
|
||||
|
||||
class TestCgitb(unittest.TestCase):
|
||||
|
@ -36,16 +38,31 @@ class TestCgitb(unittest.TestCase):
|
|||
self.assertIn("ValueError", text)
|
||||
self.assertIn("Hello World", text)
|
||||
|
||||
def test_hook(self):
|
||||
proc = subprocess.Popen([sys.executable, '-c',
|
||||
('import cgitb;'
|
||||
'cgitb.enable();'
|
||||
'raise ValueError("Hello World")')],
|
||||
stdout=subprocess.PIPE)
|
||||
out = proc.stdout.read().decode(sys.getfilesystemencoding())
|
||||
self.addCleanup(proc.stdout.close)
|
||||
def test_syshook_no_logdir_default_format(self):
|
||||
with temp_dir() as tracedir:
|
||||
rc, out, err = assert_python_failure(
|
||||
'-c',
|
||||
('import cgitb; cgitb.enable(logdir="%s"); '
|
||||
'raise ValueError("Hello World")') % tracedir)
|
||||
out = out.decode(sys.getfilesystemencoding())
|
||||
self.assertIn("ValueError", out)
|
||||
self.assertIn("Hello World", out)
|
||||
# By default we emit HTML markup.
|
||||
self.assertIn('<p>', out)
|
||||
self.assertIn('</p>', out)
|
||||
|
||||
def test_syshook_no_logdir_text_format(self):
|
||||
# Issue 12890: we were emitting the <p> tag in text mode.
|
||||
with temp_dir() as tracedir:
|
||||
rc, out, err = assert_python_failure(
|
||||
'-c',
|
||||
('import cgitb; cgitb.enable(format="text", logdir="%s"); '
|
||||
'raise ValueError("Hello World")') % tracedir)
|
||||
out = out.decode(sys.getfilesystemencoding())
|
||||
self.assertIn("ValueError", out)
|
||||
self.assertIn("Hello World", out)
|
||||
self.assertNotIn('<p>', out)
|
||||
self.assertNotIn('</p>', out)
|
||||
|
||||
|
||||
def test_main():
|
||||
|
|
|
@ -769,6 +769,7 @@ Mark Mc Mahon
|
|||
Gordon McMillan
|
||||
Andrew McNamara
|
||||
Caolan McNamara
|
||||
Jeff McNeil
|
||||
Craig McPheeters
|
||||
Lambert Meertens
|
||||
Bill van Melle
|
||||
|
|
Loading…
Reference in New Issue