Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v8plus / lib / python2.4 / test / test_atexit.py
CommitLineData
920dae64
AT
1import sys
2import unittest
3import StringIO
4import atexit
5from test import test_support
6
7class TestCase(unittest.TestCase):
8 def test_args(self):
9 # be sure args are handled properly
10 s = StringIO.StringIO()
11 sys.stdout = sys.stderr = s
12 save_handlers = atexit._exithandlers
13 atexit._exithandlers = []
14 try:
15 atexit.register(self.h1)
16 atexit.register(self.h4)
17 atexit.register(self.h4, 4, kw="abc")
18 atexit._run_exitfuncs()
19 finally:
20 sys.stdout = sys.__stdout__
21 sys.stderr = sys.__stderr__
22 atexit._exithandlers = save_handlers
23 self.assertEqual(s.getvalue(), "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n")
24
25 def test_order(self):
26 # be sure handlers are executed in reverse order
27 s = StringIO.StringIO()
28 sys.stdout = sys.stderr = s
29 save_handlers = atexit._exithandlers
30 atexit._exithandlers = []
31 try:
32 atexit.register(self.h1)
33 atexit.register(self.h2)
34 atexit.register(self.h3)
35 atexit._run_exitfuncs()
36 finally:
37 sys.stdout = sys.__stdout__
38 sys.stderr = sys.__stderr__
39 atexit._exithandlers = save_handlers
40 self.assertEqual(s.getvalue(), "h3\nh2\nh1\n")
41
42 def test_sys_override(self):
43 # be sure a preset sys.exitfunc is handled properly
44 s = StringIO.StringIO()
45 sys.stdout = sys.stderr = s
46 save_handlers = atexit._exithandlers
47 atexit._exithandlers = []
48 exfunc = sys.exitfunc
49 sys.exitfunc = self.h1
50 reload(atexit)
51 try:
52 atexit.register(self.h2)
53 atexit._run_exitfuncs()
54 finally:
55 sys.stdout = sys.__stdout__
56 sys.stderr = sys.__stderr__
57 atexit._exithandlers = save_handlers
58 sys.exitfunc = exfunc
59 self.assertEqual(s.getvalue(), "h2\nh1\n")
60
61 def test_raise(self):
62 # be sure raises are handled properly
63 s = StringIO.StringIO()
64 sys.stdout = sys.stderr = s
65 save_handlers = atexit._exithandlers
66 atexit._exithandlers = []
67 try:
68 atexit.register(self.raise1)
69 atexit.register(self.raise2)
70 self.assertRaises(TypeError, atexit._run_exitfuncs)
71 finally:
72 sys.stdout = sys.__stdout__
73 sys.stderr = sys.__stderr__
74 atexit._exithandlers = save_handlers
75
76 ### helpers
77 def h1(self):
78 print "h1"
79
80 def h2(self):
81 print "h2"
82
83 def h3(self):
84 print "h3"
85
86 def h4(self, *args, **kwargs):
87 print "h4", args, kwargs
88
89 def raise1(self):
90 raise TypeError
91
92 def raise2(self):
93 raise SystemError
94
95def test_main():
96 test_support.run_unittest(TestCase)
97
98
99if __name__ == "__main__":
100 test_main()