IDEA-95236 fix names of produces android test configurations; create "all in module" configuration if package is empty

This commit is contained in:
Eugene Kudelevsky
2012-11-29 19:17:52 +04:00
parent 52cb602e4c
commit 4ccf5baf04
2 changed files with 72 additions and 11 deletions
@@ -71,11 +71,15 @@ public class AndroidTestConfigurationProducer extends JavaRuntimeConfigurationPr
private RunnerAndConfigurationSettings createAllInPackageConfiguration(PsiElement element, ConfigurationContext context) {
PsiPackage p = checkPackage(element);
if (p != null) {
final String packageName = p.getQualifiedName();
RunnerAndConfigurationSettings settings =
checkFacetAndCreateConfiguration(p, context, AndroidTestRunConfiguration.TEST_ALL_IN_PACKAGE, p.getQualifiedName());
checkFacetAndCreateConfiguration(p, context, packageName.length() > 0
? AndroidTestRunConfiguration.TEST_ALL_IN_PACKAGE
: AndroidTestRunConfiguration.TEST_ALL_IN_MODULE);
if (settings == null) return null;
AndroidTestRunConfiguration configuration = (AndroidTestRunConfiguration)settings.getConfiguration();
configuration.PACKAGE_NAME = p.getQualifiedName();
configuration.PACKAGE_NAME = packageName;
setGeneratedName(configuration);
return settings;
}
return null;
@@ -87,10 +91,11 @@ public class AndroidTestConfigurationProducer extends JavaRuntimeConfigurationPr
while (elementClass != null) {
if (JUnitUtil.isTestClass(elementClass)) {
RunnerAndConfigurationSettings settings =
checkFacetAndCreateConfiguration(elementClass, context, AndroidTestRunConfiguration.TEST_CLASS, elementClass.getQualifiedName());
checkFacetAndCreateConfiguration(elementClass, context, AndroidTestRunConfiguration.TEST_CLASS);
if (settings == null) return null;
AndroidTestRunConfiguration configuration = (AndroidTestRunConfiguration)settings.getConfiguration();
configuration.CLASS_NAME = elementClass.getQualifiedName();
setGeneratedName(configuration);
return settings;
}
elementClass = PsiTreeUtil.getParentOfType(elementClass, PsiClass.class);
@@ -105,13 +110,13 @@ public class AndroidTestConfigurationProducer extends JavaRuntimeConfigurationPr
if (isTestMethod(elementMethod)) {
PsiClass c = elementMethod.getContainingClass();
assert c != null;
String name = c.getQualifiedName() + '.' + elementMethod.getName() + "()";
RunnerAndConfigurationSettings settings =
checkFacetAndCreateConfiguration(elementMethod, context, AndroidTestRunConfiguration.TEST_METHOD, name);
checkFacetAndCreateConfiguration(elementMethod, context, AndroidTestRunConfiguration.TEST_METHOD);
if (settings == null) return null;
AndroidTestRunConfiguration configuration = (AndroidTestRunConfiguration)settings.getConfiguration();
configuration.CLASS_NAME = c.getQualifiedName();
configuration.METHOD_NAME = elementMethod.getName();
setGeneratedName(configuration);
return settings;
}
elementMethod = PsiTreeUtil.getParentOfType(elementMethod, PsiMethod.class);
@@ -119,11 +124,14 @@ public class AndroidTestConfigurationProducer extends JavaRuntimeConfigurationPr
return null;
}
private static void setGeneratedName(AndroidTestRunConfiguration configuration) {
configuration.setName(configuration.getGeneratedName());
}
@Nullable
private RunnerAndConfigurationSettings checkFacetAndCreateConfiguration(PsiElement element,
ConfigurationContext context,
int testingType,
String configurationName) {
int testingType) {
Module module = context.getModule();
if (module == null || AndroidFacet.getInstance(module) == null) {
return null;
@@ -132,7 +140,6 @@ public class AndroidTestConfigurationProducer extends JavaRuntimeConfigurationPr
RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(element.getProject(), context);
AndroidTestRunConfiguration configuration = (AndroidTestRunConfiguration)settings.getConfiguration();
configuration.TESTING_TYPE = testingType;
configuration.setName(JavaExecutionUtil.getPresentableClassName(configurationName, configuration.getConfigurationModule()));
setupConfigurationModule(context, configuration);
final TargetSelectionMode targetSelectionMode = AndroidUtils
@@ -22,9 +22,7 @@ import com.android.ddmlib.ShellCommandUnresponsiveException;
import com.android.ddmlib.TimeoutException;
import com.android.ddmlib.testrunner.RemoteAndroidTestRunner;
import com.intellij.codeInsight.AnnotationUtil;
import com.intellij.execution.ExecutionBundle;
import com.intellij.execution.ExecutionException;
import com.intellij.execution.Executor;
import com.intellij.execution.*;
import com.intellij.execution.configurations.*;
import com.intellij.execution.junit.JUnitUtil;
import com.intellij.execution.process.ProcessOutputTypes;
@@ -38,6 +36,7 @@ import com.intellij.openapi.options.SettingsEditor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Disposer;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiClass;
@@ -83,6 +82,61 @@ public class AndroidTestRunConfiguration extends AndroidRunConfigurationBase {
super(name, project, factory);
}
@Override
public boolean isGeneratedName() {
final String name = getName();
if ((TESTING_TYPE == TEST_CLASS || TESTING_TYPE == TEST_METHOD) &&
(CLASS_NAME == null || CLASS_NAME.length() == 0)) {
return JavaExecutionUtil.isNewName(name);
}
if (TESTING_TYPE == TEST_METHOD &&
(METHOD_NAME == null || METHOD_NAME.length() == 0)) {
return JavaExecutionUtil.isNewName(name);
}
return Comparing.equal(name, getGeneratedName());
}
@Nullable
@Override
public String getGeneratedName() {
final JavaRunConfigurationModule confModule = getConfigurationModule();
final String moduleName = confModule.getModuleName();
if (TESTING_TYPE == TEST_ALL_IN_PACKAGE) {
if (PACKAGE_NAME.length() == 0) {
return ExecutionBundle.message("default.junit.config.name.all.in.module", moduleName);
}
if (moduleName.length() > 0) {
return ExecutionBundle.message("default.junit.config.name.all.in.package.in.module", PACKAGE_NAME, moduleName);
}
return PACKAGE_NAME + " in " + moduleName;
}
else if (TESTING_TYPE == TEST_CLASS) {
return JavaExecutionUtil.getPresentableClassName(CLASS_NAME, confModule);
}
else if (TESTING_TYPE == TEST_METHOD) {
return JavaExecutionUtil.getPresentableClassName(CLASS_NAME, confModule) + "." + METHOD_NAME;
}
return moduleName;
}
@Override
public String suggestedName() {
if (TESTING_TYPE == TEST_ALL_IN_PACKAGE) {
return isGeneratedName()
? ExecutionBundle.message("test.in.scope.presentable.text", PACKAGE_NAME)
: "'" + getName() + "'";
}
else if (TESTING_TYPE == TEST_CLASS) {
return ProgramRunnerUtil.shortenName(JavaExecutionUtil.getShortClassName(CLASS_NAME), 0);
}
else if (TESTING_TYPE == TEST_METHOD) {
return ProgramRunnerUtil.shortenName(METHOD_NAME, 2) + "()";
}
return ExecutionBundle.message("all.tests.scope.presentable.text");
}
@Override
public void checkConfiguration(@NotNull AndroidFacet facet) throws RuntimeConfigurationException {
Module module = facet.getModule();