diff --git a/java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java b/java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java index d2cb63307cdb..e20fdcd003c2 100644 --- a/java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java +++ b/java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java @@ -41,6 +41,7 @@ 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.module.ModuleUtilCore; import com.intellij.openapi.project.Project; import com.intellij.openapi.projectRoots.JavaSdkType; import com.intellij.openapi.projectRoots.JdkUtil; @@ -379,7 +380,11 @@ public abstract class JavaTestFrameworkRunnableState 1; + return Arrays.stream(directories) + .map(dir -> ModuleUtilCore.findModuleForFile(dir.getVirtualFile(), project)) + .filter(Objects::isNull) + .distinct() + .count() > 1; } } } diff --git a/java/java-runtime/src/com/intellij/rt/execution/testFrameworks/ForkedByModuleSplitter.java b/java/java-runtime/src/com/intellij/rt/execution/testFrameworks/ForkedByModuleSplitter.java index 366665bb8032..b36eb05fb1c7 100644 --- a/java/java-runtime/src/com/intellij/rt/execution/testFrameworks/ForkedByModuleSplitter.java +++ b/java/java-runtime/src/com/intellij/rt/execution/testFrameworks/ForkedByModuleSplitter.java @@ -68,6 +68,13 @@ public abstract class ForkedByModuleSplitter { myForkedDebuggerHelper.setupDebugger(vmParameters); final ProcessBuilder builder = new ProcessBuilder(); builder.add(vmParameters); + + //copy encoding from first VM, as encoding is added into command line explicitly and vm options do not contain it + String encoding = System.getProperty("file.encoding"); + if (encoding != null) { + builder.add("-Dfile.encoding=" + encoding); + } + builder.add("-classpath"); if (myDynamicClasspath.length() > 0) { try { @@ -103,7 +110,14 @@ public abstract class ForkedByModuleSplitter { char[] buf = new char[8192]; public void run() { - final InputStreamReader inputReader = new InputStreamReader(inputStream); + final InputStreamReader inputReader; + try { + inputReader = new InputStreamReader(inputStream, "UTF-8"); + } + catch (UnsupportedEncodingException e) { + return; + } + try { while (true) { if (stopped[0]) break;