6 from test
import test_support
8 class TestCase(unittest
.TestCase
):
10 s
= StringIO
.StringIO()
11 self
.save_stdout
= sys
.stdout
12 self
.save_stderr
= sys
.stderr
13 sys
.stdout
= sys
.stderr
= self
.subst_io
= s
14 self
.save_handlers
= atexit
._exithandlers
15 atexit
._exithandlers
= []
18 sys
.stdout
= self
.save_stdout
19 sys
.stderr
= self
.save_stderr
20 atexit
._exithandlers
= self
.save_handlers
23 atexit
.register(self
.h1
)
24 atexit
.register(self
.h4
)
25 atexit
.register(self
.h4
, 4, kw
="abc")
26 atexit
._run
_exitfuncs
()
27 self
.assertEqual(self
.subst_io
.getvalue(),
28 "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n")
30 def test_badargs(self
):
31 atexit
.register(lambda: 1, 0, 0, (x
for x
in (1,2)), 0, 0)
32 self
.assertRaises(TypeError, atexit
._run
_exitfuncs
)
35 atexit
.register(self
.h1
)
36 atexit
.register(self
.h2
)
37 atexit
.register(self
.h3
)
38 atexit
._run
_exitfuncs
()
39 self
.assertEqual(self
.subst_io
.getvalue(), "h3\nh2\nh1\n")
41 def test_sys_override(self
):
42 # be sure a preset sys.exitfunc is handled properly
44 sys
.exitfunc
= self
.h1
47 atexit
.register(self
.h2
)
48 atexit
._run
_exitfuncs
()
51 self
.assertEqual(self
.subst_io
.getvalue(), "h2\nh1\n")
54 atexit
.register(self
.raise1
)
55 atexit
.register(self
.raise2
)
56 self
.assertRaises(TypeError, atexit
._run
_exitfuncs
)
68 def h4(self
, *args
, **kwargs
):
69 print "h4", args
, kwargs
78 test_support
.run_unittest(TestCase
)
81 if __name__
== "__main__":