Home | History | Annotate | Download | only in test
      1 from test.support import temp_dir
      2 from test.support.script_helper import assert_python_failure
      3 import unittest
      4 import sys
      5 import cgitb
      6 
      7 class TestCgitb(unittest.TestCase):
      8 
      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))
     15 
     16     def test_blanks(self):
     17         self.assertEqual(cgitb.small(""), "")
     18         self.assertEqual(cgitb.strong(""), "")
     19         self.assertEqual(cgitb.grey(""), "")
     20 
     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)
     38 
     39     def test_syshook_no_logdir_default_format(self):
     40         with temp_dir() as tracedir:
     41             rc, out, err = assert_python_failure(
     42                   '-c',
     43                   ('import cgitb; cgitb.enable(logdir=%s); '
     44                    'raise ValueError("Hello World")') % repr(tracedir))
     45         out = out.decode(sys.getfilesystemencoding())
     46         self.assertIn("ValueError", out)
     47         self.assertIn("Hello World", out)
     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',
     57                   ('import cgitb; cgitb.enable(format="text", logdir=%s); '
     58                    'raise ValueError("Hello World")') % repr(tracedir))
     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)
     64 
     65 
     66 if __name__ == "__main__":
     67     unittest.main()
     68