mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
refactoring listener: update coverage filters by package on test move in another package (IDEA-139703)
This commit is contained in:
@@ -150,6 +150,23 @@ public class RefactoringListeners {
|
||||
return psiClass.getQualifiedName();
|
||||
}
|
||||
}
|
||||
|
||||
public static class RefactorPackageByClass extends RenameElement<PsiClass> {
|
||||
public RefactorPackageByClass(final Accessor<PsiClass> accessor) {
|
||||
super(accessor, "*");
|
||||
}
|
||||
|
||||
public PsiClass findNewElement(final PsiClass psiClass, final String qualifiedName) {
|
||||
return JavaPsiFacade.getInstance(psiClass.getProject())
|
||||
.findClass(qualifiedName.replace('$', '.').replace("\\*", psiClass.getName()),
|
||||
GlobalSearchScope.moduleScope(JavaExecutionUtil.findModule(psiClass)));
|
||||
}
|
||||
|
||||
public String getQualifiedName(final PsiClass psiClass) {
|
||||
final String qualifiedName = psiClass.getQualifiedName();
|
||||
return qualifiedName != null ? StringUtil.getPackageName(qualifiedName) : null;
|
||||
}
|
||||
}
|
||||
|
||||
private static class ClassPackageAccessor implements RefactoringListeners.Accessor<PsiPackage> {
|
||||
private final PsiPackage myContainingPackage;
|
||||
|
||||
+24
-3
@@ -9,7 +9,10 @@ import com.intellij.coverage.listeners.CoverageListener;
|
||||
import com.intellij.execution.CommonJavaRunConfigurationParameters;
|
||||
import com.intellij.execution.Location;
|
||||
import com.intellij.execution.RunConfigurationExtension;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.configurations.JavaParameters;
|
||||
import com.intellij.execution.configurations.RunConfigurationBase;
|
||||
import com.intellij.execution.configurations.RunnerSettings;
|
||||
import com.intellij.execution.configurations.RuntimeConfigurationException;
|
||||
import com.intellij.execution.configurations.coverage.CoverageConfigurable;
|
||||
import com.intellij.execution.configurations.coverage.CoverageEnabledConfiguration;
|
||||
import com.intellij.execution.configurations.coverage.JavaCoverageEnabledConfiguration;
|
||||
@@ -25,7 +28,11 @@ import com.intellij.openapi.projectRoots.JavaSdkVersion;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.util.InvalidDataException;
|
||||
import com.intellij.openapi.util.WriteExternalException;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiPackage;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.refactoring.listeners.RefactoringElementListener;
|
||||
import com.intellij.refactoring.listeners.RefactoringElementListenerComposite;
|
||||
@@ -139,7 +146,8 @@ public class CoverageJavaRunConfigurationExtension extends RunConfigurationExten
|
||||
if (patterns != null) {
|
||||
assert filters != null;
|
||||
if (element instanceof PsiClass) {
|
||||
final int idx = ArrayUtil.find(filters, ((PsiClass)element).getQualifiedName());
|
||||
final String qualifiedName = ((PsiClass)element).getQualifiedName();
|
||||
final int idx = ArrayUtil.find(filters, qualifiedName);
|
||||
if (idx > -1) {
|
||||
final RefactoringListeners.Accessor<PsiClass> accessor = new MyClassAccessor(project, patterns, idx, filters);
|
||||
final RefactoringElementListener classListener = RefactoringListeners.getClassOrPackageListener(element, accessor);
|
||||
@@ -147,6 +155,19 @@ public class CoverageJavaRunConfigurationExtension extends RunConfigurationExten
|
||||
listener = appendListener(listener, classListener);
|
||||
}
|
||||
}
|
||||
else if (qualifiedName != null){
|
||||
final String packageName = StringUtil.getPackageName(qualifiedName);
|
||||
if (!StringUtil.isEmpty(packageName)) {
|
||||
for (int i = 0; i < filters.length; i++) {
|
||||
String filter = filters[i];
|
||||
if (filter.equals(packageName + ".*")) {
|
||||
listener = appendListener(listener,
|
||||
new RefactoringListeners.RefactorPackageByClass(new MyClassAccessor(project, patterns, i, filters)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (element instanceof PsiPackage) {
|
||||
final String qualifiedName = ((PsiPackage)element).getQualifiedName();
|
||||
for (int i = 0, filtersLength = filters.length; i < filtersLength; i++) {
|
||||
|
||||
Reference in New Issue
Block a user