modular tests: compose module path if test module contains module-info (IDEA-171419)

GitOrigin-RevId: 73b09af1b91bb53f64bc97edeb9a0121eed8739f
This commit is contained in:
Anna Kozlova
2019-09-01 18:02:33 +00:00
committed by intellij-monorepo-bot
parent 55426d88a9
commit 6a9a59a2ac
3 changed files with 13 additions and 74 deletions
@@ -37,16 +37,13 @@ import com.intellij.openapi.projectRoots.JavaSdkVersion;
import com.intellij.openapi.projectRoots.JdkUtil;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.ex.JavaSdkUtil;
import com.intellij.openapi.roots.CompilerModuleExtension;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.OrderEnumerator;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.CharsetToolkit;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiJavaModule;
@@ -55,7 +52,6 @@ import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopesCore;
import com.intellij.util.PathUtil;
import com.intellij.util.PathsList;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.ui.UIUtil;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
@@ -357,63 +353,22 @@ public abstract class JavaTestFrameworkRunnableState<T extends
}
}
private void configureModulePath(JavaParameters javaParameters, @NotNull Module module) {
DumbService dumbService = DumbService.getInstance(module.getProject());
CompilerModuleExtension compilerModuleExtension = CompilerModuleExtension.getInstance(module);
private static void configureModulePath(JavaParameters javaParameters, @NotNull Module module) {
PsiJavaModule currentModule =
dumbService.computeWithAlternativeResolveEnabled(() -> JavaModuleGraphUtil.findDescriptorByModule(module, true));
if (currentModule == null) {
List<PsiJavaModule> modules = new ArrayList<>();
OrderEnumerator.orderEntries(module).recursively().runtimeOnly().forEachModule(m -> {
ContainerUtil.addIfNotNull(modules,
dumbService.computeWithAlternativeResolveEnabled(() -> JavaModuleGraphUtil.findDescriptorByModule(m, false)));
return true;
});
if (!modules.isEmpty()) {
ParametersList vmParametersList = javaParameters.getVMParametersList();
for (PsiJavaModule javaModule : modules) {
String javaModuleName = javaModule.getName();
vmParametersList.add("--add-modules");
vmParametersList.add(javaModuleName);
VirtualFile testsOutput = compilerModuleExtension != null ? compilerModuleExtension.getCompilerOutputPathForTests() : null;
if (testsOutput != null) {
vmParametersList.add("--patch-module");
vmParametersList.add(javaModuleName + "=" + testsOutput.getPath());
}
for (String targetModule : getAdditionalTargetModules()) {
vmParametersList.add("--add-modules");
vmParametersList.add(targetModule);
vmParametersList.addParametersString("--add-reads " + javaModuleName + "=" + targetModule);
}
}
}
else {
//no modules found on the classpath
return;
}
}
else {
DumbService.getInstance(module.getProject())
.computeWithAlternativeResolveEnabled(() -> JavaModuleGraphUtil.findDescriptorByModule(module, true));
if (currentModule != null) {
//add current module explicitly as it's not reachable from `idea.rt` auto modules
ParametersList vmParametersList = javaParameters.getVMParametersList();
for (String targetModule : getAdditionalTargetModules()) {
String javaModuleName = currentModule.getName();
vmParametersList.add("--add-modules");
vmParametersList.add(targetModule);
vmParametersList.add("--add-reads");
vmParametersList.add(javaModuleName + "=" + targetModule);
}
}
PathsList classPath = javaParameters.getClassPath();
PathsList modulePath = javaParameters.getModulePath();
modulePath.addAll(classPath.getPathList());
classPath.clear();
}
vmParametersList.add("--add-modules");
vmParametersList.add(currentModule.getName());
protected List<String> getAdditionalTargetModules() {
return Collections.emptyList();
//setup module path
PathsList classPath = javaParameters.getClassPath();
PathsList modulePath = javaParameters.getModulePath();
modulePath.addAll(classPath.getPathList());
classPath.clear();
}
}
protected void createServerSocket(JavaParameters javaParameters) {
@@ -214,17 +214,6 @@ public abstract class TestObject extends JavaTestFrameworkRunnableState<JUnitCon
}
}
@Override
protected List<String> getAdditionalTargetModules() {
String preferredRunner = getRunner();
if (!JUnitStarter.JUNIT5_PARAMETER.equals(preferredRunner)) {
return Arrays.asList("junit", "idea.rt", "junit.rt");
}
else {
return Arrays.asList("org.junit.platform.launcher", "org.junit.platform.engine", "idea.rt", "junit.rt");
}
}
public static File getJUnit5RtFile() {
File junit4Rt = new File(PathUtil.getJarPathForClass(JUnit4IdeaTestRunner.class));
String junit4Name = junit4Rt.getName();
@@ -217,9 +217,4 @@ public class TestNGRunnableState extends JavaTestFrameworkRunnableState<TestNGCo
parametersList.addAt(paramIdx, ForkedDebuggerHelper.DEBUG_SOCKET + getForkSocket().getLocalPort());
}
}
@Override
protected List<String> getAdditionalTargetModules() {
return Arrays.asList("testng", "jcommander", "testng.rt");
}
}