mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
junit/testng: append common listeners and command line modifiers
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.execution;
|
||||
|
||||
import com.intellij.ExtensionPoints;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.process.OSProcessHandler;
|
||||
import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
@@ -25,7 +26,11 @@ import com.intellij.execution.testframework.sm.SMTestRunnerConnectionUtil;
|
||||
import com.intellij.execution.testframework.sm.runner.SMTRunnerConsoleProperties;
|
||||
import com.intellij.execution.testframework.sm.runner.ui.SMTRunnerConsoleView;
|
||||
import com.intellij.execution.ui.ConsoleView;
|
||||
import com.intellij.execution.util.JavaParametersUtil;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.projectRoots.ex.JavaSdkUtil;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.Getter;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
@@ -57,6 +62,45 @@ public abstract class JavaTestFrameworkRunnableState<T extends ModuleBasedConfig
|
||||
|
||||
@NotNull protected abstract T getConfiguration();
|
||||
|
||||
protected void collectListeners(JavaParameters javaParameters, StringBuilder buf, String epName, String delimiter) {
|
||||
final T configuration = getConfiguration();
|
||||
final Object[] listeners = Extensions.getExtensions(epName);
|
||||
for (final Object listener : listeners) {
|
||||
boolean enabled = true;
|
||||
for (RunConfigurationExtension ext : Extensions.getExtensions(RunConfigurationExtension.EP_NAME)) {
|
||||
if (ext.isListenerDisabled(configuration, listener, getRunnerSettings())) {
|
||||
enabled = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (enabled) {
|
||||
if (buf.length() > 0) buf.append(delimiter);
|
||||
final Class classListener = listener.getClass();
|
||||
buf.append(classListener.getName());
|
||||
javaParameters.getClassPath().add(PathUtil.getJarPathForClass(classListener));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JavaParameters createJavaParameters() throws ExecutionException {
|
||||
final JavaParameters javaParameters = new JavaParameters();
|
||||
final Module module = getConfiguration().getConfigurationModule().getModule();
|
||||
final Object[] patchers = Extensions.getExtensions(ExtensionPoints.JUNIT_PATCHER);
|
||||
for (Object patcher : patchers) {
|
||||
((JUnitPatcher)patcher).patchJavaParameters(module, javaParameters);
|
||||
}
|
||||
|
||||
// Append coverage parameters if appropriate
|
||||
for (RunConfigurationExtension ext : Extensions.getExtensions(RunConfigurationExtension.EP_NAME)) {
|
||||
ext.updateJavaParameters(getConfiguration(), javaParameters, getRunnerSettings());
|
||||
}
|
||||
|
||||
JavaParametersUtil.configureConfiguration(javaParameters, getConfiguration());
|
||||
JavaSdkUtil.addRtJar(javaParameters.getClassPath());
|
||||
return javaParameters;
|
||||
}
|
||||
|
||||
protected ExecutionResult startSMRunner(Executor executor,
|
||||
OSProcessHandler handler,
|
||||
RunConfigurationBase configuration,
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.intellij.execution.junit;
|
||||
|
||||
import com.intellij.ExtensionPoints;
|
||||
import com.intellij.execution.*;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.junit2.TestProxy;
|
||||
@@ -156,13 +155,6 @@ public abstract class TestObject extends JavaTestFrameworkRunnableState<JUnitCon
|
||||
|
||||
protected void initialize(JavaParameters javaParameters) throws ExecutionException {
|
||||
String parameters = getConfiguration().getProgramParameters();
|
||||
getConfiguration().getPersistentData().setProgramParameters(null);
|
||||
try {
|
||||
JavaParametersUtil.configureConfiguration(javaParameters, getConfiguration());
|
||||
}
|
||||
finally {
|
||||
getConfiguration().getPersistentData().setProgramParameters(parameters);
|
||||
}
|
||||
javaParameters.setMainClass(JUnitConfiguration.JUNIT_START_CLASS);
|
||||
final Module module = getConfiguration().getConfigurationModule().getModule();
|
||||
if (javaParameters.getJdk() == null){
|
||||
@@ -171,31 +163,14 @@ public abstract class TestObject extends JavaTestFrameworkRunnableState<JUnitCon
|
||||
: ProjectRootManager.getInstance(getConfiguration().getProject()).getProjectSdk());
|
||||
}
|
||||
|
||||
configureAdditionalClasspath(javaParameters);
|
||||
javaParameters.getClassPath().add(PathUtil.getJarPathForClass(JUnitStarter.class));
|
||||
javaParameters.getProgramParametersList().add(JUnitStarter.IDE_VERSION + JUnitStarter.VERSION);
|
||||
if (!StringUtil.isEmptyOrSpaces(parameters)) {
|
||||
javaParameters.getProgramParametersList().add("@name" + parameters);
|
||||
}
|
||||
for (RunConfigurationExtension ext : Extensions.getExtensions(RunConfigurationExtension.EP_NAME)) {
|
||||
ext.updateJavaParameters(getConfiguration(), javaParameters, getRunnerSettings());
|
||||
}
|
||||
|
||||
final Object[] listeners = Extensions.getExtensions(IDEAJUnitListener.EP_NAME);
|
||||
final StringBuilder buf = new StringBuilder();
|
||||
for (final Object listener : listeners) {
|
||||
boolean enabled = true;
|
||||
for (RunConfigurationExtension ext : Extensions.getExtensions(RunConfigurationExtension.EP_NAME)) {
|
||||
if (ext.isListenerDisabled(getConfiguration(), listener, getRunnerSettings())) {
|
||||
enabled = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (enabled) {
|
||||
final Class classListener = listener.getClass();
|
||||
buf.append(classListener.getName()).append("\n");
|
||||
javaParameters.getClassPath().add(PathUtil.getJarPathForClass(classListener));
|
||||
}
|
||||
}
|
||||
collectListeners(javaParameters, buf, IDEAJUnitListener.EP_NAME, "\n");
|
||||
if (buf.length() > 0) {
|
||||
try {
|
||||
myListenersFile = FileUtil.createTempFile("junit_listeners_", "");
|
||||
@@ -216,13 +191,8 @@ public abstract class TestObject extends JavaTestFrameworkRunnableState<JUnitCon
|
||||
|
||||
@Override
|
||||
protected JavaParameters createJavaParameters() throws ExecutionException {
|
||||
JavaParameters javaParameters = new JavaParameters();
|
||||
JavaParameters javaParameters = super.createJavaParameters();
|
||||
initialize(javaParameters);
|
||||
final Module module = getConfiguration().getConfigurationModule().getModule();
|
||||
final Object[] patchers = Extensions.getExtensions(ExtensionPoints.JUNIT_PATCHER);
|
||||
for (Object patcher : patchers) {
|
||||
((JUnitPatcher)patcher).patchJavaParameters(module, javaParameters);
|
||||
}
|
||||
return javaParameters;
|
||||
}
|
||||
|
||||
|
||||
+3
-51
@@ -196,10 +196,9 @@ public class TestNGRunnableState extends JavaTestFrameworkRunnableState<TestNGCo
|
||||
@Override
|
||||
protected JavaParameters createJavaParameters() throws ExecutionException {
|
||||
final Project project = getConfiguration().getProject();
|
||||
final JavaParameters javaParameters = new JavaParameters();
|
||||
final JavaParameters javaParameters = super.createJavaParameters();
|
||||
javaParameters.setupEnvs(getConfiguration().getPersistantData().getEnvs(), getConfiguration().getPersistantData().PASS_PARENT_ENVS);
|
||||
javaParameters.setMainClass("org.testng.RemoteTestNGStarter");
|
||||
javaParameters.setWorkingDirectory(getConfiguration().getWorkingDirectory());
|
||||
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!
|
||||
@@ -214,19 +213,8 @@ public class TestNGRunnableState extends JavaTestFrameworkRunnableState<TestNGCo
|
||||
final String pathToBundledJar = PathUtil.getJarPathForClass(AfterClass.class);
|
||||
|
||||
// Configure rest of jars
|
||||
JavaParametersUtil.configureConfiguration(javaParameters, getConfiguration());
|
||||
Sdk jdk = module == null ? ProjectRootManager.getInstance(project).getProjectSdk() : ModuleRootManager.getInstance(module).getSdk();
|
||||
javaParameters.setJdk(jdk);
|
||||
final Object[] patchers = Extensions.getExtensions(ExtensionPoints.JUNIT_PATCHER);
|
||||
for (Object patcher : patchers) {
|
||||
((JUnitPatcher)patcher).patchJavaParameters(module, javaParameters);
|
||||
}
|
||||
JavaSdkUtil.addRtJar(javaParameters.getClassPath());
|
||||
|
||||
// Append coverage parameters if appropriate
|
||||
for (RunConfigurationExtension ext : Extensions.getExtensions(RunConfigurationExtension.EP_NAME)) {
|
||||
ext.updateJavaParameters(getConfiguration(), javaParameters, getRunnerSettings());
|
||||
}
|
||||
|
||||
LOG.info("Test scope is: " + getConfiguration().getPersistantData().getScope());
|
||||
if (getConfiguration().getPersistantData().getScope() == TestSearchScope.WHOLE_PROJECT) {
|
||||
@@ -264,45 +252,9 @@ public class TestNGRunnableState extends JavaTestFrameworkRunnableState<TestNGCo
|
||||
buf.append(StringUtil.join(data.TEST_LISTENERS, ";"));
|
||||
}
|
||||
|
||||
for (Object o : Extensions.getExtensions(IDEATestNGListener.EP_NAME)) {
|
||||
boolean enabled = true;
|
||||
for (RunConfigurationExtension extension : Extensions.getExtensions(RunConfigurationExtension.EP_NAME)) {
|
||||
if (extension.isListenerDisabled(getConfiguration(), o, getRunnerSettings())) {
|
||||
enabled = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (enabled) {
|
||||
if (buf.length() > 0) buf.append(";");
|
||||
buf.append(o.getClass().getName());
|
||||
javaParameters.getClassPath().add(PathUtil.getJarPathForClass(o.getClass()));
|
||||
}
|
||||
}
|
||||
collectListeners(javaParameters, buf, IDEATestNGListener.EP_NAME, ";");
|
||||
|
||||
if (buf.length() > 0) javaParameters.getProgramParametersList().add(CommandLineArgs.LISTENER, buf.toString());
|
||||
|
||||
/* // Always include the source paths - just makes things easier :)
|
||||
VirtualFile[] sources;
|
||||
if ((data.getScope() == TestSearchScope.WHOLE_PROJECT && TestType.PACKAGE.getType().equals(data.TEST_OBJECT)) || module == null) {
|
||||
sources = ProjectRootManager.getInstance(project).getContentSourceRoots();
|
||||
}
|
||||
else {
|
||||
sources = ModuleRootManager.getInstance(module).getSourceRoots();
|
||||
}
|
||||
|
||||
if (sources.length > 0) {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
|
||||
for (int i = 0; i < sources.length; i++) {
|
||||
VirtualFile source = sources[i];
|
||||
sb.append(source.getPath());
|
||||
if (i < sources.length - 1) {
|
||||
sb.append(';');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
javaParameters.getProgramParametersList().add(TestNGCommandLineArgs.SRC_COMMAND_OPT, sb.toString());
|
||||
}*/
|
||||
createServerSocket(javaParameters);
|
||||
createTempFiles(javaParameters);
|
||||
return javaParameters;
|
||||
|
||||
Reference in New Issue
Block a user