Sat, 26 Jan 2013 12:41:53 +0100
Fixed severe bugs in the coverage integration.
DebugClients/Python/DebugClientBase.py | file | annotate | diff | comparison | revisions | |
DebugClients/Python3/DebugClientBase.py | file | annotate | diff | comparison | revisions |
--- a/DebugClients/Python/DebugClientBase.py Fri Jan 25 18:20:16 2013 +0100 +++ b/DebugClients/Python/DebugClientBase.py Sat Jan 26 12:41:53 2013 +0100 @@ -16,6 +16,7 @@ import time import imp import re +import atexit import DebugProtocol @@ -585,7 +586,10 @@ sys.modules['__main__'] = self.debugMod self.debugMod.__dict__['__file__'] = sys.argv[0] self.cover.start() - execfile(sys.argv[0], self.debugMod.__dict__) + try: + execfile(sys.argv[0], self.debugMod.__dict__) + except SystemExit: + atexit._run_exitfuncs() self.cover.stop() self.cover.save() self.writestream.flush()
--- a/DebugClients/Python3/DebugClientBase.py Fri Jan 25 18:20:16 2013 +0100 +++ b/DebugClients/Python3/DebugClientBase.py Sat Jan 26 12:41:53 2013 +0100 @@ -16,6 +16,7 @@ import time import imp import re +import atexit import DebugProtocol @@ -608,12 +609,23 @@ self.cover.erase() sys.modules['__main__'] = self.debugMod self.debugMod.__dict__['__file__'] = sys.argv[0] - self.cover.start() - exec(open(sys.argv[0], encoding=self.__coding).read(), - self.debugMod.__dict__) - self.cover.stop() - self.cover.save() - self.writestream.flush() + fp = open(sys.argv[0], encoding=self.__coding) + try: + script = fp.read() + finally: + fp.close() + if script: + if not script.endswith('\n'): + script += '\n' + code = compile(script, sys.argv[0], 'exec') + self.cover.start() + try: + exec(code, self.debugMod.__dict__) + except SystemExit: + atexit._run_exitfuncs() + self.cover.stop() + self.cover.save() + self.writestream.flush() return if cmd == DebugProtocol.RequestShutdown: