| /* |
| * Copyright 2010-2019 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.uast.test.kotlin |
| |
| import com.intellij.openapi.vfs.VirtualFile |
| import com.intellij.openapi.vfs.VirtualFileManager |
| import com.intellij.testFramework.LightProjectDescriptor |
| import com.intellij.util.io.URLUtil |
| import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase |
| import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor |
| import org.jetbrains.uast.UFile |
| import org.jetbrains.uast.UastFacade |
| import java.io.File |
| |
| abstract class AbstractKotlinUastLightCodeInsightFixtureTest : KotlinLightCodeInsightFixtureTestCase() { |
| |
| override fun getProjectDescriptor(): LightProjectDescriptor = |
| KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE_FULL_JDK |
| |
| fun getVirtualFile(testName: String): VirtualFile { |
| val testFile = TEST_KOTLIN_MODEL_DIR.listFiles { pathname -> pathname.nameWithoutExtension == testName }.first() |
| val vfs = VirtualFileManager.getInstance().getFileSystem(URLUtil.FILE_PROTOCOL) |
| return vfs.findFileByPath(testFile.canonicalPath)!! |
| } |
| |
| abstract fun check(testName: String, file: UFile) |
| |
| fun doTest(testName: String, checkCallback: (String, UFile) -> Unit = { testName, file -> check(testName, file) }) { |
| val virtualFile = getVirtualFile(testName) |
| |
| val psiFile = myFixture.configureByText(virtualFile.name, File(virtualFile.canonicalPath!!).readText()) |
| val uFile = UastFacade.convertElementWithParent(psiFile, null) ?: error("Can't get UFile for $testName") |
| checkCallback(testName, uFile as UFile) |
| } |
| |
| } |