diff --git a/java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java b/java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java index 9ae4fbdc19dc..d023c943a020 100644 --- a/java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java +++ b/java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java @@ -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 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, diff --git a/plugins/junit/src/com/intellij/execution/junit/TestObject.java b/plugins/junit/src/com/intellij/execution/junit/TestObject.java index 0ee84a793382..d0838ea3e15b 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestObject.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestObject.java @@ -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 0) { try { myListenersFile = FileUtil.createTempFile("junit_listeners_", ""); @@ -216,13 +191,8 @@ public abstract class TestObject extends JavaTestFrameworkRunnableState 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;