diff options
author | cinap_lenrek <cinap_lenrek@localhost> | 2011-05-03 11:25:13 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@localhost> | 2011-05-03 11:25:13 +0000 |
commit | 458120dd40db6b4df55a4e96b650e16798ef06a0 (patch) | |
tree | 8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/lib/python/test/test_atexit.py | |
parent | 3a742c699f6806c1145aea5149bf15de15a0afd7 (diff) |
add hg and python
Diffstat (limited to 'sys/lib/python/test/test_atexit.py')
-rw-r--r-- | sys/lib/python/test/test_atexit.py | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/sys/lib/python/test/test_atexit.py b/sys/lib/python/test/test_atexit.py new file mode 100644 index 000000000..684d6079c --- /dev/null +++ b/sys/lib/python/test/test_atexit.py @@ -0,0 +1,100 @@ +import sys +import unittest +import StringIO +import atexit +from test import test_support + +class TestCase(unittest.TestCase): + def test_args(self): + # be sure args are handled properly + s = StringIO.StringIO() + sys.stdout = sys.stderr = s + save_handlers = atexit._exithandlers + atexit._exithandlers = [] + try: + atexit.register(self.h1) + atexit.register(self.h4) + atexit.register(self.h4, 4, kw="abc") + atexit._run_exitfuncs() + finally: + sys.stdout = sys.__stdout__ + sys.stderr = sys.__stderr__ + atexit._exithandlers = save_handlers + self.assertEqual(s.getvalue(), "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n") + + def test_order(self): + # be sure handlers are executed in reverse order + s = StringIO.StringIO() + sys.stdout = sys.stderr = s + save_handlers = atexit._exithandlers + atexit._exithandlers = [] + try: + atexit.register(self.h1) + atexit.register(self.h2) + atexit.register(self.h3) + atexit._run_exitfuncs() + finally: + sys.stdout = sys.__stdout__ + sys.stderr = sys.__stderr__ + atexit._exithandlers = save_handlers + self.assertEqual(s.getvalue(), "h3\nh2\nh1\n") + + def test_sys_override(self): + # be sure a preset sys.exitfunc is handled properly + s = StringIO.StringIO() + sys.stdout = sys.stderr = s + save_handlers = atexit._exithandlers + atexit._exithandlers = [] + exfunc = sys.exitfunc + sys.exitfunc = self.h1 + reload(atexit) + try: + atexit.register(self.h2) + atexit._run_exitfuncs() + finally: + sys.stdout = sys.__stdout__ + sys.stderr = sys.__stderr__ + atexit._exithandlers = save_handlers + sys.exitfunc = exfunc + self.assertEqual(s.getvalue(), "h2\nh1\n") + + def test_raise(self): + # be sure raises are handled properly + s = StringIO.StringIO() + sys.stdout = sys.stderr = s + save_handlers = atexit._exithandlers + atexit._exithandlers = [] + try: + atexit.register(self.raise1) + atexit.register(self.raise2) + self.assertRaises(TypeError, atexit._run_exitfuncs) + finally: + sys.stdout = sys.__stdout__ + sys.stderr = sys.__stderr__ + atexit._exithandlers = save_handlers + + ### 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() |