mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fix for output file by short name inside working dir (IDEA-153832)
This commit is contained in:
@@ -17,6 +17,7 @@ package com.intellij.execution;
|
||||
|
||||
import com.intellij.ExtensionPoints;
|
||||
import com.intellij.debugger.impl.GenericDebuggerRunnerSettings;
|
||||
import com.intellij.diagnostic.logging.OutputFileUtil;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.process.OSProcessHandler;
|
||||
import com.intellij.execution.process.ProcessAdapter;
|
||||
@@ -124,7 +125,8 @@ public abstract class JavaTestFrameworkRunnableState<T extends ModuleBasedConfig
|
||||
@Override
|
||||
public void startNotified(ProcessEvent event) {
|
||||
if (getConfiguration().isSaveOutputToFile()) {
|
||||
root.setOutputFilePath(getConfiguration().getOutputFilePath());
|
||||
final File file = OutputFileUtil.getOutputFile(getConfiguration());
|
||||
root.setOutputFilePath(file != null ? file.getAbsolutePath() : null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -53,14 +53,29 @@ public class OutputFileUtil {
|
||||
private OutputFileUtil() {
|
||||
}
|
||||
|
||||
public static File getOutputFile(@NotNull final RunConfigurationBase configuration) {
|
||||
String outputFilePath = configuration.getOutputFilePath();
|
||||
if (outputFilePath != null) {
|
||||
final String filePath = FileUtil.toSystemDependentName(outputFilePath);
|
||||
File file = new File(filePath);
|
||||
if (configuration instanceof CommonProgramRunConfigurationParameters && !FileUtil.isAbsolute(filePath)) {
|
||||
String directory = ((CommonProgramRunConfigurationParameters)configuration).getWorkingDirectory();
|
||||
if (directory != null) {
|
||||
file = new File(new File(directory), filePath);
|
||||
}
|
||||
}
|
||||
return file;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void attachDumpListener(@NotNull final RunConfigurationBase configuration, @NotNull final ProcessHandler startedProcess, @Nullable final ExecutionConsole console) {
|
||||
if (!configuration.isSaveOutputToFile()) {
|
||||
return;
|
||||
}
|
||||
|
||||
String outputFilePath = configuration.getOutputFilePath();
|
||||
if (outputFilePath != null) {
|
||||
final String filePath = FileUtil.toSystemDependentName(outputFilePath);
|
||||
final File file = getOutputFile(configuration);
|
||||
if (file != null) {
|
||||
startedProcess.addProcessListener(new ProcessAdapter() {
|
||||
private PrintStream myOutput;
|
||||
@Override
|
||||
@@ -73,18 +88,11 @@ public class OutputFileUtil {
|
||||
@Override
|
||||
public void startNotified(ProcessEvent event) {
|
||||
try {
|
||||
File file = new File(filePath);
|
||||
if (configuration instanceof CommonProgramRunConfigurationParameters && !FileUtil.isAbsolute(filePath)) {
|
||||
String directory = ((CommonProgramRunConfigurationParameters)configuration).getWorkingDirectory();
|
||||
if (directory != null) {
|
||||
file = new File(new File(directory), filePath);
|
||||
}
|
||||
}
|
||||
myOutput = new PrintStream(new FileOutputStream(file));
|
||||
}
|
||||
catch (FileNotFoundException ignored) {
|
||||
}
|
||||
startedProcess.notifyTextAvailable(CONSOLE_OUTPUT_FILE_MESSAGE + filePath + "\n", ProcessOutputTypes.SYSTEM);
|
||||
startedProcess.notifyTextAvailable(CONSOLE_OUTPUT_FILE_MESSAGE + FileUtil.toSystemDependentName(file.getAbsolutePath()) + "\n", ProcessOutputTypes.SYSTEM);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user