Brian Curtin | 6a4ffd7 | 2011-07-05 19:14:16 -0500 | [diff] [blame] | 1 | from test.support import run_unittest |
R David Murray | c4b8e05 | 2012-10-27 14:55:25 -0400 | [diff] [blame] | 2 | from test.script_helper import assert_python_failure, temp_dir |
Brian Curtin | 6a4ffd7 | 2011-07-05 19:14:16 -0500 | [diff] [blame] | 3 | import unittest |
| 4 | import sys |
Brian Curtin | 6a4ffd7 | 2011-07-05 19:14:16 -0500 | [diff] [blame] | 5 | import cgitb |
| 6 | |
| 7 | class TestCgitb(unittest.TestCase): |
Brian Curtin | 692e26b | 2011-07-05 19:16:37 -0500 | [diff] [blame] | 8 | |
Brian Curtin | 6a4ffd7 | 2011-07-05 19:14:16 -0500 | [diff] [blame] | 9 | def test_fonts(self): |
| 10 | text = "Hello Robbie!" |
| 11 | self.assertEqual(cgitb.small(text), "<small>{}</small>".format(text)) |
| 12 | self.assertEqual(cgitb.strong(text), "<strong>{}</strong>".format(text)) |
| 13 | self.assertEqual(cgitb.grey(text), |
| 14 | '<font color="#909090">{}</font>'.format(text)) |
Brian Curtin | 692e26b | 2011-07-05 19:16:37 -0500 | [diff] [blame] | 15 | |
Brian Curtin | 6a4ffd7 | 2011-07-05 19:14:16 -0500 | [diff] [blame] | 16 | def test_blanks(self): |
| 17 | self.assertEqual(cgitb.small(""), "") |
| 18 | self.assertEqual(cgitb.strong(""), "") |
| 19 | self.assertEqual(cgitb.grey(""), "") |
Brian Curtin | 692e26b | 2011-07-05 19:16:37 -0500 | [diff] [blame] | 20 | |
Brian Curtin | 6a4ffd7 | 2011-07-05 19:14:16 -0500 | [diff] [blame] | 21 | def test_html(self): |
| 22 | try: |
| 23 | raise ValueError("Hello World") |
| 24 | except ValueError as err: |
| 25 | # If the html was templated we could do a bit more here. |
| 26 | # At least check that we get details on what we just raised. |
| 27 | html = cgitb.html(sys.exc_info()) |
| 28 | self.assertIn("ValueError", html) |
| 29 | self.assertIn(str(err), html) |
| 30 | |
| 31 | def test_text(self): |
| 32 | try: |
| 33 | raise ValueError("Hello World") |
| 34 | except ValueError as err: |
| 35 | text = cgitb.text(sys.exc_info()) |
| 36 | self.assertIn("ValueError", text) |
| 37 | self.assertIn("Hello World", text) |
Brian Curtin | 692e26b | 2011-07-05 19:16:37 -0500 | [diff] [blame] | 38 | |
R David Murray | c4b8e05 | 2012-10-27 14:55:25 -0400 | [diff] [blame] | 39 | def test_syshook_no_logdir_default_format(self): |
| 40 | with temp_dir() as tracedir: |
| 41 | rc, out, err = assert_python_failure( |
| 42 | '-c', |
R David Murray | cc4bacf | 2012-10-30 20:20:09 -0400 | [diff] [blame] | 43 | ('import cgitb; cgitb.enable(logdir=%s); ' |
| 44 | 'raise ValueError("Hello World")') % repr(tracedir)) |
R David Murray | c4b8e05 | 2012-10-27 14:55:25 -0400 | [diff] [blame] | 45 | out = out.decode(sys.getfilesystemencoding()) |
Brian Curtin | 6a4ffd7 | 2011-07-05 19:14:16 -0500 | [diff] [blame] | 46 | self.assertIn("ValueError", out) |
| 47 | self.assertIn("Hello World", out) |
R David Murray | c4b8e05 | 2012-10-27 14:55:25 -0400 | [diff] [blame] | 48 | # By default we emit HTML markup. |
| 49 | self.assertIn('<p>', out) |
| 50 | self.assertIn('</p>', out) |
| 51 | |
| 52 | def test_syshook_no_logdir_text_format(self): |
| 53 | # Issue 12890: we were emitting the <p> tag in text mode. |
| 54 | with temp_dir() as tracedir: |
| 55 | rc, out, err = assert_python_failure( |
| 56 | '-c', |
R David Murray | cc4bacf | 2012-10-30 20:20:09 -0400 | [diff] [blame] | 57 | ('import cgitb; cgitb.enable(format="text", logdir=%s); ' |
| 58 | 'raise ValueError("Hello World")') % repr(tracedir)) |
R David Murray | c4b8e05 | 2012-10-27 14:55:25 -0400 | [diff] [blame] | 59 | out = out.decode(sys.getfilesystemencoding()) |
| 60 | self.assertIn("ValueError", out) |
| 61 | self.assertIn("Hello World", out) |
| 62 | self.assertNotIn('<p>', out) |
| 63 | self.assertNotIn('</p>', out) |
Brian Curtin | 6a4ffd7 | 2011-07-05 19:14:16 -0500 | [diff] [blame] | 64 | |
| 65 | |
| 66 | def test_main(): |
| 67 | run_unittest(TestCgitb) |
Brian Curtin | 692e26b | 2011-07-05 19:16:37 -0500 | [diff] [blame] | 68 | |
Brian Curtin | 6a4ffd7 | 2011-07-05 19:14:16 -0500 | [diff] [blame] | 69 | if __name__ == "__main__": |
| 70 | test_main() |