mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Better disposal in tests.
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
package com.jetbrains.env.python.debug;
|
||||
|
||||
import com.google.common.collect.Sets;
|
||||
import com.intellij.execution.ExecutionResult;
|
||||
import com.intellij.openapi.application.Result;
|
||||
import com.intellij.openapi.application.WriteAction;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.JarFileSystem;
|
||||
@@ -37,6 +39,7 @@ public abstract class PyBaseDebuggerTask extends PyExecutionFixtureTestTask {
|
||||
protected Semaphore myTerminateSemaphore;
|
||||
protected boolean shouldPrintOutput = false;
|
||||
protected boolean myProcessCanTerminate;
|
||||
protected ExecutionResult myExecutionResult;
|
||||
|
||||
protected void waitForPause() throws InterruptedException, InvocationTargetException {
|
||||
Assert.assertTrue("Debugger didn't stopped within timeout\nOutput:" + output(), waitFor(myPausedSemaphore));
|
||||
@@ -246,9 +249,8 @@ public abstract class PyBaseDebuggerTask extends PyExecutionFixtureTestTask {
|
||||
UIUtil.invokeAndWaitIfNeeded(new Runnable() {
|
||||
public void run() {
|
||||
try {
|
||||
if (mySession != null) {
|
||||
finishSession();
|
||||
}
|
||||
finishSession();
|
||||
|
||||
PyBaseDebuggerTask.super.tearDown();
|
||||
}
|
||||
catch (Exception e) {
|
||||
@@ -271,10 +273,22 @@ public abstract class PyBaseDebuggerTask extends PyExecutionFixtureTestTask {
|
||||
waitFor(mySession.getDebugProcess().getProcessHandler()); //wait for process termination after session.stop() which is async
|
||||
|
||||
XDebuggerTestUtil.disposeDebugSession(mySession);
|
||||
|
||||
mySession = null;
|
||||
myDebugProcess = null;
|
||||
myPausedSemaphore = null;
|
||||
}
|
||||
|
||||
|
||||
if (myExecutionResult != null) {
|
||||
UIUtil.invokeLaterIfNeeded(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Disposer.dispose(myExecutionResult.getExecutionConsole());
|
||||
}
|
||||
});
|
||||
myExecutionResult = null;
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void disposeDebugProcess() throws InterruptedException;
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
import com.intellij.openapi.application.Result;
|
||||
import com.intellij.openapi.application.WriteAction;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.xdebugger.*;
|
||||
import com.jetbrains.python.debugger.PyDebugProcess;
|
||||
@@ -111,7 +112,7 @@ public class PyDebuggerTask extends PyBaseDebuggerTask {
|
||||
new WriteAction<ExecutionResult>() {
|
||||
@Override
|
||||
protected void run(@NotNull Result<ExecutionResult> result) throws Throwable {
|
||||
final ExecutionResult res =
|
||||
myExecutionResult =
|
||||
pyState.execute(executor, PyDebugRunner.createCommandLinePatchers(myFixture.getProject(), pyState, profile, serverLocalPort));
|
||||
|
||||
mySession = XDebuggerManager.getInstance(getProject()).
|
||||
@@ -119,7 +120,7 @@ public class PyDebuggerTask extends PyBaseDebuggerTask {
|
||||
@NotNull
|
||||
public XDebugProcess start(@NotNull final XDebugSession session) {
|
||||
myDebugProcess =
|
||||
new PyDebugProcess(session, serverSocket, res.getExecutionConsole(), res.getProcessHandler(), isMultiprocessDebug());
|
||||
new PyDebugProcess(session, serverSocket, myExecutionResult.getExecutionConsole(), myExecutionResult.getProcessHandler(), isMultiprocessDebug());
|
||||
|
||||
myDebugProcess.getProcessHandler().addProcessListener(new ProcessAdapter() {
|
||||
|
||||
@@ -142,7 +143,7 @@ public class PyDebuggerTask extends PyBaseDebuggerTask {
|
||||
return myDebugProcess;
|
||||
}
|
||||
});
|
||||
result.setResult(res);
|
||||
result.setResult(myExecutionResult);
|
||||
}
|
||||
}.execute().getResultObject();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user