junit/testng: use common temp file with tests enumeration

This commit is contained in:
Anna Kozlova
2015-04-07 11:25:57 +02:00
parent 105975fee7
commit 6c5c209172
4 changed files with 53 additions and 51 deletions
@@ -15,11 +15,7 @@
*/
package com.intellij.execution;
import com.intellij.execution.*;
import com.intellij.execution.configurations.JavaCommandLineState;
import com.intellij.execution.configurations.JavaParameters;
import com.intellij.execution.configurations.RunConfigurationBase;
import com.intellij.execution.configurations.RunnerSettings;
import com.intellij.execution.configurations.*;
import com.intellij.execution.process.OSProcessHandler;
import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.execution.testframework.TestConsoleProperties;
@@ -32,10 +28,12 @@ import com.intellij.execution.ui.ConsoleView;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.Getter;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.PathUtil;
import jetbrains.buildServer.messages.serviceMessages.ServiceMessageTypes;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
@@ -43,6 +41,7 @@ import java.net.ServerSocket;
public abstract class JavaTestFrameworkRunnableState extends JavaCommandLineState {
private static final Logger LOG = Logger.getInstance("#" + JavaTestFrameworkRunnableState.class.getName());
protected ServerSocket myServerSocket;
protected File myTempFile;
public JavaTestFrameworkRunnableState(ExecutionEnvironment environment) {
super(environment);
@@ -50,7 +49,9 @@ public abstract class JavaTestFrameworkRunnableState extends JavaCommandLineStat
@NotNull protected abstract String getFrameworkName();
@NotNull protected abstract String getVMParameter();
@NotNull protected abstract String getFrameworkId();
protected abstract void passTempFile(ParametersList parametersList, String tempFilePath);
@NotNull protected abstract AbstractRerunFailedTestsAction createRerunFailedTestsAction(TestConsoleProperties testConsoleProperties, ConsoleView consoleView);
@@ -58,7 +59,7 @@ public abstract class JavaTestFrameworkRunnableState extends JavaCommandLineStat
OSProcessHandler handler,
RunConfigurationBase configuration,
ExecutionEnvironment environment) throws ExecutionException {
getJavaParameters().getVMParametersList().add(getVMParameter());
getJavaParameters().getVMParametersList().add("-Didea." + getFrameworkId()+ ".sm_runner");
getJavaParameters().getClassPath().add(PathUtil.getJarPathForClass(ServiceMessageTypes.class));
final RunnerSettings runnerSettings = getRunnerSettings();
@@ -94,4 +95,17 @@ public abstract class JavaTestFrameworkRunnableState extends JavaCommandLineStat
LOG.error(e);
}
}
protected void createTempFiles(JavaParameters javaParameters) {
try {
myTempFile = FileUtil.createTempFile("idea_" + getFrameworkId(), ".tmp");
myTempFile.deleteOnExit();
passTempFile(javaParameters.getProgramParametersList(), myTempFile.getAbsolutePath());
}
catch (IOException e) {
LOG.error(e);
}
}
}
@@ -89,7 +89,6 @@ public abstract class TestObject extends JavaTestFrameworkRunnableState {
@NonNls private static final String JUNIT_TEST_FRAMEWORK_NAME = "JUnit";
protected final JUnitConfiguration myConfiguration;
protected File myTempFile = null;
protected File myWorkingDirsFile = null;
public File myListenersFile;
@@ -147,7 +146,8 @@ public abstract class TestObject extends JavaTestFrameworkRunnableState {
public void checkConfiguration() throws RuntimeConfigurationException{
JavaParametersUtil.checkAlternativeJRE(myConfiguration);
ProgramParametersUtil.checkWorkingDirectoryExist(myConfiguration, myConfiguration.getProject(), myConfiguration.getConfigurationModule().getModule());
ProgramParametersUtil.checkWorkingDirectoryExist(myConfiguration, myConfiguration.getProject(),
myConfiguration.getConfigurationModule().getModule());
}
public SourceScope getSourceScope() {
@@ -534,13 +534,16 @@ public abstract class TestObject extends JavaTestFrameworkRunnableState {
}
}
protected void createTempFiles(JavaParameters javaParameters) throws IOException {
myTempFile = FileUtil.createTempFile("idea_junit", ".tmp");
myTempFile.deleteOnExit();
javaParameters.getProgramParametersList().add("@" + myTempFile.getAbsolutePath());
myWorkingDirsFile = FileUtil.createTempFile("idea_working_dirs_junit", ".tmp");
myWorkingDirsFile.deleteOnExit();
javaParameters.getProgramParametersList().add("@w@" + myWorkingDirsFile.getAbsolutePath());
protected void createTempFiles(JavaParameters javaParameters) {
super.createTempFiles(javaParameters);
try {
myWorkingDirsFile = FileUtil.createTempFile("idea_working_dirs_junit", ".tmp");
myWorkingDirsFile.deleteOnExit();
javaParameters.getProgramParametersList().add("@w@" + myWorkingDirsFile.getAbsolutePath());
}
catch (IOException e) {
LOG.error(e);
}
}
public void clear() {
@@ -551,14 +554,18 @@ public abstract class TestObject extends JavaTestFrameworkRunnableState {
return JUNIT_TEST_FRAMEWORK_NAME;
}
@NotNull
protected String getVMParameter() {
return "-Didea.junit.sm_runner";
}
@NotNull
protected AbstractRerunFailedTestsAction createRerunFailedTestsAction(TestConsoleProperties testConsoleProperties,
ConsoleView consoleView) {
return new RerunFailedTestsAction(consoleView, testConsoleProperties);
}
@NotNull
protected String getFrameworkId() {
return "junit";
}
protected void passTempFile(ParametersList parametersList, String tempFilePath) {
parametersList.add("@" + tempFilePath);
}
}
@@ -127,12 +127,7 @@ public class TestPackage extends TestObject {
getClassFilter(data);//check if junit found
configureClasspath(javaParameters);
try {
createTempFiles(javaParameters);
}
catch (IOException e) {
LOG.error(e);
}
createTempFiles(javaParameters);
createServerSocket(javaParameters);
}
@@ -17,7 +17,6 @@
package com.theoryinpractice.testng.configuration;
import com.intellij.ExtensionPoints;
import com.intellij.debugger.engine.DebuggerUtils;
import com.intellij.execution.*;
import com.intellij.execution.configurations.*;
import com.intellij.execution.process.OSProcessHandler;
@@ -27,10 +26,6 @@ import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.execution.runners.ProgramRunner;
import com.intellij.execution.testframework.*;
import com.intellij.execution.testframework.actions.AbstractRerunFailedTestsAction;
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.testframework.ui.BaseTestsOutputConsoleView;
import com.intellij.execution.ui.ConsoleView;
import com.intellij.execution.ui.ConsoleViewContentType;
import com.intellij.execution.util.JavaParametersUtil;
@@ -47,7 +42,6 @@ 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.io.FileUtil;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.pom.java.LanguageLevel;
@@ -60,7 +54,6 @@ import com.theoryinpractice.testng.model.*;
import com.theoryinpractice.testng.ui.TestNGConsoleView;
import com.theoryinpractice.testng.ui.TestNGResults;
import com.theoryinpractice.testng.ui.actions.RerunFailedTestsAction;
import jetbrains.buildServer.messages.serviceMessages.ServiceMessageTypes;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.testng.CommandLineArgs;
@@ -73,9 +66,7 @@ import org.testng.remote.strprotocol.SerializedMessageSender;
import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.UnknownHostException;
public class TestNGRunnableState extends JavaTestFrameworkRunnableState {
private static final Logger LOG = Logger.getInstance("TestNG Runner");
@@ -83,7 +74,6 @@ public class TestNGRunnableState extends JavaTestFrameworkRunnableState {
private final TestNGConfiguration config;
protected final IDEARemoteTestRunnerClient client;
private int port;
private File myTempFile;
public TestNGRunnableState(ExecutionEnvironment environment, TestNGConfiguration config) {
super(environment);
@@ -190,12 +180,6 @@ public class TestNGRunnableState extends JavaTestFrameworkRunnableState {
return result;
}
@NotNull
@Override
protected String getVMParameter() {
return "-Didea.testng.sm_runner";
}
@NotNull
@Override
protected String getFrameworkName() {
@@ -320,14 +304,7 @@ public class TestNGRunnableState extends JavaTestFrameworkRunnableState {
javaParameters.getProgramParametersList().add(TestNGCommandLineArgs.SRC_COMMAND_OPT, sb.toString());
}*/
createServerSocket(javaParameters);
try {
myTempFile = FileUtil.createTempFile("idea_testng", ".tmp");
myTempFile.deleteOnExit();
javaParameters.getProgramParametersList().add("-temp", myTempFile.getAbsolutePath());
}
catch (IOException e) {
LOG.error(e);
}
createTempFiles(javaParameters);
return javaParameters;
}
@@ -360,4 +337,13 @@ public class TestNGRunnableState extends JavaTestFrameworkRunnableState {
}
return Registry.is("testng.serialized.protocol.enabled") && !TestNGVersionChecker.isVersionIncompatible(project, scopeToDetermineTestngIn);
}
@NotNull
protected String getFrameworkId() {
return "testng";
}
protected void passTempFile(ParametersList parametersList, String tempFilePath) {
parametersList.add("-temp", tempFilePath);
}
}