summaryrefslogtreecommitdiff
path: root/python/testSrc/com/jetbrains/env/ut/PyUnitTestTask.java
diff options
context:
space:
mode:
Diffstat (limited to 'python/testSrc/com/jetbrains/env/ut/PyUnitTestTask.java')
-rw-r--r--python/testSrc/com/jetbrains/env/ut/PyUnitTestTask.java108
1 files changed, 76 insertions, 32 deletions
diff --git a/python/testSrc/com/jetbrains/env/ut/PyUnitTestTask.java b/python/testSrc/com/jetbrains/env/ut/PyUnitTestTask.java
index 01401ca1ca9a..550ca6690cfd 100644
--- a/python/testSrc/com/jetbrains/env/ut/PyUnitTestTask.java
+++ b/python/testSrc/com/jetbrains/env/ut/PyUnitTestTask.java
@@ -1,8 +1,11 @@
package com.jetbrains.env.ut;
import com.google.common.collect.Lists;
-import com.intellij.execution.*;
+import com.intellij.execution.RunManager;
+import com.intellij.execution.RunManagerEx;
+import com.intellij.execution.RunnerAndConfigurationSettings;
import com.intellij.execution.configurations.ConfigurationFactory;
+import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.execution.executors.DefaultRunExecutor;
import com.intellij.execution.process.ProcessAdapter;
import com.intellij.execution.process.ProcessEvent;
@@ -29,20 +32,37 @@ import com.jetbrains.python.sdk.flavors.PythonSdkFlavor;
import com.jetbrains.python.testing.AbstractPythonTestRunConfiguration;
import com.jetbrains.python.testing.PythonTestConfigurationType;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import org.junit.Assert;
/**
+ * Tasks to run unit test configurations.
+ * You should extend it either implementing {@link #after()} and {@link #before()} or implement {@link #runTestOn(String)}
+ * yourself and use {@link #runConfiguration(com.intellij.execution.configurations.ConfigurationFactory, String, com.intellij.openapi.project.Project)}
+ * or {@link #runConfiguration(com.intellij.execution.RunnerAndConfigurationSettings, com.intellij.execution.configurations.RunConfiguration)} .
+ * Use {@link #myDescriptor} and {@link #myConsoleView} to check output
+ *
* @author traff
*/
public abstract class PyUnitTestTask extends PyExecutionFixtureTestTask {
protected ProcessHandler myProcessHandler;
private boolean shouldPrintOutput = false;
- private SMTestProxy.SMRootTestProxy myTestProxy;
- private boolean mySetUp = false;
- private SMTRunnerConsoleView myConsoleView;
- private RunContentDescriptor myDescriptor;
+ /**
+ * Test root node
+ */
+ protected SMTestProxy.SMRootTestProxy myTestProxy;
+ /**
+ * Output test console
+ */
+ protected SMTRunnerConsoleView myConsoleView;
+ /**
+ * Test run descriptor
+ */
+ protected RunContentDescriptor myDescriptor;
+
private StringBuilder myOutput;
+ private boolean mySetUp = false;
public PyUnitTestTask() {
}
@@ -83,30 +103,30 @@ public abstract class PyUnitTestTask extends PyExecutionFixtureTestTask {
@Override
public void tearDown() throws Exception {
UIUtil.invokeAndWaitIfNeeded(new Runnable() {
- @Override
- public void run() {
- try {
- if (mySetUp) {
- if (myConsoleView != null) {
- Disposer.dispose(myConsoleView);
- myConsoleView = null;
- }
- if (myDescriptor != null) {
- Disposer.dispose(myDescriptor);
- myDescriptor = null;
- }
-
-
- PyUnitTestTask.super.tearDown();
-
- mySetUp = false;
- }
- }
- catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- }
+ @Override
+ public void run() {
+ try {
+ if (mySetUp) {
+ if (myConsoleView != null) {
+ Disposer.dispose(myConsoleView);
+ myConsoleView = null;
+ }
+ if (myDescriptor != null) {
+ Disposer.dispose(myDescriptor);
+ myDescriptor = null;
+ }
+
+
+ PyUnitTestTask.super.tearDown();
+
+ mySetUp = false;
+ }
+ }
+ catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
);
}
@@ -151,10 +171,30 @@ public abstract class PyUnitTestTask extends PyExecutionFixtureTestTask {
}
}.execute();
- final ExecutionEnvironment environment = ExecutionEnvironmentBuilder.create(DefaultRunExecutor.getRunExecutorInstance(), settings).build();
+ runConfiguration(settings, config);
+ }
+
+ /**
+ * Run configuration.
+ *
+ * @param settings settings (if have any, null otherwise)
+ * @param config configuration to run
+ * @throws Exception
+ */
+ protected void runConfiguration(@Nullable final RunnerAndConfigurationSettings settings,
+ @NotNull final RunConfiguration config) throws Exception {
+ final ExecutionEnvironment environment;
+ if (settings == null) {
+ environment = ExecutionEnvironmentBuilder.create(DefaultRunExecutor.getRunExecutorInstance(), config).build();
+ }
+ else {
+ environment = ExecutionEnvironmentBuilder.create(DefaultRunExecutor.getRunExecutorInstance(), settings).build();
+ }
//noinspection ConstantConditions
+
Assert.assertTrue(environment.getRunner().canRun(DefaultRunExecutor.EXECUTOR_ID, config));
+
before();
final com.intellij.util.concurrency.Semaphore s = new com.intellij.util.concurrency.Semaphore();
@@ -177,7 +217,7 @@ public abstract class PyUnitTestTask extends PyExecutionFixtureTestTask {
myOutput.append(event.getText());
}
});
- myConsoleView = (com.intellij.execution.testframework.sm.runner.ui.SMTRunnerConsoleView)descriptor.getExecutionConsole();
+ myConsoleView = (SMTRunnerConsoleView)descriptor.getExecutionConsole();
myTestProxy = myConsoleView.getResultsViewer().getTestsRootNode();
myConsoleView.getResultsViewer().addEventsListener(new TestResultsViewer.SMEventsAdapter() {
@Override
@@ -194,7 +234,7 @@ public abstract class PyUnitTestTask extends PyExecutionFixtureTestTask {
}
});
- Assert.assertTrue(s.waitFor(60000));
+ Assert.assertTrue(s.waitFor(getTestTimeout()));
XDebuggerTestUtil.waitForSwing();
@@ -207,6 +247,10 @@ public abstract class PyUnitTestTask extends PyExecutionFixtureTestTask {
disposeProcess(myProcessHandler);
}
+ protected int getTestTimeout() {
+ return 60000;
+ }
+
protected void configure(AbstractPythonTestRunConfiguration config) {
}