Allow rendering extra tags for lineMarkers in tests

This commit is contained in:
Dmitry Savvinov
2020-01-20 16:34:40 +03:00
parent 5800160ee1
commit 4f5c3d1387
4 changed files with 22 additions and 10 deletions
@@ -446,7 +446,7 @@ public class KotlinTestUtils {
tags.add(new TagsTestDataUtil.TagInfo<>(selectionEnd, false, "selection")); tags.add(new TagsTestDataUtil.TagInfo<>(selectionEnd, false, "selection"));
} }
String afterText = TagsTestDataUtil.insertTagsInText(tags, editor.getDocument().getText()); String afterText = TagsTestDataUtil.insertTagsInText(tags, editor.getDocument().getText(), (TagsTestDataUtil.TagInfo t) -> null);
assertEqualsToFile(expectedFile, afterText); assertEqualsToFile(expectedFile, afterText);
} }
@@ -27,19 +27,20 @@ import org.jetbrains.annotations.Nullable;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class TagsTestDataUtil { public class TagsTestDataUtil {
public static String insertInfoTags(List<LineMarkerInfo> lineMarkers, boolean withDescription, String text) { public static String insertInfoTags(List<LineMarkerInfo> lineMarkers, boolean withDescription, String text) {
List<LineMarkerTagPoint> lineMarkerPoints = toLineMarkerTagPoints(lineMarkers, withDescription); List<LineMarkerTagPoint> lineMarkerPoints = toLineMarkerTagPoints(lineMarkers, withDescription);
return insertTagsInText(lineMarkerPoints, text); return insertTagsInText(lineMarkerPoints, text, (TagInfo t) -> null);
} }
public static String insertInfoTags(List<HighlightInfo> highlights, String text) { public static String insertInfoTags(List<HighlightInfo> highlights, String text) {
List<HighlightTagPoint> highlightPoints = toHighlightTagPoints(highlights); List<HighlightTagPoint> highlightPoints = toHighlightTagPoints(highlights);
return insertTagsInText(highlightPoints, text); return insertTagsInText(highlightPoints, text, (TagInfo t) -> null);
} }
public static String generateTextWithCaretAndSelection(@NotNull Editor editor) { public static String generateTextWithCaretAndSelection(@NotNull Editor editor) {
@@ -50,10 +51,10 @@ public class TagsTestDataUtil {
points.add(new TagInfo<String>(editor.getSelectionModel().getSelectionEnd(), false, "selection")); points.add(new TagInfo<String>(editor.getSelectionModel().getSelectionEnd(), false, "selection"));
} }
return insertTagsInText(points, editor.getDocument().getText()); return insertTagsInText(points, editor.getDocument().getText(), (TagInfo t) -> null);
} }
public static String insertTagsInText(List<? extends TagInfo> tags, String text) { public static String insertTagsInText(List<? extends TagInfo> tags, String text, Function<TagInfo, String> computeExtraAttributes) {
StringBuilder builder = new StringBuilder(text); StringBuilder builder = new StringBuilder(text);
// Need to sort tags for inserting them in reverse order to have valid offsets for yet not inserted tags. // Need to sort tags for inserting them in reverse order to have valid offsets for yet not inserted tags.
@@ -65,12 +66,21 @@ public class TagsTestDataUtil {
String tagText; String tagText;
if (point.isStart) { if (point.isStart) {
String attributesString = point.getAttributesString(); String attributesString = point.getAttributesString();
String extraAttributes = computeExtraAttributes.apply(point);
String allAttributes;
if (extraAttributes != null) {
allAttributes = attributesString + " " + extraAttributes;
} else {
allAttributes = attributesString;
}
String closeSuffix = point.isClosed ? "/" : ""; String closeSuffix = point.isClosed ? "/" : "";
if (attributesString.isEmpty()) { if (attributesString.isEmpty()) {
tagText = String.format("<%s%s>", point.getName(), closeSuffix); tagText = String.format("<%s%s>", point.getName(), closeSuffix);
} }
else { else {
tagText = String.format("<%s %s%s>", point.getName(), attributesString, closeSuffix); tagText = String.format("<%s %s%s>", point.getName(), allAttributes, closeSuffix);
} }
} }
else { else {
@@ -111,7 +121,7 @@ public class TagsTestDataUtil {
protected final boolean isStart; protected final boolean isStart;
protected final boolean isClosed; protected final boolean isClosed;
protected final boolean isFixed; protected final boolean isFixed;
protected final Data data; public final Data data;
public TagInfo(int offset, boolean start, Data data) { public TagInfo(int offset, boolean start, Data data) {
this(offset, start, false, false, data); this(offset, start, false, false, data);
@@ -108,13 +108,15 @@ abstract class GradleDaemonAnalyzerTestCase(
val highlightsTags: List<TagInfo<*>> = TagsTestDataUtil.toHighlightTagPoints(filteredHighlights) val highlightsTags: List<TagInfo<*>> = TagsTestDataUtil.toHighlightTagPoints(filteredHighlights)
val allTags = lineMarkersTags + highlightsTags val allTags = lineMarkersTags + highlightsTags
val actualTextWithTags = TagsTestDataUtil.insertTagsInText(allTags, text) val actualTextWithTags = TagsTestDataUtil.insertTagsInText(allTags, text) { renderAdditionalAttributeForTag(it) }
val physicalFileWithExpectedTestData = file.testDataFileByUserData val physicalFileWithExpectedTestData = file.testDataFileByUserData
KotlinTestUtils.assertEqualsToFile(physicalFileWithExpectedTestData, actualTextWithTags) KotlinTestUtils.assertEqualsToFile(physicalFileWithExpectedTestData, actualTextWithTags)
} }
protected open fun performAdditionalChecksAfterHighlighting(editor: Editor) { } protected open fun performAdditionalChecksAfterHighlighting(editor: Editor) { }
protected open fun renderAdditionalAttributeForTag(tag: TagInfo<*>): String? = null
} }
internal fun checkFiles( internal fun checkFiles(
@@ -62,7 +62,7 @@ class LambdaReturnValueHintsTest : KotlinLightCodeInsightFixtureTestCase() {
val expectedText = run { val expectedText = run {
val tags = if (editor.caretModel.offset > 0) listOf(CaretTag(editor)) else emptyList() val tags = if (editor.caretModel.offset > 0) listOf(CaretTag(editor)) else emptyList()
TagsTestDataUtil.insertTagsInText(tags, editor.document.text) TagsTestDataUtil.insertTagsInText(tags, editor.document.text) { null }
} }
// Clean test file from the hints tags // Clean test file from the hints tags
@@ -92,7 +92,7 @@ class LambdaReturnValueHintsTest : KotlinLightCodeInsightFixtureTestCase() {
tags.addAll(collectActualLineExtensionsTags()) tags.addAll(collectActualLineExtensionsTags())
TagsTestDataUtil.insertTagsInText(tags, editor.document.text) TagsTestDataUtil.insertTagsInText(tags, editor.document.text) { null }
} }
Assert.assertEquals(expectedText, actualText) Assert.assertEquals(expectedText, actualText)