[FIR IDE] Ensure prefixed test output file differs from the default one
This commit is contained in:
+1
-1
@@ -27,6 +27,6 @@ abstract class AbstractExpressionPsiTypeProviderTest : AbstractHLApiSingleFileTe
|
|||||||
appendLine("PsiType: $psiType")
|
appendLine("PsiType: $psiType")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -43,6 +43,6 @@ abstract class AbstractFirGetSuperTypesTest : AbstractHLApiSingleFileTest(FirFro
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-3
@@ -25,8 +25,6 @@ abstract class AbstractHLImportOptimizerTest : AbstractHLApiSingleModuleTest(Fir
|
|||||||
unusedImportPaths.forEach(::appendLine)
|
unusedImportPaths.forEach(::appendLine)
|
||||||
}
|
}
|
||||||
|
|
||||||
val expectedUnusedImports = testDataFileSibling(".imports")
|
testServices.assertions.assertEqualsToTestDataFileSibling(actualUnusedImports, extension = ".imports")
|
||||||
|
|
||||||
testServices.assertions.assertEqualsToFile(expectedUnusedImports, actualUnusedImports)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -44,7 +44,7 @@ abstract class AbstractPsiTypeProviderTest : AbstractHLApiSingleFileTest(FirFron
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getContainingKtLightClass(
|
private fun getContainingKtLightClass(
|
||||||
|
|||||||
+22
-2
@@ -11,6 +11,7 @@ import com.intellij.openapi.Disposable
|
|||||||
import com.intellij.openapi.application.ApplicationManager
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.util.Disposer
|
import com.intellij.openapi.util.Disposer
|
||||||
import com.intellij.testFramework.TestDataFile
|
import com.intellij.testFramework.TestDataFile
|
||||||
|
import junit.framework.ComparisonFailure
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
@@ -76,11 +77,30 @@ abstract class AbstractFrontendApiTest(val configurator: FrontendApiTestConfigur
|
|||||||
|
|
||||||
protected abstract fun doTestByFileStructure(ktFiles: List<KtFile>, moduleStructure: TestModuleStructure, testServices: TestServices)
|
protected abstract fun doTestByFileStructure(ktFiles: List<KtFile>, moduleStructure: TestModuleStructure, testServices: TestServices)
|
||||||
|
|
||||||
protected fun testDataFileSibling(extension: String): Path {
|
protected fun AssertionsService.assertEqualsToTestDataFileSibling(actual: String, extension: String = ".txt") {
|
||||||
|
val testPrefix = configurator.testPrefix
|
||||||
|
|
||||||
|
val expectedFile = getTestDataFileSiblingPath(extension, testPrefix = testPrefix)
|
||||||
|
assertEqualsToFile(expectedFile, actual)
|
||||||
|
|
||||||
|
if (testPrefix != null) {
|
||||||
|
val expectedFileWithoutPrefix = getTestDataFileSiblingPath(extension, testPrefix = null)
|
||||||
|
if (expectedFile != expectedFileWithoutPrefix) {
|
||||||
|
try {
|
||||||
|
assertEqualsToFile(expectedFileWithoutPrefix, actual)
|
||||||
|
} catch (ignored: ComparisonFailure) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
throw AssertionError("\"$expectedFile\" has the same content as \"$expectedFileWithoutPrefix\". Delete the prefixed file.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getTestDataFileSiblingPath(extension: String, testPrefix: String?): Path {
|
||||||
val extensionWithDot = "." + extension.removePrefix(".")
|
val extensionWithDot = "." + extension.removePrefix(".")
|
||||||
val baseName = testDataPath.nameWithoutExtension
|
val baseName = testDataPath.nameWithoutExtension
|
||||||
|
|
||||||
val testPrefix = configurator.testPrefix
|
|
||||||
if (testPrefix != null) {
|
if (testPrefix != null) {
|
||||||
val prefixedFile = testDataPath.resolveSibling("$baseName.$testPrefix$extensionWithDot")
|
val prefixedFile = testDataPath.resolveSibling("$baseName.$testPrefix$extensionWithDot")
|
||||||
if (prefixedFile.exists()) {
|
if (prefixedFile.exists()) {
|
||||||
|
|||||||
+1
-1
@@ -61,7 +61,7 @@ abstract class AbstractReferenceResolveTest(configurator: FrontendApiTestConfigu
|
|||||||
}
|
}
|
||||||
|
|
||||||
val actual = "Resolved to:\n$resolvedTo"
|
val actual = "Resolved to:\n$resolvedTo"
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun findReferencesAtCaret(mainKtFile: KtFile, caretPosition: Int): List<KtReference> =
|
private fun findReferencesAtCaret(mainKtFile: KtFile, caretPosition: Int): List<KtReference> =
|
||||||
|
|||||||
+1
-1
@@ -36,7 +36,7 @@ abstract class AbstractCompileTimeConstantEvaluatorTest(
|
|||||||
appendLine("constant_value: ${analyseForTest(expression) { constantValue?.stringRepresentation() }}")
|
appendLine("constant_value: ${analyseForTest(expression) { constantValue?.stringRepresentation() }}")
|
||||||
appendLine("constant: ${(constantValue as? KtLiteralConstantValue<*>)?.toConst()}")
|
appendLine("constant: ${(constantValue as? KtLiteralConstantValue<*>)?.toConst()}")
|
||||||
}
|
}
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KtConstantValue.stringRepresentation(): String {
|
private fun KtConstantValue.stringRepresentation(): String {
|
||||||
|
|||||||
+1
-1
@@ -33,6 +33,6 @@ abstract class AbstractExpectedExpressionTypeTest(
|
|||||||
appendLine("expected type: $actualExpectedTypeText")
|
appendLine("expected type: $actualExpectedTypeText")
|
||||||
}
|
}
|
||||||
|
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -34,6 +34,6 @@ abstract class AbstractFunctionClassKindTest (
|
|||||||
appendLine("expected type: $type")
|
appendLine("expected type: $type")
|
||||||
appendLine("functionClassKind: $functionClassKind")
|
appendLine("functionClassKind: $functionClassKind")
|
||||||
}
|
}
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -26,6 +26,6 @@ abstract class AbstractHLExpressionTypeTest(configurator: FrontendApiTestConfigu
|
|||||||
appendLine("expression: ${expression.text}")
|
appendLine("expression: ${expression.text}")
|
||||||
appendLine("type: $type")
|
appendLine("type: $type")
|
||||||
}
|
}
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -29,6 +29,6 @@ abstract class AbstractHLSmartCastInfoTest(configurator: FrontendApiTestConfigur
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -41,7 +41,7 @@ abstract class AbstractOverriddenDeclarationProviderTest(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KtAnalysisSession.renderSignature(symbol: KtCallableSymbol): String = buildString {
|
private fun KtAnalysisSession.renderSignature(symbol: KtCallableSymbol): String = buildString {
|
||||||
|
|||||||
+1
-1
@@ -36,6 +36,6 @@ abstract class AbstractRendererTest(configurator: FrontendApiTestConfiguratorSer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".rendered"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual, extension = ".rendered")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -32,6 +32,6 @@ abstract class AbstractWhenMissingCasesTest(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -40,7 +40,7 @@ abstract class AbstractResolveCallTest(configurator: FrontendApiTestConfigurator
|
|||||||
resolveCall(expression)?.stringRepresentation()
|
resolveCall(expression)?.stringRepresentation()
|
||||||
}
|
}
|
||||||
} ?: "null"
|
} ?: "null"
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KtAnalysisSession.resolveCall(element: PsiElement): KtCall? = when (element) {
|
private fun KtAnalysisSession.resolveCall(element: PsiElement): KtCall? = when (element) {
|
||||||
|
|||||||
+1
-1
@@ -37,6 +37,6 @@ abstract class AbstractFileScopeTest(configurator: FrontendApiTestConfiguratorSe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -56,7 +56,7 @@ abstract class AbstractSymbolTest(configurator: FrontendApiTestConfiguratorServi
|
|||||||
testServices: TestServices,
|
testServices: TestServices,
|
||||||
) {
|
) {
|
||||||
val actual = pointersWithRendered.joinToString(separator = "\n") { it.rendered }
|
val actual = pointersWithRendered.joinToString(separator = "\n") { it.rendered }
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun restoreSymbolsInOtherReadActionAndCompareResults(
|
private fun restoreSymbolsInOtherReadActionAndCompareResults(
|
||||||
@@ -72,7 +72,7 @@ abstract class AbstractSymbolTest(configurator: FrontendApiTestConfiguratorServi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
val actual = restored.joinToString(separator = "\n")
|
val actual = restored.joinToString(separator = "\n")
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-9
@@ -1,9 +0,0 @@
|
|||||||
interface Some
|
|
||||||
abstract class My<T : Some> {
|
|
||||||
abstract val x: T
|
|
||||||
abstract val y: My<Some>.T
|
|
||||||
abstract val z: My<Some>.T
|
|
||||||
abstract fun foo(arg: T)
|
|
||||||
abstract class Some : My<Some>.T
|
|
||||||
open inner class T
|
|
||||||
}
|
|
||||||
Vendored
-9
@@ -1,9 +0,0 @@
|
|||||||
interface Some
|
|
||||||
abstract class My<T : Some> {
|
|
||||||
open inner class T
|
|
||||||
abstract val x: T
|
|
||||||
abstract fun foo(arg: T)
|
|
||||||
abstract val y: My<Some>.T
|
|
||||||
abstract val z: My<Some>.T
|
|
||||||
abstract class Some : My<Some>.T
|
|
||||||
}
|
|
||||||
Vendored
-21
@@ -1,21 +0,0 @@
|
|||||||
KtConstructorSymbol:
|
|
||||||
annotatedType: [] java/util/ArrayList<E>
|
|
||||||
annotationClassIds: []
|
|
||||||
annotations: []
|
|
||||||
callableIdIfNonLocal: null
|
|
||||||
containingClassIdIfNonLocal: java/util/ArrayList
|
|
||||||
dispatchType: null
|
|
||||||
hasStableParameterNames: false
|
|
||||||
isExtension: false
|
|
||||||
isPrimary: false
|
|
||||||
origin: JAVA
|
|
||||||
receiverType: null
|
|
||||||
symbolKind: CLASS_MEMBER
|
|
||||||
typeParameters: [
|
|
||||||
KtTypeParameterSymbol(E)
|
|
||||||
]
|
|
||||||
valueParameters: [
|
|
||||||
KtValueParameterSymbol(p0)
|
|
||||||
]
|
|
||||||
visibility: Public
|
|
||||||
deprecationStatus: null
|
|
||||||
-13
@@ -1,13 +0,0 @@
|
|||||||
KtSamConstructorSymbol:
|
|
||||||
annotatedType: [] java/lang/Runnable
|
|
||||||
callableIdIfNonLocal: java/lang/Runnable
|
|
||||||
hasStableParameterNames: true
|
|
||||||
isExtension: false
|
|
||||||
name: Runnable
|
|
||||||
origin: SAM_CONSTRUCTOR
|
|
||||||
receiverType: null
|
|
||||||
symbolKind: SAM_CONSTRUCTOR
|
|
||||||
valueParameters: [
|
|
||||||
KtValueParameterSymbol(function)
|
|
||||||
]
|
|
||||||
deprecationStatus: null
|
|
||||||
+1
-1
@@ -99,7 +99,7 @@ abstract class AbstractFirLazyDeclarationResolveTest : AbstractLowLevelApiSingle
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), resultBuilder.toString())
|
testServices.assertions.assertEqualsToTestDataFileSibling(resultBuilder.toString())
|
||||||
}
|
}
|
||||||
|
|
||||||
override val enableTestInDependedMode: Boolean = false
|
override val enableTestInDependedMode: Boolean = false
|
||||||
|
|||||||
+2
-2
@@ -13,9 +13,9 @@ import org.jetbrains.kotlin.psi.KtAnnotated
|
|||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.KtFileAnnotationList
|
import org.jetbrains.kotlin.psi.KtFileAnnotationList
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
|
||||||
import org.jetbrains.kotlin.test.services.TestModuleStructure
|
import org.jetbrains.kotlin.test.services.TestModuleStructure
|
||||||
import org.jetbrains.kotlin.test.services.TestServices
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
|
import org.jetbrains.kotlin.test.services.assertions
|
||||||
import org.jetbrains.kotlin.test.util.findElementByCommentPrefix
|
import org.jetbrains.kotlin.test.util.findElementByCommentPrefix
|
||||||
|
|
||||||
abstract class AbstractFirOnAirResolveTest : AbstractLowLevelApiSingleFileTest() {
|
abstract class AbstractFirOnAirResolveTest : AbstractLowLevelApiSingleFileTest() {
|
||||||
@@ -35,7 +35,7 @@ abstract class AbstractFirOnAirResolveTest : AbstractLowLevelApiSingleFileTest()
|
|||||||
check(resolveState is FirModuleResolveStateImpl)
|
check(resolveState is FirModuleResolveStateImpl)
|
||||||
val firElement = LowLevelFirApiFacadeForResolveOnAir.onAirResolveElement(resolveState, place, onAir)
|
val firElement = LowLevelFirApiFacadeForResolveOnAir.onAirResolveElement(resolveState, place, onAir)
|
||||||
val rendered = firElement.render(FirRenderer.RenderMode.WithResolvePhases)
|
val rendered = firElement.render(FirRenderer.RenderMode.WithResolvePhases)
|
||||||
KotlinTestUtils.assertEqualsToFile(testDataFileSibling(".txt"), rendered)
|
testServices.assertions.assertEqualsToTestDataFileSibling(rendered)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -41,7 +41,7 @@ abstract class AbstractGetOrBuildFirTest : AbstractLowLevelApiSingleFileTest() {
|
|||||||
|FIR element rendered:
|
|FIR element rendered:
|
||||||
|${render(fir)}""".trimMargin()
|
|${render(fir)}""".trimMargin()
|
||||||
}
|
}
|
||||||
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getElementOfType(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices): PsiElement {
|
private fun getElementOfType(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices): PsiElement {
|
||||||
|
|||||||
+2
-1
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.psi.*
|
|||||||
import org.jetbrains.kotlin.psi.psiUtil.findDescendantOfType
|
import org.jetbrains.kotlin.psi.psiUtil.findDescendantOfType
|
||||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
|
import org.jetbrains.kotlin.test.services.JUnit5Assertions
|
||||||
import org.jetbrains.kotlin.test.services.TestModuleStructure
|
import org.jetbrains.kotlin.test.services.TestModuleStructure
|
||||||
import org.jetbrains.kotlin.test.services.TestServices
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
import org.jetbrains.kotlin.test.services.assertions
|
import org.jetbrains.kotlin.test.services.assertions
|
||||||
@@ -124,7 +125,7 @@ abstract class AbstractPartialRawFirBuilderTestCase : AbstractLowLevelApiSingleF
|
|||||||
)
|
)
|
||||||
|
|
||||||
val firDump = firElement.render(FirRenderer.RenderMode.WithFqNames)
|
val firDump = firElement.render(FirRenderer.RenderMode.WithFqNames)
|
||||||
KotlinTestUtils.assertEqualsToFile(testDataFileSibling(".txt"), firDump)
|
JUnit5Assertions.assertEqualsToTestDataFileSibling(firDump)
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
+2
-1
@@ -15,13 +15,14 @@ import org.jetbrains.kotlin.psi.KtFile
|
|||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.jetbrains.kotlin.test.services.TestModuleStructure
|
import org.jetbrains.kotlin.test.services.TestModuleStructure
|
||||||
import org.jetbrains.kotlin.test.services.TestServices
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
|
import org.jetbrains.kotlin.test.services.assertions
|
||||||
|
|
||||||
abstract class AbstractInnerDeclarationsResolvePhaseTest : AbstractLowLevelApiSingleFileTest() {
|
abstract class AbstractInnerDeclarationsResolvePhaseTest : AbstractLowLevelApiSingleFileTest() {
|
||||||
override fun doTestByFileStructure(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices) {
|
override fun doTestByFileStructure(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices) {
|
||||||
resolveWithClearCaches(ktFile) { resolveState ->
|
resolveWithClearCaches(ktFile) { resolveState ->
|
||||||
val firFile = ktFile.getOrBuildFirOfType<FirFile>(resolveState)
|
val firFile = ktFile.getOrBuildFirOfType<FirFile>(resolveState)
|
||||||
val actual = firFile.render(FirRenderer.RenderMode.WithResolvePhases)
|
val actual = firFile.render(FirRenderer.RenderMode.WithResolvePhases)
|
||||||
KotlinTestUtils.assertEqualsToFile(testDataFileSibling(".fir.txt"), actual)
|
testServices.assertions.assertEqualsToTestDataFileSibling(actual, extension = ".fir.txt")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user