From 6b53f1c71e8b3ac235cff5b700702d9f34cb4f70 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Thu, 29 Sep 2016 09:34:14 +0200 Subject: [PATCH] run test on unnamed element in editor: choose element at caret in addition to data context retrieval (IDEA-159387) --- ...ractPatternBasedConfigurationProducer.java | 16 +++++++--- .../junit/JUnitRerunFailedTestsTest.java | 32 ++++++++++++++++++- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/testframework/AbstractPatternBasedConfigurationProducer.java b/java/execution/impl/src/com/intellij/execution/testframework/AbstractPatternBasedConfigurationProducer.java index 189f80bb6ed1..514a82daa105 100644 --- a/java/execution/impl/src/com/intellij/execution/testframework/AbstractPatternBasedConfigurationProducer.java +++ b/java/execution/impl/src/com/intellij/execution/testframework/AbstractPatternBasedConfigurationProducer.java @@ -165,11 +165,12 @@ public abstract class AbstractPatternBasedConfigurationProducer allCarets = editor.getCaretModel().getAllCarets(); - if (allCarets.size() > 1) { - final PsiFile editorFile = CommonDataKeys.PSI_FILE.getData(dataContext); - if (editorFile != null) { + if (editorFile != null) { + if (allCarets.size() > 1) { final Set methods = new LinkedHashSet<>(); for (Caret caret : allCarets) { ContainerUtil.addIfNotNull(methods, PsiTreeUtil.getParentOfType(editorFile.findElementAt(caret.getOffset()), PsiMethod.class)); @@ -178,9 +179,16 @@ public abstract class AbstractPatternBasedConfigurationProducer} public class Test2 {}"); + + final IdeaTestApplication testApplication = IdeaTestApplication.getInstance(); + try { + testApplication.setDataProvider(new TestDataProvider(myFixture.getProject()) { + @Override + public Object getData(@NonNls String dataId) { + if (CommonDataKeys.VIRTUAL_FILE_ARRAY.is(dataId)) { + return new VirtualFile[] {myFixture.getFile().getVirtualFile()}; + } + return super.getData(dataId); + } + }); + final PsiElement psiElement = myFixture.getFile().findElementAt(getEditor().getCaretModel().getOffset()); + final PatternConfigurationProducer configurationProducer = RunConfigurationProducer.getInstance(PatternConfigurationProducer.class); + assertFalse(configurationProducer.isMultipleElementsSelected(new ConfigurationContext(psiElement))); + } + finally { + testApplication.setDataProvider(null); + } + } +} \ No newline at end of file