diff -r a5248d27c8a9 -r 827d89937c30 eric6/DebugClients/Python/DebugClientBase.py --- a/eric6/DebugClients/Python/DebugClientBase.py Sun Dec 20 12:35:26 2020 +0100 +++ b/eric6/DebugClients/Python/DebugClientBase.py Sun Dec 20 20:13:42 2020 +0100 @@ -20,7 +20,7 @@ import signal import time import types -import importlib +import importlib.util import fnmatch @@ -480,7 +480,8 @@ res = 0 code = self.__compileFileSource(self.running) if code: - self.mainThread.run(code, self.debugMod.__dict__, debug=False) + self.mainThread.run(code, self.debugMod.__dict__, debug=False, + closeSession=False) elif method == "RequestCoverage": from coverage import Coverage @@ -514,7 +515,8 @@ if code: self.running = sys.argv[0] self.cover.start() - self.mainThread.run(code, self.debugMod.__dict__, debug=False) + self.mainThread.run(code, self.debugMod.__dict__, debug=False, + closeSession=False) self.cover.stop() self.cover.save() @@ -564,7 +566,7 @@ self.__unhandled_exception(*excinfo) self.prof.save() - self.progTerminated(res) + self.progTerminated(res, closeSession=False) elif method == "ExecuteStatement": if self.buffer: @@ -823,14 +825,10 @@ elif method == "RequestUTPrepare": if params["syspath"]: sys.path = params["syspath"] + sys.path - sys.path.insert( - 0, os.path.dirname(os.path.abspath(params["filename"]))) top_level_dir = None if params["workdir"]: os.chdir(params["workdir"]) top_level_dir = params["workdir"] - else: - os.chdir(sys.path[0]) # set the system exception handling function to ensure, that # we report on all unhandled exceptions @@ -844,6 +842,8 @@ discoveryStart = params["discoverystart"] if not discoveryStart: discoveryStart = params["workdir"] + sys.path.insert( + 0, os.path.abspath(discoveryStart)) if params["testcases"]: self.test = testLoader.loadTestsFromNames( params["testcases"]) @@ -851,6 +851,10 @@ self.test = testLoader.discover( discoveryStart, top_level_dir=top_level_dir) else: + sys.path.insert( + 0, + os.path.dirname(os.path.abspath(params["filename"])) + ) if params["filename"]: spec = importlib.util.spec_from_file_location( params["testname"], params["filename"]) @@ -913,7 +917,7 @@ sys.setprofile(None) self.mainThread.run( "result = self.test.run(self.testResult)\n", - localsDict=locals_) + localsDict=locals_, closeSession=False) result = locals_["result"] else: result = self.test.run(self.testResult) @@ -1420,7 +1424,7 @@ """ return self.running - def progTerminated(self, status, message=""): + def progTerminated(self, status, message="", closeSession=True): """ Public method to tell the debugger that the program has terminated. @@ -1428,6 +1432,8 @@ @type int @param message status message @type str + @param closeSession flag indicating to close the debugger session + @type bool """ if status is None: status = 0 @@ -1450,7 +1456,8 @@ # reset coding self.__coding = self.defaultCoding - self.sessionClose(False) + if closeSession: + self.sessionClose(False) def __dumpVariables(self, frmnr, scope, filterList): """ @@ -2105,7 +2112,6 @@ self.passive = passive if passive: self.sendPassiveStartup(self.running, exceptions) - self.__interact() self.attachThread(mainThread=True) self.mainThread.tracePythonLibs(tracePython) @@ -2152,7 +2158,7 @@ """ self.startDebugger(scriptname, enableTrace=False) res = self.mainThread.runcall(func, *args) - self.progTerminated(res) + self.progTerminated(res, closeSession=False) return res def __resolveHost(self, host):