]> git.proxmox.com Git - mirror_edk2.git/blame - AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_atexit.py
EmbeddedPkg: Extend NvVarStoreFormattedLib LIBRARY_CLASS
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Lib / test / test_atexit.py
CommitLineData
4710c53d 1import sys\r
2import unittest\r
3import StringIO\r
4import atexit\r
5from imp import reload\r
6from test import test_support\r
7\r
8class TestCase(unittest.TestCase):\r
9 def setUp(self):\r
10 s = StringIO.StringIO()\r
11 self.save_stdout = sys.stdout\r
12 self.save_stderr = sys.stderr\r
13 sys.stdout = sys.stderr = self.subst_io = s\r
14 self.save_handlers = atexit._exithandlers\r
15 atexit._exithandlers = []\r
16\r
17 def tearDown(self):\r
18 sys.stdout = self.save_stdout\r
19 sys.stderr = self.save_stderr\r
20 atexit._exithandlers = self.save_handlers\r
21\r
22 def test_args(self):\r
23 atexit.register(self.h1)\r
24 atexit.register(self.h4)\r
25 atexit.register(self.h4, 4, kw="abc")\r
26 atexit._run_exitfuncs()\r
27 self.assertEqual(self.subst_io.getvalue(),\r
28 "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n")\r
29\r
30 def test_badargs(self):\r
31 atexit.register(lambda: 1, 0, 0, (x for x in (1,2)), 0, 0)\r
32 self.assertRaises(TypeError, atexit._run_exitfuncs)\r
33\r
34 def test_order(self):\r
35 atexit.register(self.h1)\r
36 atexit.register(self.h2)\r
37 atexit.register(self.h3)\r
38 atexit._run_exitfuncs()\r
39 self.assertEqual(self.subst_io.getvalue(), "h3\nh2\nh1\n")\r
40\r
41 def test_sys_override(self):\r
42 # be sure a preset sys.exitfunc is handled properly\r
43 exfunc = sys.exitfunc\r
44 sys.exitfunc = self.h1\r
45 reload(atexit)\r
46 try:\r
47 atexit.register(self.h2)\r
48 atexit._run_exitfuncs()\r
49 finally:\r
50 sys.exitfunc = exfunc\r
51 self.assertEqual(self.subst_io.getvalue(), "h2\nh1\n")\r
52\r
53 def test_raise(self):\r
54 atexit.register(self.raise1)\r
55 atexit.register(self.raise2)\r
56 self.assertRaises(TypeError, atexit._run_exitfuncs)\r
57\r
58 ### helpers\r
59 def h1(self):\r
60 print "h1"\r
61\r
62 def h2(self):\r
63 print "h2"\r
64\r
65 def h3(self):\r
66 print "h3"\r
67\r
68 def h4(self, *args, **kwargs):\r
69 print "h4", args, kwargs\r
70\r
71 def raise1(self):\r
72 raise TypeError\r
73\r
74 def raise2(self):\r
75 raise SystemError\r
76\r
77def test_main():\r
78 test_support.run_unittest(TestCase)\r
79\r
80\r
81if __name__ == "__main__":\r
82 test_main()\r