FIR IDE: Add separate tests for FIR reference shortening
This commit is contained in:
@@ -180,6 +180,7 @@ import org.jetbrains.kotlin.samWithReceiver.AbstractSamWithReceiverScriptTest
|
|||||||
import org.jetbrains.kotlin.samWithReceiver.AbstractSamWithReceiverTest
|
import org.jetbrains.kotlin.samWithReceiver.AbstractSamWithReceiverTest
|
||||||
import org.jetbrains.kotlin.search.AbstractAnnotatedMembersSearchTest
|
import org.jetbrains.kotlin.search.AbstractAnnotatedMembersSearchTest
|
||||||
import org.jetbrains.kotlin.search.AbstractInheritorsSearchTest
|
import org.jetbrains.kotlin.search.AbstractInheritorsSearchTest
|
||||||
|
import org.jetbrains.kotlin.shortenRefs.AbstractFirShortenRefsTest
|
||||||
import org.jetbrains.kotlin.shortenRefs.AbstractShortenRefsTest
|
import org.jetbrains.kotlin.shortenRefs.AbstractShortenRefsTest
|
||||||
import org.jetbrains.kotlin.test.TargetBackend
|
import org.jetbrains.kotlin.test.TargetBackend
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.cli.AbstractProjectTemplateBuildFileGenerationTest
|
import org.jetbrains.kotlin.tools.projectWizard.cli.AbstractProjectTemplateBuildFileGenerationTest
|
||||||
@@ -1117,6 +1118,10 @@ fun main(args: Array<String>) {
|
|||||||
val pattern = "^([\\w\\-_]+)\\.(kt|kts)$"
|
val pattern = "^([\\w\\-_]+)\\.(kt|kts)$"
|
||||||
model("intentions/specifyTypeExplicitly", pattern = pattern)
|
model("intentions/specifyTypeExplicitly", pattern = pattern)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
testClass<AbstractFirShortenRefsTest> {
|
||||||
|
model("shortenRefsFir", pattern = KT_WITHOUT_DOTS_IN_NAME, testMethod = "doTestWithMuting")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
testGroup("idea/idea-fir/tests", "idea/idea-completion/testData") {
|
testGroup("idea/idea-fir/tests", "idea/idea-completion/testData") {
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
package org.jetbrains.kotlin.shortenRefs
|
||||||
|
|
||||||
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
|
import org.jetbrains.kotlin.AbstractImportsTest
|
||||||
|
import org.jetbrains.kotlin.idea.frontend.api.analyze
|
||||||
|
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||||
|
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||||
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
import org.jetbrains.kotlin.test.uitls.IgnoreTests
|
||||||
|
|
||||||
|
abstract class AbstractFirShortenRefsTest : AbstractImportsTest() {
|
||||||
|
override val captureExceptions: Boolean = false
|
||||||
|
|
||||||
|
override fun doTest(file: KtFile): String? {
|
||||||
|
val selectionModel = myFixture.editor.selectionModel
|
||||||
|
if (!selectionModel.hasSelection()) error("No selection in input file")
|
||||||
|
|
||||||
|
val (startOffset, endOffset) = runReadAction { selectionModel.selectionStart to selectionModel.selectionEnd }
|
||||||
|
|
||||||
|
val shortenings = executeOnPooledThread {
|
||||||
|
runReadAction {
|
||||||
|
analyze(file) {
|
||||||
|
collectPossibleReferenceShortenings(file, startOffset, endOffset)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
project.executeWriteCommand("") {
|
||||||
|
shortenings.invokeShortening()
|
||||||
|
}
|
||||||
|
|
||||||
|
selectionModel.removeSelection()
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
override val runTestInWriteCommand: Boolean = false
|
||||||
|
|
||||||
|
protected fun doTestWithMuting(unused: String) {
|
||||||
|
IgnoreTests.runTestIfEnabledByFileDirective(testDataFile().toPath(), IgnoreTests.DIRECTIVES.FIR_COMPARISON, ".after") {
|
||||||
|
doTest(unused)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override val nameCountToUseStarImportDefault: Int
|
||||||
|
get() = Integer.MAX_VALUE
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun <R> executeOnPooledThread(action: () -> R): R =
|
||||||
|
ApplicationManager.getApplication().executeOnPooledThread<R> { action() }.get()
|
||||||
+49
@@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.shortenRefs;
|
||||||
|
|
||||||
|
import com.intellij.testFramework.TestDataPath;
|
||||||
|
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
|
||||||
|
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
||||||
|
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||||
|
import org.jetbrains.kotlin.test.TestMetadata;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
|
||||||
|
@SuppressWarnings("all")
|
||||||
|
@TestMetadata("idea/testData/shortenRefsFir")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public class FirShortenRefsTestGenerated extends AbstractFirShortenRefsTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest(this::doTestWithMuting, this, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInShortenRefsFir() throws Exception {
|
||||||
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/shortenRefsFir"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("idea/testData/shortenRefsFir/types")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class Types extends AbstractFirShortenRefsTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest(this::doTestWithMuting, this, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInTypes() throws Exception {
|
||||||
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/shortenRefsFir/types"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("ParameterType.kt")
|
||||||
|
public void testParameterType() throws Exception {
|
||||||
|
runTest("idea/testData/shortenRefsFir/types/ParameterType.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
// FIR_COMPARISON
|
||||||
|
package test
|
||||||
|
|
||||||
|
class T
|
||||||
|
|
||||||
|
<selection>fun foo(t: test.T) {}</selection>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
// FIR_COMPARISON
|
||||||
|
package test
|
||||||
|
|
||||||
|
class T
|
||||||
|
|
||||||
|
fun foo(t: T) {}
|
||||||
Reference in New Issue
Block a user