Brian Curtin | 6a4ffd7 | 2011-07-05 19:14:16 -0500 | [diff] [blame] | 1 | from test.support import run_unittest |
| 2 | import unittest |
| 3 | import sys |
| 4 | import subprocess |
| 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 | |
Brian Curtin | 6a4ffd7 | 2011-07-05 19:14:16 -0500 | [diff] [blame] | 39 | def test_hook(self): |
| 40 | proc = subprocess.Popen([sys.executable, '-c', |
Brian Curtin | 692e26b | 2011-07-05 19:16:37 -0500 | [diff] [blame^] | 41 | ('import cgitb;' |
| 42 | 'cgitb.enable();' |
Brian Curtin | 6a4ffd7 | 2011-07-05 19:14:16 -0500 | [diff] [blame] | 43 | 'raise ValueError("Hello World")')], |
| 44 | stdout=subprocess.PIPE) |
| 45 | out = proc.stdout.read().decode(sys.getfilesystemencoding()) |
| 46 | self.addCleanup(proc.stdout.close) |
| 47 | self.assertIn("ValueError", out) |
| 48 | self.assertIn("Hello World", out) |
| 49 | |
| 50 | |
| 51 | def test_main(): |
| 52 | run_unittest(TestCgitb) |
Brian Curtin | 692e26b | 2011-07-05 19:16:37 -0500 | [diff] [blame^] | 53 | |
Brian Curtin | 6a4ffd7 | 2011-07-05 19:14:16 -0500 | [diff] [blame] | 54 | if __name__ == "__main__": |
| 55 | test_main() |