diff -r ffa851df0825 -r 2fb8b9db1c86 symbian-qemu-0.9.1-12/python-2.6.1/Lib/test/test_atexit.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/symbian-qemu-0.9.1-12/python-2.6.1/Lib/test/test_atexit.py Fri Jul 31 15:01:17 2009 +0100 @@ -0,0 +1,81 @@ +import sys +import unittest +import StringIO +import atexit +from test import test_support + +class TestCase(unittest.TestCase): + def setUp(self): + s = StringIO.StringIO() + self.save_stdout = sys.stdout + self.save_stderr = sys.stderr + sys.stdout = sys.stderr = self.subst_io = s + self.save_handlers = atexit._exithandlers + atexit._exithandlers = [] + + def tearDown(self): + sys.stdout = self.save_stdout + sys.stderr = self.save_stderr + atexit._exithandlers = self.save_handlers + + def test_args(self): + atexit.register(self.h1) + atexit.register(self.h4) + atexit.register(self.h4, 4, kw="abc") + atexit._run_exitfuncs() + self.assertEqual(self.subst_io.getvalue(), + "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n") + + def test_badargs(self): + atexit.register(lambda: 1, 0, 0, (x for x in (1,2)), 0, 0) + self.assertRaises(TypeError, atexit._run_exitfuncs) + + def test_order(self): + atexit.register(self.h1) + atexit.register(self.h2) + atexit.register(self.h3) + atexit._run_exitfuncs() + self.assertEqual(self.subst_io.getvalue(), "h3\nh2\nh1\n") + + def test_sys_override(self): + # be sure a preset sys.exitfunc is handled properly + exfunc = sys.exitfunc + sys.exitfunc = self.h1 + reload(atexit) + try: + atexit.register(self.h2) + atexit._run_exitfuncs() + finally: + sys.exitfunc = exfunc + self.assertEqual(self.subst_io.getvalue(), "h2\nh1\n") + + def test_raise(self): + atexit.register(self.raise1) + atexit.register(self.raise2) + self.assertRaises(TypeError, atexit._run_exitfuncs) + + ### helpers + def h1(self): + print "h1" + + def h2(self): + print "h2" + + def h3(self): + print "h3" + + def h4(self, *args, **kwargs): + print "h4", args, kwargs + + def raise1(self): + raise TypeError + + def raise2(self): + raise SystemError + +def test_main(): + test_support.run_unittest(TestCase) + + +if __name__ == "__main__": + test_main()