Fixed severe bugs in the coverage integration. 5_3_x

Sat, 26 Jan 2013 12:41:53 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 26 Jan 2013 12:41:53 +0100
branch
5_3_x
changeset 2372
8f553ad50adf
parent 2364
e90e9235f7d9
child 2373
918a29c04d2f

Fixed severe bugs in the coverage integration.
(grafted from 72e2f353f34b134d3da962775230a2d326c44ad5)

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 17:16:46 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 17:16:46 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:

eric ide

mercurial