mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-01 17:03:12 +07:00
forked tests: fork per module for testng
This commit is contained in:
+86
-36
@@ -61,17 +61,18 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.serialization.PathMacroUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.*;
|
||||
import java.net.InetAddress;
|
||||
import java.net.ServerSocket;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
public abstract class JavaTestFrameworkRunnableState<T extends ModuleBasedConfiguration<JavaRunConfigurationModule> & CommonJavaRunConfigurationParameters & SMRunnerConsolePropertiesProvider> extends JavaCommandLineState {
|
||||
private static final Logger LOG = Logger.getInstance("#" + JavaTestFrameworkRunnableState.class.getName());
|
||||
protected ServerSocket myServerSocket;
|
||||
protected File myTempFile;
|
||||
protected File myWorkingDirsFile = null;
|
||||
|
||||
public JavaTestFrameworkRunnableState(ExecutionEnvironment environment) {
|
||||
super(environment);
|
||||
@@ -158,6 +159,8 @@ public abstract class JavaTestFrameworkRunnableState<T extends ModuleBasedConfig
|
||||
return Registry.is(getFrameworkId() + "_sm");
|
||||
}
|
||||
|
||||
protected abstract void configureRTClasspath(JavaParameters javaParameters);
|
||||
|
||||
@Override
|
||||
protected JavaParameters createJavaParameters() throws ExecutionException {
|
||||
final JavaParameters javaParameters = new JavaParameters();
|
||||
@@ -239,40 +242,9 @@ public abstract class JavaTestFrameworkRunnableState<T extends ModuleBasedConfig
|
||||
if (jdk == null) {
|
||||
throw new ExecutionException(ExecutionBundle.message("run.configuration.error.no.jdk.specified"));
|
||||
}
|
||||
|
||||
try {
|
||||
final File tempFile = FileUtil.createTempFile("command.line", "", true);
|
||||
final PrintWriter writer = new PrintWriter(tempFile, CharsetToolkit.UTF8);
|
||||
try {
|
||||
if (JdkUtil.useDynamicClasspath(getConfiguration().getProject())) {
|
||||
String classpath = PathUtil.getJarPathForClass(CommandLineWrapper.class);
|
||||
final String utilRtPath = PathUtil.getJarPathForClass(StringUtilRt.class);
|
||||
if (!classpath.equals(utilRtPath)) {
|
||||
classpath += File.pathSeparator + utilRtPath;
|
||||
}
|
||||
writer.println(classpath);
|
||||
}
|
||||
else {
|
||||
writer.println("");
|
||||
}
|
||||
|
||||
writer.println(((JavaSdkType)jdk.getSdkType()).getVMExecutablePath(jdk));
|
||||
for (String vmParameter : javaParameters.getVMParametersList().getList()) {
|
||||
writer.println(vmParameter);
|
||||
}
|
||||
}
|
||||
finally {
|
||||
writer.close();
|
||||
}
|
||||
|
||||
passForkMode(forkMode, tempFile);
|
||||
}
|
||||
catch (Exception e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void passForkMode(String forkMode, File tempFile) throws ExecutionException;
|
||||
protected abstract void passForkMode(String forkMode, File tempFile, JavaParameters parameters) throws ExecutionException;
|
||||
|
||||
protected void collectListeners(JavaParameters javaParameters, StringBuilder buf, String epName, String delimiter) {
|
||||
final T configuration = getConfiguration();
|
||||
@@ -295,6 +267,7 @@ public abstract class JavaTestFrameworkRunnableState<T extends ModuleBasedConfig
|
||||
}
|
||||
|
||||
protected void configureClasspath(final JavaParameters javaParameters) throws CantRunException {
|
||||
configureRTClasspath(javaParameters);
|
||||
RunConfigurationModule module = getConfiguration().getConfigurationModule();
|
||||
final String jreHome = getConfiguration().isAlternativeJrePathEnabled() ? getConfiguration().getAlternativeJrePath() : null;
|
||||
final int pathType = JavaParameters.JDK_AND_CLASSES_AND_TESTS;
|
||||
@@ -349,19 +322,96 @@ public abstract class JavaTestFrameworkRunnableState<T extends ModuleBasedConfig
|
||||
|
||||
protected void createTempFiles(JavaParameters javaParameters) {
|
||||
try {
|
||||
myWorkingDirsFile = FileUtil.createTempFile("idea_working_dirs_" + getFrameworkId(), ".tmp");
|
||||
myWorkingDirsFile.deleteOnExit();
|
||||
javaParameters.getProgramParametersList().add("@w@" + myWorkingDirsFile.getAbsolutePath());
|
||||
|
||||
|
||||
final File tempFile = FileUtil.createTempFile("command.line", "", true);
|
||||
final PrintWriter writer = new PrintWriter(tempFile, CharsetToolkit.UTF8);
|
||||
try {
|
||||
if (JdkUtil.useDynamicClasspath(getConfiguration().getProject())) {
|
||||
String classpath = PathUtil.getJarPathForClass(CommandLineWrapper.class);
|
||||
final String utilRtPath = PathUtil.getJarPathForClass(StringUtilRt.class);
|
||||
if (!classpath.equals(utilRtPath)) {
|
||||
classpath += File.pathSeparator + utilRtPath;
|
||||
}
|
||||
writer.println(classpath);
|
||||
}
|
||||
else {
|
||||
writer.println("");
|
||||
}
|
||||
|
||||
final Sdk jdk = javaParameters.getJdk();
|
||||
if (jdk != null) {
|
||||
writer.println(((JavaSdkType)jdk.getSdkType()).getVMExecutablePath(jdk));
|
||||
for (String vmParameter : javaParameters.getVMParametersList().getList()) {
|
||||
writer.println(vmParameter);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally {
|
||||
writer.close();
|
||||
}
|
||||
|
||||
passForkMode(getForkMode(), tempFile, javaParameters);
|
||||
|
||||
myTempFile = FileUtil.createTempFile("idea_" + getFrameworkId(), ".tmp");
|
||||
myTempFile.deleteOnExit();
|
||||
passTempFile(javaParameters.getProgramParametersList(), myTempFile.getAbsolutePath());
|
||||
}
|
||||
catch (IOException e) {
|
||||
catch (Exception e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
protected void writeClassesPerModule(String packageName, JavaParameters javaParameters, Map<Module, List<String>> perModule)
|
||||
throws FileNotFoundException, UnsupportedEncodingException, CantRunException {
|
||||
if (perModule != null && perModule.size() > 1) {
|
||||
final String classpath = getScope() == TestSearchScope.WHOLE_PROJECT
|
||||
? null : javaParameters.getClassPath().getPathsString();
|
||||
|
||||
final PrintWriter wWriter = new PrintWriter(myWorkingDirsFile, CharsetToolkit.UTF8);
|
||||
try {
|
||||
wWriter.println(packageName);
|
||||
for (Module module : perModule.keySet()) {
|
||||
final String moduleDir = PathMacroUtil.getModuleDir(module.getModuleFilePath());
|
||||
wWriter.println(moduleDir);
|
||||
|
||||
if (classpath == null) {
|
||||
final JavaParameters parameters = new JavaParameters();
|
||||
parameters.getClassPath().add(JavaSdkUtil.getIdeaRtJarPath());
|
||||
configureRTClasspath(parameters);
|
||||
JavaParametersUtil.configureModule(module, parameters, JavaParameters.JDK_AND_CLASSES_AND_TESTS,
|
||||
getConfiguration().isAlternativeJrePathEnabled() ? getConfiguration()
|
||||
.getAlternativeJrePath() : null);
|
||||
wWriter.println(parameters.getClassPath().getPathsString());
|
||||
}
|
||||
else {
|
||||
wWriter.println(classpath);
|
||||
}
|
||||
|
||||
final List<String> classNames = perModule.get(module);
|
||||
wWriter.println(classNames.size());
|
||||
for (String className : classNames) {
|
||||
wWriter.println(className);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally {
|
||||
wWriter.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void deleteTempFiles() {
|
||||
if (myTempFile != null) {
|
||||
FileUtil.delete(myTempFile);
|
||||
}
|
||||
|
||||
if (myWorkingDirsFile != null) {
|
||||
FileUtil.delete(myWorkingDirsFile);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user