The atexit module effectively turned itself off if sys.exitfunc already

existed at the time atexit first got imported.  That's a bug, and this
fixes it.

Also reworked test_atexit.py to test for this too, and to stop using
an "expected output" file, and to test what actually happens at exit
instead of just simulating what it thinks atexit will do at exit.

Bugfix candidate, but it's messy so I'll backport to 2.2 myself.
This commit is contained in:
Tim Peters 2002-07-16 19:30:59 +00:00
parent 32a03967b7
commit 012b69cb30
3 changed files with 53 additions and 24 deletions

View file

@ -29,15 +29,11 @@ def register(func, *targs, **kargs):
_exithandlers.append((func, targs, kargs))
import sys
try:
x = sys.exitfunc
except AttributeError:
sys.exitfunc = _run_exitfuncs
else:
# if x isn't our own exit func executive, assume it's another
# registered exit function - append it to our list...
if x != _run_exitfuncs:
register(x)
if hasattr(sys, "exitfunc"):
# Assume it's another registered exit function - append it to our list
register(sys.exitfunc)
sys.exitfunc = _run_exitfuncs
del sys
if __name__ == "__main__":