From 6028286aeae096e9436b7a24498cd35c3e1f15bb Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 30 Jan 2012 15:37:29 +0400 Subject: [PATCH] execution: extract check for alternative jre; check for working directory (IDEA-77754) --- .../application/ApplicationConfiguration.java | 12 ++------ .../execution/util/JavaParametersUtil.java | 13 ++++++++ .../execution/util/ProgramParametersUtil.java | 30 ++++++++++++++----- .../execution/junit/TestDirectory.java | 19 +++++------- .../intellij/execution/junit/TestObject.java | 12 ++------ .../configuration/TestNGConfiguration.java | 4 +++ 6 files changed, 53 insertions(+), 37 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfiguration.java b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfiguration.java index 1f9444abfad1..69d02d778256 100644 --- a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfiguration.java +++ b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfiguration.java @@ -24,6 +24,7 @@ import com.intellij.execution.junit.RefactoringListeners; import com.intellij.execution.process.OSProcessHandler; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.util.JavaParametersUtil; +import com.intellij.execution.util.ProgramParametersUtil; import com.intellij.openapi.components.PathMacroManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.Extensions; @@ -31,7 +32,6 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.options.SettingsEditorGroup; import com.intellij.openapi.project.Project; -import com.intellij.openapi.projectRoots.impl.JavaSdkImpl; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.DefaultJDOMExternalizer; import com.intellij.openapi.util.InvalidDataException; @@ -138,19 +138,13 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration expanded = new HashMap(); + for (Map.Entry each : parameters.getEnv().entrySet()) { + expanded.put(each.getKey(), expandPath(each.getValue(), module, project)); + } + parameters.setEnv(expanded); + } + } + + public static String getWorkingDir(CommonProgramRunConfigurationParameters configuration, Project project, Module module) { String workingDirectory = configuration.getWorkingDirectory(); VirtualFile baseDir = project.getBaseDir(); @@ -46,15 +61,14 @@ public class ProgramParametersUtil { if (!FileUtil.isAbsolute(workingDirectory) && baseDir != null) { workingDirectory = baseDir.getPath() + "/" + workingDirectory; } - parameters.setWorkingDirectory(workingDirectory); + return workingDirectory; + } - parameters.setupEnvs(configuration.getEnvs(), configuration.isPassParentEnvs()); - if (parameters.getEnv() != null) { - Map expanded = new HashMap(); - for (Map.Entry each : parameters.getEnv().entrySet()) { - expanded.put(each.getKey(), expandPath(each.getValue(), module, project)); - } - parameters.setEnv(expanded); + public static void checkWorkingDirectoryExist(CommonProgramRunConfigurationParameters configuration, Project project, Module module) + throws RuntimeConfigurationWarning { + final String workingDir = getWorkingDir(configuration, project, module); + if (!new File(workingDir).exists()) { + throw new RuntimeConfigurationWarning("Working directory '" + workingDir + "' doesn't exist"); } } diff --git a/plugins/junit/src/com/intellij/execution/junit/TestDirectory.java b/plugins/junit/src/com/intellij/execution/junit/TestDirectory.java index a6d4607f9cc1..057ab85becf0 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestDirectory.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestDirectory.java @@ -16,16 +16,19 @@ package com.intellij.execution.junit; import com.intellij.execution.CantRunException; -import com.intellij.execution.ExecutionBundle; import com.intellij.execution.configurations.*; import com.intellij.execution.testframework.SourceScope; +import com.intellij.execution.util.JavaParametersUtil; +import com.intellij.execution.util.ProgramParametersUtil; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; -import com.intellij.openapi.projectRoots.JavaSdk; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.*; +import com.intellij.psi.JavaDirectoryService; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiManager; +import com.intellij.psi.PsiPackage; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.GlobalSearchScopes; @@ -80,14 +83,8 @@ class TestDirectory extends TestPackage { @Override public void checkConfiguration() throws RuntimeConfigurationException { - if (myConfiguration.isAlternativeJrePathEnabled()) { - if (myConfiguration.getAlternativeJrePath() == null || - myConfiguration.getAlternativeJrePath().length() == 0 || - !JavaSdk.checkForJre(myConfiguration.getAlternativeJrePath())) { - throw new RuntimeConfigurationWarning( - ExecutionBundle.message("jre.path.is.not.valid.jre.home.error.mesage", myConfiguration.getAlternativeJrePath())); - } - } + JavaParametersUtil.checkAlternativeJRE(myConfiguration); + ProgramParametersUtil.checkWorkingDirectoryExist(myConfiguration, myConfiguration.getProject(), myConfiguration.getConfigurationModule().getModule()); final String dirName = myConfiguration.getPersistentData().getDirName(); if (dirName == null || dirName.isEmpty()) { throw new RuntimeConfigurationError("Directory is not specified"); diff --git a/plugins/junit/src/com/intellij/execution/junit/TestObject.java b/plugins/junit/src/com/intellij/execution/junit/TestObject.java index 7c063b643958..b3a288099cb6 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestObject.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestObject.java @@ -36,13 +36,13 @@ import com.intellij.execution.runners.ProgramRunner; import com.intellij.execution.testframework.*; import com.intellij.execution.ui.ConsoleViewContentType; import com.intellij.execution.util.JavaParametersUtil; +import com.intellij.execution.util.ProgramParametersUtil; import com.intellij.openapi.Disposable; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; -import com.intellij.openapi.projectRoots.JavaSdk; import com.intellij.openapi.projectRoots.JavaSdkType; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.ex.JavaSdkUtil; @@ -179,14 +179,8 @@ public abstract class TestObject implements JavaCommandLine { }; public void checkConfiguration() throws RuntimeConfigurationException{ - if (myConfiguration.isAlternativeJrePathEnabled()){ - if (myConfiguration.getAlternativeJrePath() == null || - myConfiguration.getAlternativeJrePath().length() == 0 || - !JavaSdk.checkForJre(myConfiguration.getAlternativeJrePath())){ - throw new RuntimeConfigurationWarning( - ExecutionBundle.message("jre.path.is.not.valid.jre.home.error.mesage", myConfiguration.getAlternativeJrePath())); - } - } + JavaParametersUtil.checkAlternativeJRE(myConfiguration); + ProgramParametersUtil.checkWorkingDirectoryExist(myConfiguration, myConfiguration.getProject(), myConfiguration.getConfigurationModule().getModule()); } public SourceScope getSourceScope() { diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfiguration.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfiguration.java index 9021ecea90b2..52bc39ee1adf 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfiguration.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfiguration.java @@ -29,6 +29,8 @@ import com.intellij.execution.configurations.*; import com.intellij.execution.junit.RefactoringListeners; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.testframework.SourceScope; +import com.intellij.execution.util.JavaParametersUtil; +import com.intellij.execution.util.ProgramParametersUtil; import com.intellij.openapi.components.PathMacroManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.options.SettingsEditor; @@ -338,6 +340,8 @@ public class TestNGConfiguration extends ModuleBasedConfiguration