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 abstract fun checkPsiFile(psiFile: PsiFile)
|
||||||
|
|
||||||
|
protected open fun checkStubConsistency(file: VirtualFile, decompiledText: String) {}
|
||||||
|
|
||||||
fun doTest(path: String) {
|
fun doTest(path: String) {
|
||||||
val fileToDecompile = getFileToDecompile()
|
val fileToDecompile = getFileToDecompile()
|
||||||
val psiFile = PsiManager.getInstance(project).findFile(fileToDecompile)!!
|
val psiFile = PsiManager.getInstance(project).findFile(fileToDecompile)!!
|
||||||
checkPsiFile(psiFile)
|
checkPsiFile(psiFile)
|
||||||
|
|
||||||
KotlinTestUtils.assertEqualsToFile(File(path.substring(0, path.length - 1) + ".expected.kt"), psiFile.text)
|
KotlinTestUtils.assertEqualsToFile(File(path.substring(0, path.length - 1) + ".expected.kt"), psiFile.text)
|
||||||
|
|
||||||
|
checkStubConsistency(fileToDecompile, psiFile.text)
|
||||||
|
|
||||||
checkThatFileWasParsedCorrectly(psiFile)
|
checkThatFileWasParsedCorrectly(psiFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+15
@@ -22,13 +22,28 @@ import com.intellij.openapi.roots.ModuleRootManager
|
|||||||
import com.intellij.openapi.roots.OrderRootType
|
import com.intellij.openapi.roots.OrderRootType
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import com.intellij.psi.PsiFile
|
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.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
|
import kotlin.test.assertTrue
|
||||||
|
|
||||||
abstract class AbstractDecompiledTextTest(baseDirectory: String, allowKotlinPackage: Boolean)
|
abstract class AbstractDecompiledTextTest(baseDirectory: String, allowKotlinPackage: Boolean)
|
||||||
: AbstractDecompiledTextBaseTest(baseDirectory, allowKotlinPackage = allowKotlinPackage) {
|
: AbstractDecompiledTextBaseTest(baseDirectory, allowKotlinPackage = allowKotlinPackage) {
|
||||||
override fun getFileToDecompile(): VirtualFile = getClassFile(TEST_PACKAGE, getTestName(false), myModule!!)
|
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) =
|
override fun checkPsiFile(psiFile: PsiFile) =
|
||||||
assertTrue(psiFile is KtClsFile, "Expecting decompiled kotlin file, was: " + psiFile::class.java)
|
assertTrue(psiFile is KtClsFile, "Expecting decompiled kotlin file, was: " + psiFile::class.java)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user