diff options
| author | Lieuwe <lieuwemo@gmail.com> | 2011-03-18 16:04:51 (GMT) |
|---|---|---|
| committer | Lieuwe <lieuwemo@gmail.com> | 2011-03-18 16:04:51 (GMT) |
| commit | 9c39875ef09d439ef51716dba091188f72977f5e (patch) | |
| tree | fb0fd27a1bcd3e54a1913852c23aa137ee5eb30b /src/python/stdlib/test/test_atexit.py | |
| parent | bc8af4e2101ac93bdc51b59ee64fa43ecb2442f3 (diff) | |
| download | powder-9c39875ef09d439ef51716dba091188f72977f5e.zip powder-9c39875ef09d439ef51716dba091188f72977f5e.tar.gz | |
...
Diffstat (limited to 'src/python/stdlib/test/test_atexit.py')
| -rw-r--r-- | src/python/stdlib/test/test_atexit.py | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/src/python/stdlib/test/test_atexit.py b/src/python/stdlib/test/test_atexit.py new file mode 100644 index 0000000..bf85b75 --- /dev/null +++ b/src/python/stdlib/test/test_atexit.py @@ -0,0 +1,82 @@ +import sys +import unittest +import StringIO +import atexit +from imp import reload +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() |
