mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-95236 fix names of produces android test configurations; create "all in module" configuration if package is empty
This commit is contained in:
+15
-8
@@ -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
|
||||
|
||||
+57
-3
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user