From 6ec6def8e3c304ea88e7c8df8edf7d29ff7f501a Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Mon, 7 Mar 2022 23:22:09 -0800 Subject: [PATCH] AA: reuse CoreJarFileSystem from KotlinCoreEnvironment in tests --- .../test/KtFe10FrontendApiTestConfiguratorService.kt | 4 +++- .../api/fir/FirFrontendApiTestConfiguratorService.kt | 7 +++++-- .../LibraryFrontendApiTestConfiguratorService.kt | 4 +++- ...ibrarySourceFrontendApiTestConfiguratorService.kt | 4 +++- .../impl/barebone/test/AbstractFrontendApiTest.kt | 12 ++++++++---- .../standalone/StandaloneModeConfiguratorService.kt | 12 ++++++++++-- .../FirLowLevelFrontendApiTestConfiguratorService.kt | 4 +++- .../test/services/CompilerConfigurationProvider.kt | 5 +++++ 8 files changed, 40 insertions(+), 12 deletions(-) diff --git a/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/KtFe10FrontendApiTestConfiguratorService.kt b/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/KtFe10FrontendApiTestConfiguratorService.kt index 38830274680..3e45aa7fa88 100644 --- a/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/KtFe10FrontendApiTestConfiguratorService.kt +++ b/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/KtFe10FrontendApiTestConfiguratorService.kt @@ -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, packagePartProvider: (GlobalSearchScope) -> PackagePartProvider, - projectStructureProvider: ProjectStructureProvider + projectStructureProvider: ProjectStructureProvider, + jarFileSystem: CoreJarFileSystem, ) { project.registerService(KtAnalysisSessionProvider::class.java, KtFe10AnalysisSessionProvider()) project.registerService(Fe10AnalysisFacade::class.java, CliFe10AnalysisFacade(project)) diff --git a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/FirFrontendApiTestConfiguratorService.kt b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/FirFrontendApiTestConfiguratorService.kt index 0743f03f373..a46a43ebfd6 100644 --- a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/FirFrontendApiTestConfiguratorService.kt +++ b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/FirFrontendApiTestConfiguratorService.kt @@ -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, packagePartProvider: (GlobalSearchScope) -> PackagePartProvider, - projectStructureProvider: ProjectStructureProvider + projectStructureProvider: ProjectStructureProvider, + jarFileSystem: CoreJarFileSystem, ) { FirLowLevelFrontendApiTestConfiguratorService.registerProjectServices( project, compilerConfig, files, packagePartProvider, - projectStructureProvider + projectStructureProvider, + jarFileSystem ) } diff --git a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/utils/libraries/binary/LibraryFrontendApiTestConfiguratorService.kt b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/utils/libraries/binary/LibraryFrontendApiTestConfiguratorService.kt index 0a13e2c47aa..ea64487f929 100644 --- a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/utils/libraries/binary/LibraryFrontendApiTestConfiguratorService.kt +++ b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/utils/libraries/binary/LibraryFrontendApiTestConfiguratorService.kt @@ -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, packagePartProvider: (GlobalSearchScope) -> PackagePartProvider, - projectStructureProvider: ProjectStructureProvider + projectStructureProvider: ProjectStructureProvider, + jarFileSystem: CoreJarFileSystem, ) { project.registerTestServices(files, packagePartProvider, projectStructureProvider) } diff --git a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/utils/libraries/source/LibrarySourceFrontendApiTestConfiguratorService.kt b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/utils/libraries/source/LibrarySourceFrontendApiTestConfiguratorService.kt index 603da1def94..660e737d802 100644 --- a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/utils/libraries/source/LibrarySourceFrontendApiTestConfiguratorService.kt +++ b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/utils/libraries/source/LibrarySourceFrontendApiTestConfiguratorService.kt @@ -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, packagePartProvider: (GlobalSearchScope) -> PackagePartProvider, - projectStructureProvider: ProjectStructureProvider + projectStructureProvider: ProjectStructureProvider, + jarFileSystem: CoreJarFileSystem, ) { project.registerTestServices(files, packagePartProvider, projectStructureProvider) } diff --git a/analysis/analysis-api-impl-barebone/tests/org/jetbrains/kotlin/analysis/api/impl/barebone/test/AbstractFrontendApiTest.kt b/analysis/analysis-api-impl-barebone/tests/org/jetbrains/kotlin/analysis/api/impl/barebone/test/AbstractFrontendApiTest.kt index a1b8e2bab37..48620bac10c 100644 --- a/analysis/analysis-api-impl-barebone/tests/org/jetbrains/kotlin/analysis/api/impl/barebone/test/AbstractFrontendApiTest.kt +++ b/analysis/analysis-api-impl-barebone/tests/org/jetbrains/kotlin/analysis/api/impl/barebone/test/AbstractFrontendApiTest.kt @@ -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, 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) ) } diff --git a/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/StandaloneModeConfiguratorService.kt b/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/StandaloneModeConfiguratorService.kt index e97fc47f8b1..2c2835828ec 100644 --- a/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/StandaloneModeConfiguratorService.kt +++ b/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/StandaloneModeConfiguratorService.kt @@ -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, 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) { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/base/FirLowLevelFrontendApiTestConfiguratorService.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/base/FirLowLevelFrontendApiTestConfiguratorService.kt index 389d4691de7..4db020b7ec4 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/base/FirLowLevelFrontendApiTestConfiguratorService.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/base/FirLowLevelFrontendApiTestConfiguratorService.kt @@ -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, packagePartProvider: (GlobalSearchScope) -> PackagePartProvider, - projectStructureProvider: ProjectStructureProvider + projectStructureProvider: ProjectStructureProvider, + jarFileSystem: CoreJarFileSystem, ) { project.registerTestServices(files, packagePartProvider, projectStructureProvider) } diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt index d5e9703a8eb..7e094308d04 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt @@ -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()