mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
move test breadcrumbs fetching to CodeInsightTestFixture
This commit is contained in:
+8
@@ -43,6 +43,7 @@ import com.intellij.testFramework.EditorTestUtil;
|
||||
import com.intellij.testFramework.ExpectedHighlightingData;
|
||||
import com.intellij.testFramework.HighlightTestInfo;
|
||||
import com.intellij.testFramework.TestDataFile;
|
||||
import com.intellij.ui.components.breadcrumbs.Crumb;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.util.Consumer;
|
||||
import org.intellij.lang.annotations.MagicConstant;
|
||||
@@ -592,5 +593,12 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture {
|
||||
@NotNull
|
||||
List<Object> getGotoClassResults(@NotNull String pattern, boolean searchEverywhere, @Nullable PsiElement contextForSorting);
|
||||
|
||||
/**
|
||||
* Get breadcrumbs to be generated for the current cursor position in the loaded file
|
||||
* @return a list of the breadcrumbs in the order from the topmost element crumb to the deepest
|
||||
*/
|
||||
@NotNull
|
||||
List<Crumb> getBreadcrumbsAtCaret();
|
||||
|
||||
void saveText(@NotNull VirtualFile file, @NotNull String text);
|
||||
}
|
||||
+28
@@ -56,6 +56,7 @@ import com.intellij.ide.util.gotoByName.GotoClassModel2;
|
||||
import com.intellij.injected.editor.DocumentWindow;
|
||||
import com.intellij.injected.editor.EditorWindow;
|
||||
import com.intellij.internal.DumpLookupElementWeights;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.lang.LanguageStructureViewBuilder;
|
||||
import com.intellij.lang.annotation.HighlightSeverity;
|
||||
import com.intellij.mock.MockProgressIndicator;
|
||||
@@ -115,6 +116,8 @@ import com.intellij.rt.execution.junit.FileComparisonFailure;
|
||||
import com.intellij.testFramework.*;
|
||||
import com.intellij.testFramework.fixtures.*;
|
||||
import com.intellij.testFramework.utils.inlays.InlayHintsChecker;
|
||||
import com.intellij.ui.breadcrumbs.BreadcrumbsProvider;
|
||||
import com.intellij.ui.components.breadcrumbs.Crumb;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -1779,6 +1782,31 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
|
||||
return results;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<Crumb> getBreadcrumbsAtCaret() {
|
||||
PsiElement element = getFile().findElementAt(getCaretOffset());
|
||||
if (element == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
final Language language = element.getContainingFile().getLanguage();
|
||||
|
||||
final BreadcrumbsProvider provider = ContainerUtil.find(BreadcrumbsProvider.EP_NAME.getExtensions(),
|
||||
p -> Arrays.asList(p.getLanguages()).contains(language));
|
||||
if (provider == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
List<Crumb> result = new ArrayList<>();
|
||||
while (element != null) {
|
||||
if (provider.acceptElement(element)) {
|
||||
result.add(new Crumb.Impl(provider.getElementIcon(element), provider.getElementInfo(element), provider.getElementTooltip(element)));
|
||||
}
|
||||
element = provider.getParent(element);
|
||||
}
|
||||
return ContainerUtil.reverse(result);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private ChooseByNameBase getMockChooseByNamePopup(@Nullable PsiElement contextForSorting) {
|
||||
final Project project = getProject();
|
||||
|
||||
@@ -15,22 +15,11 @@
|
||||
*/
|
||||
package org.jetbrains.yaml.breadcrumbs;
|
||||
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.openapi.editor.Caret;
|
||||
import com.intellij.openapi.editor.CaretModel;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.testFramework.fixtures.CodeInsightTestFixture;
|
||||
import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase;
|
||||
import com.intellij.ui.breadcrumbs.BreadcrumbsProvider;
|
||||
import com.intellij.ui.components.breadcrumbs.Crumb;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.yaml.YAMLFileType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class YAMLBreadcrumbsTest extends LightPlatformCodeInsightFixtureTestCase {
|
||||
@@ -80,38 +69,13 @@ public class YAMLBreadcrumbsTest extends LightPlatformCodeInsightFixtureTestCase
|
||||
.collect(Collectors.toList()).stream()
|
||||
.map((offset) -> {
|
||||
caretModel.moveToOffset(offset);
|
||||
return getBreadcrumbs(myFixture).stream()
|
||||
return myFixture.getBreadcrumbsAtCaret().stream()
|
||||
.map(crumb -> "[" + crumb.getText() + ";" + crumb.getTooltip() + "]")
|
||||
.reduce((left, right) -> right + left).orElse("[]");
|
||||
.reduce((left, right) -> left + right).orElse("[]");
|
||||
})
|
||||
.reduce((left, right) -> left + "\n------\n" + right).orElse("");
|
||||
|
||||
assertSameLines(OUTPUT, result);
|
||||
}
|
||||
|
||||
// TODO move this method and class to platform when breadcrumbs are moved there, too
|
||||
@NotNull
|
||||
private static List<Crumb> getBreadcrumbs(@NotNull CodeInsightTestFixture fixture) {
|
||||
PsiElement element = fixture.getFile().findElementAt(fixture.getCaretOffset());
|
||||
if (element == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
final Language language = element.getContainingFile().getLanguage();
|
||||
|
||||
final BreadcrumbsProvider provider = ContainerUtil.find(BreadcrumbsProvider.EP_NAME.getExtensions(),
|
||||
(p) -> Arrays.asList(p.getLanguages()).contains(language));
|
||||
if (provider == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
List<Crumb> result = new ArrayList<>();
|
||||
while (element != null) {
|
||||
if (provider.acceptElement(element)) {
|
||||
result.add(new Crumb.Impl(provider.getElementIcon(element), provider.getElementInfo(element), provider.getElementTooltip(element)));
|
||||
}
|
||||
element = provider.getParent(element);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user