Don't produce run configurations for files out of source roots
#KT-3973 Fixed
This commit is contained in:
@@ -101,6 +101,18 @@ public class JetPluginUtil {
|
|||||||
return ProjectFileIndex.SERVICE.getInstance(element.getProject()).isInSourceContent(virtualFile);
|
return ProjectFileIndex.SERVICE.getInstance(element.getProject()).isInSourceContent(virtualFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isInSource(@NotNull PsiElement element) {
|
||||||
|
PsiFile containingFile = element.getContainingFile();
|
||||||
|
if (containingFile == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
VirtualFile virtualFile = containingFile.getVirtualFile();
|
||||||
|
if (virtualFile == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return ProjectFileIndex.SERVICE.getInstance(element.getProject()).isInSource(virtualFile);
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static String getPluginVersion() {
|
public static String getPluginVersion() {
|
||||||
IdeaPluginDescriptor plugin = PluginManager.getPlugin(PluginId.getId("org.jetbrains.kotlin"));
|
IdeaPluginDescriptor plugin = PluginManager.getPlugin(PluginId.getId("org.jetbrains.kotlin"));
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import com.intellij.psi.util.PsiTreeUtil;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.asJava.LightClassUtil;
|
import org.jetbrains.jet.asJava.LightClassUtil;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
|
import org.jetbrains.jet.plugin.JetPluginUtil;
|
||||||
|
|
||||||
public class JetJUnitConfigurationProducer extends RuntimeConfigurationProducer {
|
public class JetJUnitConfigurationProducer extends RuntimeConfigurationProducer {
|
||||||
private JetElement myElement;
|
private JetElement myElement;
|
||||||
@@ -50,6 +51,10 @@ public class JetJUnitConfigurationProducer extends RuntimeConfigurationProducer
|
|||||||
protected RunnerAndConfigurationSettings createConfigurationByElement(Location location, ConfigurationContext context) {
|
protected RunnerAndConfigurationSettings createConfigurationByElement(Location location, ConfigurationContext context) {
|
||||||
PsiElement leaf = location.getPsiElement();
|
PsiElement leaf = location.getPsiElement();
|
||||||
|
|
||||||
|
if (!JetPluginUtil.isInSource(leaf)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(leaf.getContainingFile() instanceof JetFile)) {
|
if (!(leaf.getContainingFile() instanceof JetFile)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import org.jetbrains.jet.lang.psi.JetPsiUtil;
|
|||||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.plugin.JetMainDetector;
|
import org.jetbrains.jet.plugin.JetMainDetector;
|
||||||
|
import org.jetbrains.jet.plugin.JetPluginUtil;
|
||||||
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
|
import org.jetbrains.jet.plugin.framework.KotlinFrameworkDetector;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -61,30 +62,31 @@ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer im
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
FqName startClassFQName = getStartClassFQName(location);
|
JetFile file = getStartClassFile(location);
|
||||||
if (startClassFQName == null) {
|
if (file == null || !JetPluginUtil.isInSource(file)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mySourceElement = file;
|
||||||
|
|
||||||
|
FqName startClassFQName = PackageClassUtils.getPackageClassFqName(JetPsiUtil.getFQName(file));
|
||||||
|
|
||||||
return createConfigurationByQName(module, configurationContext, startClassFQName);
|
return createConfigurationByQName(module, configurationContext, startClassFQName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private FqName getStartClassFQName(Location location) {
|
private static JetFile getStartClassFile(@NotNull Location location) {
|
||||||
PsiFile psiFile = location.getPsiElement().getContainingFile();
|
PsiFile psiFile = location.getPsiElement().getContainingFile();
|
||||||
if (psiFile instanceof JetFile) {
|
if (psiFile instanceof JetFile) {
|
||||||
JetFile jetFile = (JetFile) psiFile;
|
JetFile jetFile = (JetFile) psiFile;
|
||||||
if (JetMainDetector.hasMain(jetFile.getDeclarations())) {
|
if (JetMainDetector.hasMain(jetFile.getDeclarations())) {
|
||||||
mySourceElement = jetFile;
|
return jetFile;
|
||||||
FqName fqName = JetPsiUtil.getFQName(jetFile);
|
|
||||||
return PackageClassUtils.getPackageClassFqName(fqName);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private RunnerAndConfigurationSettings createConfigurationByQName(
|
private RunnerAndConfigurationSettings createConfigurationByQName(
|
||||||
@NotNull Module module,
|
@NotNull Module module,
|
||||||
@@ -105,11 +107,13 @@ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer im
|
|||||||
@NotNull List<RunnerAndConfigurationSettings> existingConfigurations,
|
@NotNull List<RunnerAndConfigurationSettings> existingConfigurations,
|
||||||
ConfigurationContext context
|
ConfigurationContext context
|
||||||
) {
|
) {
|
||||||
FqName startClassFQName = getStartClassFQName(location);
|
JetFile file = getStartClassFile(location);
|
||||||
if (startClassFQName == null) {
|
if (file == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FqName startClassFQName = PackageClassUtils.getPackageClassFqName(JetPsiUtil.getFQName(file));
|
||||||
|
|
||||||
for (RunnerAndConfigurationSettings existingConfiguration : existingConfigurations) {
|
for (RunnerAndConfigurationSettings existingConfiguration : existingConfigurations) {
|
||||||
if (existingConfiguration.getType() instanceof JetRunConfigurationType) {
|
if (existingConfiguration.getType() instanceof JetRunConfigurationType) {
|
||||||
JetRunConfiguration jetConfiguration = (JetRunConfiguration)existingConfiguration.getConfiguration();
|
JetRunConfiguration jetConfiguration = (JetRunConfiguration)existingConfiguration.getConfiguration();
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ import com.theoryinpractice.testng.util.TestNGUtil;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.asJava.LightClassUtil;
|
import org.jetbrains.jet.asJava.LightClassUtil;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
|
import org.jetbrains.jet.plugin.JetPluginUtil;
|
||||||
|
|
||||||
public class JetTestNgConfigurationProducer extends TestNGConfigurationProducer {
|
public class JetTestNgConfigurationProducer extends TestNGConfigurationProducer {
|
||||||
@Override
|
@Override
|
||||||
@@ -51,6 +52,10 @@ public class JetTestNgConfigurationProducer extends TestNGConfigurationProducer
|
|||||||
Project project = context.getProject();
|
Project project = context.getProject();
|
||||||
PsiElement leaf = location.getPsiElement();
|
PsiElement leaf = location.getPsiElement();
|
||||||
|
|
||||||
|
if (!JetPluginUtil.isInSource(leaf)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(leaf.getContainingFile() instanceof JetFile)) {
|
if (!(leaf.getContainingFile() instanceof JetFile)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user