home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / test_atexit.py < prev    next >
Text File  |  2003-12-30  |  1KB  |  67 lines

  1. # Test the atexit module.
  2. from test.test_support import TESTFN, vereq, is_jython
  3. import atexit
  4. from os import popen, unlink
  5. import sys
  6.  
  7. executable = sys.executable
  8. if is_jython:
  9.     executable = "jython"
  10.  
  11. input = """\
  12. import atexit
  13.  
  14. def handler1():
  15.     print "handler1"
  16.  
  17. def handler2(*args, **kargs):
  18.     print "handler2", args, kargs
  19.  
  20. atexit.register(handler1)
  21. atexit.register(handler2)
  22. atexit.register(handler2, 7, kw="abc")
  23. """
  24.  
  25. fname = TESTFN + ".py"
  26. f = file(fname, "w")
  27. f.write(input)
  28. f.close()
  29.  
  30. p = popen('"%s" %s' % (executable, fname))
  31. output = p.read()
  32. p.close()
  33. vereq(output, """\
  34. handler2 (7,) {'kw': 'abc'}
  35. handler2 () {}
  36. handler1
  37. """)
  38.  
  39. input = """\
  40. def direct():
  41.     print "direct exit"
  42.  
  43. import sys
  44. sys.exitfunc = direct
  45.  
  46. # Make sure atexit doesn't drop
  47. def indirect():
  48.     print "indirect exit"
  49.  
  50. import atexit
  51. atexit.register(indirect)
  52. """
  53.  
  54. f = file(fname, "w")
  55. f.write(input)
  56. f.close()
  57.  
  58. p = popen('"%s" %s' % (executable, fname))
  59. output = p.read()
  60. p.close()
  61. vereq(output, """\
  62. indirect exit
  63. direct exit
  64. """)
  65.  
  66. unlink(fname)
  67.