Check stubs consistency in decompiler tests
This commit is contained in:
+6
@@ -44,11 +44,17 @@ abstract class AbstractDecompiledTextBaseTest(
|
||||
|
||||
protected abstract fun checkPsiFile(psiFile: PsiFile)
|
||||
|
||||
protected open fun checkStubConsistency(file: VirtualFile, decompiledText: String) {}
|
||||
|
||||
fun doTest(path: String) {
|
||||
val fileToDecompile = getFileToDecompile()
|
||||
val psiFile = PsiManager.getInstance(project).findFile(fileToDecompile)!!
|
||||
checkPsiFile(psiFile)
|
||||
|
||||
KotlinTestUtils.assertEqualsToFile(File(path.substring(0, path.length - 1) + ".expected.kt"), psiFile.text)
|
||||
|
||||
checkStubConsistency(fileToDecompile, psiFile.text)
|
||||
|
||||
checkThatFileWasParsedCorrectly(psiFile)
|
||||
}
|
||||
|
||||
|
||||
+15
@@ -22,13 +22,28 @@ import com.intellij.openapi.roots.ModuleRootManager
|
||||
import com.intellij.openapi.roots.OrderRootType
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.util.indexing.FileContentImpl
|
||||
import org.jetbrains.kotlin.idea.decompiler.classFile.KotlinClsStubBuilder
|
||||
import org.jetbrains.kotlin.idea.decompiler.classFile.KtClsFile
|
||||
import org.jetbrains.kotlin.idea.decompiler.stubBuilder.serializeToString
|
||||
import org.jetbrains.kotlin.psi.KtPsiFactory
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.KtFileStubBuilder
|
||||
import org.junit.Assert
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
abstract class AbstractDecompiledTextTest(baseDirectory: String, allowKotlinPackage: Boolean)
|
||||
: AbstractDecompiledTextBaseTest(baseDirectory, allowKotlinPackage = allowKotlinPackage) {
|
||||
override fun getFileToDecompile(): VirtualFile = getClassFile(TEST_PACKAGE, getTestName(false), myModule!!)
|
||||
|
||||
override fun checkStubConsistency(file: VirtualFile, decompiledText: String) {
|
||||
val fileWithDecompiledText = KtPsiFactory(project).createFile(decompiledText)
|
||||
val stubTreeFromDecompiledText = KtFileStubBuilder().buildStubTree(fileWithDecompiledText)
|
||||
val expectedText = stubTreeFromDecompiledText.serializeToString()
|
||||
|
||||
val fileStub = KotlinClsStubBuilder().buildFileStub(FileContentImpl.createByFile(file))!!
|
||||
Assert.assertEquals(expectedText, fileStub.serializeToString())
|
||||
}
|
||||
|
||||
override fun checkPsiFile(psiFile: PsiFile) =
|
||||
assertTrue(psiFile is KtClsFile, "Expecting decompiled kotlin file, was: " + psiFile::class.java)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user