blob: cd0ab9010e19d4b6d3b58e83df47b2ebf25aecb8 [file] [log] [blame]
R David Murrayc4b8e052012-10-27 14:55:25 -04001from test.script_helper import assert_python_failure, temp_dir
Brian Curtin6a4ffd72011-07-05 19:14:16 -05002import unittest
3import sys
Brian Curtin6a4ffd72011-07-05 19:14:16 -05004import cgitb
5
6class TestCgitb(unittest.TestCase):
Brian Curtin692e26b2011-07-05 19:16:37 -05007
Brian Curtin6a4ffd72011-07-05 19:14:16 -05008 def test_fonts(self):
9 text = "Hello Robbie!"
10 self.assertEqual(cgitb.small(text), "<small>{}</small>".format(text))
11 self.assertEqual(cgitb.strong(text), "<strong>{}</strong>".format(text))
12 self.assertEqual(cgitb.grey(text),
13 '<font color="#909090">{}</font>'.format(text))
Brian Curtin692e26b2011-07-05 19:16:37 -050014
Brian Curtin6a4ffd72011-07-05 19:14:16 -050015 def test_blanks(self):
16 self.assertEqual(cgitb.small(""), "")
17 self.assertEqual(cgitb.strong(""), "")
18 self.assertEqual(cgitb.grey(""), "")
Brian Curtin692e26b2011-07-05 19:16:37 -050019
Brian Curtin6a4ffd72011-07-05 19:14:16 -050020 def test_html(self):
21 try:
22 raise ValueError("Hello World")
23 except ValueError as err:
24 # If the html was templated we could do a bit more here.
25 # At least check that we get details on what we just raised.
26 html = cgitb.html(sys.exc_info())
27 self.assertIn("ValueError", html)
28 self.assertIn(str(err), html)
29
30 def test_text(self):
31 try:
32 raise ValueError("Hello World")
33 except ValueError as err:
34 text = cgitb.text(sys.exc_info())
35 self.assertIn("ValueError", text)
36 self.assertIn("Hello World", text)
Brian Curtin692e26b2011-07-05 19:16:37 -050037
R David Murrayc4b8e052012-10-27 14:55:25 -040038 def test_syshook_no_logdir_default_format(self):
39 with temp_dir() as tracedir:
40 rc, out, err = assert_python_failure(
41 '-c',
R David Murraycc4bacf2012-10-30 20:20:09 -040042 ('import cgitb; cgitb.enable(logdir=%s); '
43 'raise ValueError("Hello World")') % repr(tracedir))
R David Murrayc4b8e052012-10-27 14:55:25 -040044 out = out.decode(sys.getfilesystemencoding())
Brian Curtin6a4ffd72011-07-05 19:14:16 -050045 self.assertIn("ValueError", out)
46 self.assertIn("Hello World", out)
R David Murrayc4b8e052012-10-27 14:55:25 -040047 # By default we emit HTML markup.
48 self.assertIn('<p>', out)
49 self.assertIn('</p>', out)
50
51 def test_syshook_no_logdir_text_format(self):
52 # Issue 12890: we were emitting the <p> tag in text mode.
53 with temp_dir() as tracedir:
54 rc, out, err = assert_python_failure(
55 '-c',
R David Murraycc4bacf2012-10-30 20:20:09 -040056 ('import cgitb; cgitb.enable(format="text", logdir=%s); '
57 'raise ValueError("Hello World")') % repr(tracedir))
R David Murrayc4b8e052012-10-27 14:55:25 -040058 out = out.decode(sys.getfilesystemencoding())
59 self.assertIn("ValueError", out)
60 self.assertIn("Hello World", out)
61 self.assertNotIn('<p>', out)
62 self.assertNotIn('</p>', out)
Brian Curtin6a4ffd72011-07-05 19:14:16 -050063
64
Brian Curtin6a4ffd72011-07-05 19:14:16 -050065if __name__ == "__main__":
Zachary Ware38c707e2015-04-13 15:00:43 -050066 unittest.main()