[FIR IDE] Ensure prefixed test output file differs from the default one

This commit is contained in:
Yan Zhulanow
2021-11-01 19:38:10 +09:00
parent 8916626cc3
commit 8d18fa2d00
26 changed files with 47 additions and 79 deletions
@@ -27,6 +27,6 @@ abstract class AbstractExpressionPsiTypeProviderTest : AbstractHLApiSingleFileTe
appendLine("PsiType: $psiType")
}
}
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
}
@@ -43,6 +43,6 @@ abstract class AbstractFirGetSuperTypesTest : AbstractHLApiSingleFileTest(FirFro
}
}
}
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
}
@@ -25,8 +25,6 @@ abstract class AbstractHLImportOptimizerTest : AbstractHLApiSingleModuleTest(Fir
unusedImportPaths.forEach(::appendLine)
}
val expectedUnusedImports = testDataFileSibling(".imports")
testServices.assertions.assertEqualsToFile(expectedUnusedImports, actualUnusedImports)
testServices.assertions.assertEqualsToTestDataFileSibling(actualUnusedImports, extension = ".imports")
}
}
@@ -44,7 +44,7 @@ abstract class AbstractPsiTypeProviderTest : AbstractHLApiSingleFileTest(FirFron
}
}
}
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
private fun getContainingKtLightClass(
@@ -11,6 +11,7 @@ import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.util.Disposer
import com.intellij.testFramework.TestDataFile
import junit.framework.ComparisonFailure
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
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 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 baseName = testDataPath.nameWithoutExtension
val testPrefix = configurator.testPrefix
if (testPrefix != null) {
val prefixedFile = testDataPath.resolveSibling("$baseName.$testPrefix$extensionWithDot")
if (prefixedFile.exists()) {
@@ -61,7 +61,7 @@ abstract class AbstractReferenceResolveTest(configurator: FrontendApiTestConfigu
}
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> =
@@ -36,7 +36,7 @@ abstract class AbstractCompileTimeConstantEvaluatorTest(
appendLine("constant_value: ${analyseForTest(expression) { constantValue?.stringRepresentation() }}")
appendLine("constant: ${(constantValue as? KtLiteralConstantValue<*>)?.toConst()}")
}
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
private fun KtConstantValue.stringRepresentation(): String {
@@ -33,6 +33,6 @@ abstract class AbstractExpectedExpressionTypeTest(
appendLine("expected type: $actualExpectedTypeText")
}
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
}
@@ -34,6 +34,6 @@ abstract class AbstractFunctionClassKindTest (
appendLine("expected type: $type")
appendLine("functionClassKind: $functionClassKind")
}
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
}
@@ -26,6 +26,6 @@ abstract class AbstractHLExpressionTypeTest(configurator: FrontendApiTestConfigu
appendLine("expression: ${expression.text}")
appendLine("type: $type")
}
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
}
@@ -29,6 +29,6 @@ abstract class AbstractHLSmartCastInfoTest(configurator: FrontendApiTestConfigur
}
}
}
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
}
@@ -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 {
@@ -36,6 +36,6 @@ abstract class AbstractRendererTest(configurator: FrontendApiTestConfiguratorSer
}
}
testServices.assertions.assertEqualsToFile(testDataFileSibling(".rendered"), actual)
testServices.assertions.assertEqualsToTestDataFileSibling(actual, extension = ".rendered")
}
}
@@ -32,6 +32,6 @@ abstract class AbstractWhenMissingCasesTest(
}
}
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
}
@@ -40,7 +40,7 @@ abstract class AbstractResolveCallTest(configurator: FrontendApiTestConfigurator
resolveCall(expression)?.stringRepresentation()
}
} ?: "null"
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
private fun KtAnalysisSession.resolveCall(element: PsiElement): KtCall? = when (element) {
@@ -37,6 +37,6 @@ abstract class AbstractFileScopeTest(configurator: FrontendApiTestConfiguratorSe
}
}
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
}
@@ -56,7 +56,7 @@ abstract class AbstractSymbolTest(configurator: FrontendApiTestConfiguratorServi
testServices: TestServices,
) {
val actual = pointersWithRendered.joinToString(separator = "\n") { it.rendered }
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
private fun restoreSymbolsInOtherReadActionAndCompareResults(
@@ -72,7 +72,7 @@ abstract class AbstractSymbolTest(configurator: FrontendApiTestConfiguratorServi
}
}
val actual = restored.joinToString(separator = "\n")
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
}
@@ -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
}
@@ -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
}
@@ -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
@@ -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
@@ -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
@@ -13,9 +13,9 @@ import org.jetbrains.kotlin.psi.KtAnnotated
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile
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.TestServices
import org.jetbrains.kotlin.test.services.assertions
import org.jetbrains.kotlin.test.util.findElementByCommentPrefix
abstract class AbstractFirOnAirResolveTest : AbstractLowLevelApiSingleFileTest() {
@@ -35,7 +35,7 @@ abstract class AbstractFirOnAirResolveTest : AbstractLowLevelApiSingleFileTest()
check(resolveState is FirModuleResolveStateImpl)
val firElement = LowLevelFirApiFacadeForResolveOnAir.onAirResolveElement(resolveState, place, onAir)
val rendered = firElement.render(FirRenderer.RenderMode.WithResolvePhases)
KotlinTestUtils.assertEqualsToFile(testDataFileSibling(".txt"), rendered)
testServices.assertions.assertEqualsToTestDataFileSibling(rendered)
}
}
@@ -41,7 +41,7 @@ abstract class AbstractGetOrBuildFirTest : AbstractLowLevelApiSingleFileTest() {
|FIR element rendered:
|${render(fir)}""".trimMargin()
}
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
private fun getElementOfType(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices): PsiElement {
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.findDescendantOfType
import org.jetbrains.kotlin.test.InTextDirectivesUtils
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.TestServices
import org.jetbrains.kotlin.test.services.assertions
@@ -124,7 +125,7 @@ abstract class AbstractPartialRawFirBuilderTestCase : AbstractLowLevelApiSingleF
)
val firDump = firElement.render(FirRenderer.RenderMode.WithFqNames)
KotlinTestUtils.assertEqualsToFile(testDataFileSibling(".txt"), firDump)
JUnit5Assertions.assertEqualsToTestDataFileSibling(firDump)
}
companion object {
@@ -15,13 +15,14 @@ import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.services.TestModuleStructure
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.assertions
abstract class AbstractInnerDeclarationsResolvePhaseTest : AbstractLowLevelApiSingleFileTest() {
override fun doTestByFileStructure(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices) {
resolveWithClearCaches(ktFile) { resolveState ->
val firFile = ktFile.getOrBuildFirOfType<FirFile>(resolveState)
val actual = firFile.render(FirRenderer.RenderMode.WithResolvePhases)
KotlinTestUtils.assertEqualsToFile(testDataFileSibling(".fir.txt"), actual)
testServices.assertions.assertEqualsToTestDataFileSibling(actual, extension = ".fir.txt")
}
}
}