mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
modular tests: compose module path if test module contains module-info (IDEA-171419)
GitOrigin-RevId: 73b09af1b91bb53f64bc97edeb9a0121eed8739f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
55426d88a9
commit
6a9a59a2ac
+13
-58
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user