# HG changeset patch # User Bryan O'Sullivan # Date 1156916043 25200 # Node ID 12df31afb4e14c948ed54ebf6258a1c6a35c6e48 # Parent ddf533d41c09831127c28a23db2d1119779dc0d0 Propagate exceptions more correctly. diff -r ddf533d41c09 -r 12df31afb4e1 en/examples/run-example --- a/en/examples/run-example Tue Aug 29 22:25:18 2006 -0700 +++ b/en/examples/run-example Tue Aug 29 22:34:03 2006 -0700 @@ -99,7 +99,6 @@ os._exit(0) self.cfp = os.fdopen(fd, 'w+') try: - clean_exit = True try: # setup env and prompt self.sendreceive('source %s\n\n' % rcfile) @@ -133,10 +132,11 @@ self.status('\n') open(self.name + '.run', 'w') except: - clean_exit = False + print >> sys.stderr, '(killed)' + os.kill(pid, signal.SIGKILL) + pid, rc = os.wait() raise - finally: - if clean_exit: + else: try: output = self.sendreceive('exit\n') if ofp: @@ -144,17 +144,16 @@ self.cfp.close() except IOError: pass - os.kill(pid, signal.SIGTERM) - time.sleep(0.1) - os.kill(pid, signal.SIGKILL) - pid, rc = os.wait() - if rc: - if os.WIFEXITED(rc): - print >> sys.stderr, '(exit %s)' % os.WEXITSTATUS(rc) - elif os.WIFSIGNALED(rc): - print >> sys.stderr, '(signal %s)' % os.WTERMSIG(rc) + os.kill(pid, signal.SIGTERM) + pid, rc = os.wait() + if rc: + if os.WIFEXITED(rc): + print >> sys.stderr, '(exit %s)' % os.WEXITSTATUS(rc) + elif os.WIFSIGNALED(rc): + print >> sys.stderr, '(signal %s)' % os.WTERMSIG(rc) + return rc + finally: shutil.rmtree(tmpdir) - return rc def main(path='.'): args = sys.argv[1:]