mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
junit/testng: common attach searching for tests task
This commit is contained in:
@@ -19,6 +19,7 @@ import com.intellij.ExtensionPoints;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.process.OSProcessHandler;
|
||||
import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
import com.intellij.execution.testframework.SearchForTestsTask;
|
||||
import com.intellij.execution.testframework.TestConsoleProperties;
|
||||
import com.intellij.execution.testframework.TestFrameworkRunningModel;
|
||||
import com.intellij.execution.testframework.TestSearchScope;
|
||||
@@ -99,6 +100,10 @@ public abstract class JavaTestFrameworkRunnableState<T extends ModuleBasedConfig
|
||||
}
|
||||
}
|
||||
|
||||
public SearchForTestsTask createSearchingForTestsTask() {
|
||||
return null;
|
||||
}
|
||||
|
||||
protected boolean configureByModule(Module module) {
|
||||
return module != null;
|
||||
}
|
||||
|
||||
+18
-1
@@ -15,9 +15,11 @@
|
||||
*/
|
||||
package com.intellij.execution.testframework;
|
||||
|
||||
import com.intellij.execution.CantRunException;
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
import com.intellij.execution.ExecutionException;
|
||||
import com.intellij.execution.process.OSProcessHandler;
|
||||
import com.intellij.execution.process.ProcessAdapter;
|
||||
import com.intellij.execution.process.ProcessEvent;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
@@ -74,6 +76,21 @@ public abstract class SearchForTestsTask extends Task.Backgroundable {
|
||||
}
|
||||
}
|
||||
|
||||
public void attachTaskToProcess(final OSProcessHandler handler) {
|
||||
handler.addProcessListener(new ProcessAdapter() {
|
||||
@Override
|
||||
public void processTerminated(final ProcessEvent event) {
|
||||
handler.removeProcessListener(this);
|
||||
ensureFinished();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startNotified(final ProcessEvent event) {
|
||||
startSearch();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(@NotNull ProgressIndicator indicator) {
|
||||
try {
|
||||
|
||||
@@ -22,11 +22,8 @@ import com.intellij.execution.configurations.RuntimeConfigurationException;
|
||||
import com.intellij.execution.configurations.RuntimeConfigurationWarning;
|
||||
import com.intellij.execution.junit2.ui.model.JUnitRunningModel;
|
||||
import com.intellij.execution.junit2.ui.properties.JUnitConsoleProperties;
|
||||
import com.intellij.execution.process.ProcessAdapter;
|
||||
import com.intellij.execution.process.ProcessEvent;
|
||||
import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
import com.intellij.execution.testframework.*;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
@@ -54,23 +51,11 @@ public class TestPackage extends TestObject {
|
||||
@Override
|
||||
protected JUnitProcessHandler createHandler(Executor executor) throws ExecutionException {
|
||||
final JUnitProcessHandler handler = super.createHandler(executor);
|
||||
final SearchForTestsTask task = createSearchingForTestsTask();
|
||||
handler.addProcessListener(new ProcessAdapter() {
|
||||
@Override
|
||||
public void startNotified(ProcessEvent event) {
|
||||
super.startNotified(event);
|
||||
task.startSearch();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processTerminated(ProcessEvent event) {
|
||||
handler.removeProcessListener(this);
|
||||
task.ensureFinished();
|
||||
}
|
||||
});
|
||||
createSearchingForTestsTask().attachTaskToProcess(handler);
|
||||
return handler;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SearchForTestsTask createSearchingForTestsTask() {
|
||||
final JUnitConfiguration.Data data = getConfiguration().getPersistentData();
|
||||
|
||||
|
||||
+6
-35
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.theoryinpractice.testng.configuration;
|
||||
|
||||
import com.intellij.ExtensionPoints;
|
||||
import com.intellij.execution.*;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.process.OSProcessHandler;
|
||||
@@ -28,23 +27,14 @@ import com.intellij.execution.testframework.*;
|
||||
import com.intellij.execution.testframework.actions.AbstractRerunFailedTestsAction;
|
||||
import com.intellij.execution.ui.ConsoleView;
|
||||
import com.intellij.execution.ui.ConsoleViewContentType;
|
||||
import com.intellij.execution.util.JavaParametersUtil;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.module.EffectiveLanguageLevelUtil;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.projectRoots.ex.JavaSdkUtil;
|
||||
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.Getter;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
@@ -64,9 +54,7 @@ import org.testng.remote.RemoteArgs;
|
||||
import org.testng.remote.RemoteTestNG;
|
||||
import org.testng.remote.strprotocol.SerializedMessageSender;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.ServerSocket;
|
||||
|
||||
public class TestNGRunnableState extends JavaTestFrameworkRunnableState<TestNGConfiguration> {
|
||||
private static final Logger LOG = Logger.getInstance("TestNG Runner");
|
||||
@@ -87,18 +75,7 @@ public class TestNGRunnableState extends JavaTestFrameworkRunnableState<TestNGCo
|
||||
@Override
|
||||
protected OSProcessHandler startProcess() throws ExecutionException {
|
||||
final OSProcessHandler handler = super.startProcess();
|
||||
final SearchingForTestsTask task = createSearchingForTestsTask(myServerSocket, getConfiguration(), myTempFile);
|
||||
handler.addProcessListener(new ProcessAdapter() {
|
||||
@Override
|
||||
public void processTerminated(final ProcessEvent event) {
|
||||
task.ensureFinished();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startNotified(final ProcessEvent event) {
|
||||
task.startSearch();
|
||||
}
|
||||
});
|
||||
createSearchingForTestsTask().attachTaskToProcess(handler);
|
||||
|
||||
return handler;
|
||||
}
|
||||
@@ -203,12 +180,9 @@ public class TestNGRunnableState extends JavaTestFrameworkRunnableState<TestNGCo
|
||||
final JavaParameters javaParameters = super.createJavaParameters();
|
||||
javaParameters.setupEnvs(getConfiguration().getPersistantData().getEnvs(), getConfiguration().getPersistantData().PASS_PARENT_ENVS);
|
||||
javaParameters.setMainClass("org.testng.RemoteTestNGStarter");
|
||||
|
||||
javaParameters.getClassPath().add(PathUtil.getJarPathForClass(RemoteTestNGStarter.class));
|
||||
|
||||
//the next few lines are awkward for a reason, using compareTo for some reason causes a JVM class verification error!
|
||||
final String pathToBundledJar = PathUtil.getJarPathForClass(AfterClass.class);
|
||||
|
||||
javaParameters.getClassPath().add(pathToBundledJar);
|
||||
javaParameters.getClassPath().add(PathUtil.getJarPathForClass(AfterClass.class));
|
||||
|
||||
try {
|
||||
port = NetUtils.findAvailableSocketPort();
|
||||
@@ -231,19 +205,16 @@ public class TestNGRunnableState extends JavaTestFrameworkRunnableState<TestNGCo
|
||||
if (data.TEST_LISTENERS != null && !data.TEST_LISTENERS.isEmpty()) {
|
||||
buf.append(StringUtil.join(data.TEST_LISTENERS, ";"));
|
||||
}
|
||||
|
||||
collectListeners(javaParameters, buf, IDEATestNGListener.EP_NAME, ";");
|
||||
|
||||
if (buf.length() > 0) javaParameters.getProgramParametersList().add(CommandLineArgs.LISTENER, buf.toString());
|
||||
|
||||
createServerSocket(javaParameters);
|
||||
createTempFiles(javaParameters);
|
||||
return javaParameters;
|
||||
}
|
||||
|
||||
protected SearchingForTestsTask createSearchingForTestsTask(ServerSocket serverSocket,
|
||||
final TestNGConfiguration config,
|
||||
final File tempFile) {
|
||||
return new SearchingForTestsTask(serverSocket, config, tempFile, client);
|
||||
public SearchingForTestsTask createSearchingForTestsTask() {
|
||||
return new SearchingForTestsTask(myServerSocket, config, myTempFile, client);
|
||||
}
|
||||
|
||||
public static boolean supportSerializationProtocol(TestNGConfiguration config) {
|
||||
|
||||
+4
-5
@@ -50,9 +50,8 @@ public class RerunFailedTestsAction extends JavaRerunFailedTestsAction {
|
||||
public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment env) {
|
||||
return new TestNGRunnableState(env, configuration) {
|
||||
@Override
|
||||
protected SearchingForTestsTask createSearchingForTestsTask(ServerSocket serverSocket,
|
||||
final TestNGConfiguration config, final File tempFile) {
|
||||
return new SearchingForTestsTask(serverSocket, config, tempFile, client) {
|
||||
public SearchingForTestsTask createSearchingForTestsTask() {
|
||||
return new SearchingForTestsTask(myServerSocket, getConfiguration(), myTempFile, client) {
|
||||
@Override
|
||||
protected void fillTestObjects(final Map<PsiClass, Collection<PsiMethod>> classes) throws CantRunException {
|
||||
final HashMap<PsiClass, Collection<PsiMethod>> fullClassList = ContainerUtil.newHashMap();
|
||||
@@ -68,8 +67,8 @@ public class RerunFailedTestsAction extends JavaRerunFailedTestsAction {
|
||||
}
|
||||
}
|
||||
|
||||
final GlobalSearchScope scope = config.getConfigurationModule().getSearchScope();
|
||||
final Project project = config.getProject();
|
||||
final GlobalSearchScope scope = getConfiguration().getConfigurationModule().getSearchScope();
|
||||
final Project project = getConfiguration().getProject();
|
||||
for (final AbstractTestProxy proxy : failedTests) {
|
||||
ApplicationManager.getApplication().runReadAction(new Runnable() {
|
||||
public void run() {
|
||||
|
||||
Reference in New Issue
Block a user