AA: reuse CoreJarFileSystem from KotlinCoreEnvironment in tests

This commit is contained in:
Jinseong Jeon
2022-03-07 23:22:09 -08:00
committed by teamcity
parent 89725941df
commit 6ec6def8e3
8 changed files with 40 additions and 12 deletions
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.test
import com.intellij.mock.MockApplication
import com.intellij.mock.MockProject
import com.intellij.openapi.Disposable
import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analysis.api.InvalidWayOfUsingAnalysisSession
import org.jetbrains.kotlin.analysis.api.KtAnalysisSessionProvider
@@ -52,7 +53,8 @@ object KtFe10FrontendApiTestConfiguratorService : FrontendApiTestConfiguratorSer
compilerConfig: CompilerConfiguration,
files: List<KtFile>,
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
projectStructureProvider: ProjectStructureProvider
projectStructureProvider: ProjectStructureProvider,
jarFileSystem: CoreJarFileSystem,
) {
project.registerService(KtAnalysisSessionProvider::class.java, KtFe10AnalysisSessionProvider())
project.registerService(Fe10AnalysisFacade::class.java, CliFe10AnalysisFacade(project))
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.api.fir
import com.intellij.mock.MockApplication
import com.intellij.mock.MockProject
import com.intellij.openapi.Disposable
import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analysis.api.fir.utils.configureOptionalTestCompilerPlugin
import org.jetbrains.kotlin.analysis.api.impl.barebone.test.FrontendApiTestConfiguratorService
@@ -41,14 +42,16 @@ object FirFrontendApiTestConfiguratorService : FrontendApiTestConfiguratorServic
compilerConfig: CompilerConfiguration,
files: List<KtFile>,
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
projectStructureProvider: ProjectStructureProvider
projectStructureProvider: ProjectStructureProvider,
jarFileSystem: CoreJarFileSystem,
) {
FirLowLevelFrontendApiTestConfiguratorService.registerProjectServices(
project,
compilerConfig,
files,
packagePartProvider,
projectStructureProvider
projectStructureProvider,
jarFileSystem
)
}
@@ -10,6 +10,7 @@ import com.intellij.mock.MockApplication
import com.intellij.mock.MockProject
import com.intellij.openapi.Disposable
import com.intellij.openapi.extensions.LoadingOrder
import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem
import com.intellij.psi.ClassFileViewProviderFactory
import com.intellij.psi.FileTypeFileViewProviders
import com.intellij.psi.compiled.ClassFileDecompilers
@@ -42,7 +43,8 @@ object LibraryFrontendApiTestConfiguratorService : FrontendApiTestConfiguratorSe
compilerConfig: CompilerConfiguration,
files: List<KtFile>,
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
projectStructureProvider: ProjectStructureProvider
projectStructureProvider: ProjectStructureProvider,
jarFileSystem: CoreJarFileSystem,
) {
project.registerTestServices(files, packagePartProvider, projectStructureProvider)
}
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.api.fir.utils.libraries.source
import com.intellij.mock.MockApplication
import com.intellij.mock.MockProject
import com.intellij.openapi.Disposable
import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analysis.api.fir.FirFrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.impl.barebone.test.FrontendApiTestConfiguratorService
@@ -35,7 +36,8 @@ object LibrarySourceFrontendApiTestConfiguratorService : FrontendApiTestConfigur
compilerConfig: CompilerConfiguration,
files: List<KtFile>,
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
projectStructureProvider: ProjectStructureProvider
projectStructureProvider: ProjectStructureProvider,
jarFileSystem: CoreJarFileSystem,
) {
project.registerTestServices(files, packagePartProvider, projectStructureProvider)
}
@@ -10,6 +10,7 @@ import com.intellij.mock.MockProject
import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.util.Disposer
import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem
import com.intellij.psi.search.GlobalSearchScope
import com.intellij.testFramework.TestDataFile
import junit.framework.ComparisonFailure
@@ -61,7 +62,8 @@ interface FrontendApiTestConfiguratorService {
compilerConfig: CompilerConfiguration,
files: List<KtFile>,
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
projectStructureProvider: ProjectStructureProvider
projectStructureProvider: ProjectStructureProvider,
jarFileSystem: CoreJarFileSystem,
)
fun registerApplicationServices(application: MockApplication)
@@ -193,14 +195,16 @@ abstract class AbstractFrontendApiTest : TestWithDisposable() {
val ktFiles = getKtFilesFromModule(testServices, singleModule)
with(project as MockProject) {
val compilerConfiguration = testServices.compilerConfigurationProvider.getCompilerConfiguration(singleModule)
val compilerConfigurationProvider = testServices.compilerConfigurationProvider
val compilerConfiguration = compilerConfigurationProvider.getCompilerConfiguration(singleModule)
compilerConfiguration.addJavaSourceRoots(ktFiles.map { File(it.virtualFilePath) })
configurator.registerProjectServices(
this,
compilerConfiguration,
ktFiles,
testServices.compilerConfigurationProvider.getPackagePartProviderFactory(singleModule),
KotlinProjectStructureProviderTestImpl(testServices)
compilerConfigurationProvider.getPackagePartProviderFactory(singleModule),
KotlinProjectStructureProviderTestImpl(testServices),
compilerConfigurationProvider.getJarFileSystem(singleModule)
)
}
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.api.standalone
import com.intellij.mock.MockApplication
import com.intellij.mock.MockProject
import com.intellij.openapi.Disposable
import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analysis.api.fir.FirFrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.impl.barebone.test.FrontendApiTestConfiguratorService
@@ -30,9 +31,16 @@ object StandaloneModeConfiguratorService : FrontendApiTestConfiguratorService {
compilerConfig: CompilerConfiguration,
files: List<KtFile>,
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
projectStructureProvider: ProjectStructureProvider
projectStructureProvider: ProjectStructureProvider,
jarFileSystem: CoreJarFileSystem,
) {
configureProjectEnvironment(project, compilerConfig, files, packagePartProvider)
configureProjectEnvironment(
project,
compilerConfig,
files,
packagePartProvider,
jarFileSystem
)
}
override fun registerApplicationServices(application: MockApplication) {
@@ -9,6 +9,7 @@ import com.intellij.mock.MockApplication
import com.intellij.mock.MockProject
import com.intellij.openapi.Disposable
import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analysis.api.impl.barebone.test.FrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.ModuleRegistrarPreAnalysisHandler
@@ -44,7 +45,8 @@ object FirLowLevelFrontendApiTestConfiguratorService : FrontendApiTestConfigurat
compilerConfig: CompilerConfiguration,
files: List<KtFile>,
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
projectStructureProvider: ProjectStructureProvider
projectStructureProvider: ProjectStructureProvider,
jarFileSystem: CoreJarFileSystem,
) {
project.registerTestServices(files, packagePartProvider, projectStructureProvider)
}
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.test.services
import com.intellij.openapi.Disposable
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
@@ -55,6 +56,10 @@ abstract class CompilerConfigurationProvider : TestService {
val bootClasspath = mockJdk?.let { listOf(it) }
environment.registerJavac(kotlinFiles = ktFiles, bootClasspath = bootClasspath)
}
fun getJarFileSystem(module: TestModule): CoreJarFileSystem {
return getKotlinCoreEnvironment(module).projectEnvironment.environment.jarFileSystem as CoreJarFileSystem
}
}
val TestServices.compilerConfigurationProvider: CompilerConfigurationProvider by TestServices.testServiceAccessor()