|
1 | 1 | from test.support import run_unittest |
| 2 | +from test.script_helper import assert_python_failure, temp_dir |
2 | 3 | import unittest |
3 | 4 | import sys |
4 | 5 | import subprocess |
| 6 | +import tempfile |
5 | 7 | import cgitb |
6 | 8 |
|
7 | 9 | class TestCgitb(unittest.TestCase): |
@@ -36,16 +38,31 @@ def test_text(self): |
36 | 38 | self.assertIn("ValueError", text) |
37 | 39 | self.assertIn("Hello World", text) |
38 | 40 |
|
39 | | - def test_hook(self): |
40 | | - proc = subprocess.Popen([sys.executable, '-c', |
41 | | - ('import cgitb;' |
42 | | - 'cgitb.enable();' |
43 | | - 'raise ValueError("Hello World")')], |
44 | | - stdout=subprocess.PIPE) |
45 | | - out = proc.stdout.read().decode(sys.getfilesystemencoding()) |
46 | | - self.addCleanup(proc.stdout.close) |
| 41 | + def test_syshook_no_logdir_default_format(self): |
| 42 | + with temp_dir() as tracedir: |
| 43 | + rc, out, err = assert_python_failure( |
| 44 | + '-c', |
| 45 | + ('import cgitb; cgitb.enable(logdir="%s"); ' |
| 46 | + 'raise ValueError("Hello World")') % tracedir) |
| 47 | + out = out.decode(sys.getfilesystemencoding()) |
47 | 48 | self.assertIn("ValueError", out) |
48 | 49 | self.assertIn("Hello World", out) |
| 50 | + # By default we emit HTML markup. |
| 51 | + self.assertIn('<p>', out) |
| 52 | + self.assertIn('</p>', out) |
| 53 | + |
| 54 | + def test_syshook_no_logdir_text_format(self): |
| 55 | + # Issue 12890: we were emitting the <p> tag in text mode. |
| 56 | + with temp_dir() as tracedir: |
| 57 | + rc, out, err = assert_python_failure( |
| 58 | + '-c', |
| 59 | + ('import cgitb; cgitb.enable(format="text", logdir="%s"); ' |
| 60 | + 'raise ValueError("Hello World")') % tracedir) |
| 61 | + out = out.decode(sys.getfilesystemencoding()) |
| 62 | + self.assertIn("ValueError", out) |
| 63 | + self.assertIn("Hello World", out) |
| 64 | + self.assertNotIn('<p>', out) |
| 65 | + self.assertNotIn('</p>', out) |
49 | 66 |
|
50 | 67 |
|
51 | 68 | def test_main(): |
|
0 commit comments