home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 June / maximum-cd-2011-06.iso / DiscContents / LibO_3.3.1_Win_x86_install_multi.exe / libreoffice1.cab / test_atexit.py < prev    next >
Encoding:
Python Source  |  2011-02-15  |  2.1 KB  |  82 lines

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