From d80572dac88db9f317c120918cc4457c6a9dea8a Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Tue, 18 Jan 2022 21:35:06 +0300 Subject: [PATCH] [IR, JS] KLIB ABI tests: create and clean up build directory with setUp()/tearDown() ^KT-50775 --- .../kotlin/klib/AbstractKlibABITestCase.kt | 80 +++++++++---------- 1 file changed, 38 insertions(+), 42 deletions(-) diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/klib/AbstractKlibABITestCase.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/klib/AbstractKlibABITestCase.kt index b842223efbc..6a2179faa6b 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/klib/AbstractKlibABITestCase.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/klib/AbstractKlibABITestCase.kt @@ -22,6 +22,16 @@ import java.io.File import kotlin.io.path.createTempDirectory abstract class AbstractKlibABITestCase : KtUsefulTestCase() { + protected lateinit var buildDir: File + + override fun setUp() { + super.setUp() + buildDir = createTempDirectory().toFile().also { it.mkdirs() } + } + + override fun tearDown() { + buildDir.deleteRecursively() + } private fun parseProjectInfo(testName: String, infoFile: File): ProjectInfo { return ProjectInfoParser(infoFile).parse(testName) @@ -36,7 +46,6 @@ abstract class AbstractKlibABITestCase : KtUsefulTestCase() { abstract fun stdlibPath(): String fun doTest(testPath: String) { - val testDir = File(testPath) val testName = testDir.name val projectInfoFile = File(testDir, PROJECT_INFO_FILE) @@ -53,15 +62,37 @@ abstract class AbstractKlibABITestCase : KtUsefulTestCase() { } val environment = createEnvironment() - val buildDir = createTempDirectory().toFile().also { it.mkdirs() } + val modulesBuildDirs = prepareBuildDirs(testDir, buildDir, projectInfo) - try { - doTestImpl(environment, testDir, buildDir, projectInfo, modulesMap) - } finally { - buildDir.deleteRecursively() + for (projectStep in projectInfo.steps) { + for (module in projectStep.order) { + val moduleTestDir = File(testDir, module) + val moduleBuildDir = modulesBuildDirs[module] ?: error("No module dir found for $module") + val moduleInfo = modulesMap[module] ?: error("No module $module found on step ${projectStep.id}") + val moduleStep = moduleInfo.steps[projectStep.id] + val moduleSourceDir = File(moduleBuildDir, SOURCE_DIR_NAME) + for (modification in moduleStep.modifications) { + modification.execute(moduleTestDir, moduleSourceDir) + } + + val klibFile = moduleBuildDir.toKlibFile(module) + if (klibFile.exists()) klibFile.delete() + val dependencies = collectDependenciesKlib(buildDir, moduleStep.dependencies) + buildKlib(environment, module, moduleSourceDir, dependencies, klibFile) + } } - } + val mainModuleDir = modulesBuildDirs[MAIN_MODULE_NAME] ?: error("No main module $MAIN_MODULE_NAME found") + val moduleKlibs = collectAllModulesKlibs(modulesBuildDirs) + + compileBinaryAndRun( + environment.project, + environment.configuration, + moduleKlibs, + mainModuleDir.toKlibFile(MAIN_MODULE_NAME).canonicalPath, + buildDir + ) + } private fun makeDirectoriesForModule(moduleName: String, buildDir: File): File { val moduleDir = File(buildDir, moduleName) @@ -94,7 +125,6 @@ abstract class AbstractKlibABITestCase : KtUsefulTestCase() { private fun collectDependenciesKlib(buildDir: File, dependencies: Collection): List { val result = ArrayList(dependencies.size) - return dependencies.mapTo(result) { dep -> if (dep == "stdlib") { stdlibPath() @@ -109,40 +139,6 @@ abstract class AbstractKlibABITestCase : KtUsefulTestCase() { return File(File(this, KLIB_DIR_NAME), "$name.klib") } - private fun doTestImpl( - environment: KotlinCoreEnvironment, - testDir: File, - buildDir: File, - projectInfo: ProjectInfo, - modulesInfo: Map - ) { - val modulesBuildDirs = prepareBuildDirs(testDir, buildDir, projectInfo) - - for (projectStep in projectInfo.steps) { - for (module in projectStep.order) { - val moduleTestDir = File(testDir, module) - val moduleBuildDir = modulesBuildDirs[module] ?: error("No module dir found for $module") - val moduleInfo = modulesInfo[module] ?: error("No module $module found on step ${projectStep.id}") - val moduleStep = moduleInfo.steps[projectStep.id] - val moduleSourceDir = File(moduleBuildDir, SOURCE_DIR_NAME) - for (modification in moduleStep.modifications) { - modification.execute(moduleTestDir, moduleSourceDir) - } - - val klibFile = moduleBuildDir.toKlibFile(module) - if (klibFile.exists()) klibFile.delete() - val dependencies = collectDependenciesKlib(buildDir, moduleStep.dependencies) - buildKlib(environment, module, moduleSourceDir, dependencies, klibFile) - } - } - - val mainModuleDir = modulesBuildDirs[MAIN_MODULE_NAME] ?: error("No main module $MAIN_MODULE_NAME found") - - val moduleKlibs = collectAllModulesKlibs(modulesBuildDirs) - - compileBinaryAndRun(environment.project, environment.configuration, moduleKlibs, mainModuleDir.toKlibFile(MAIN_MODULE_NAME).canonicalPath, buildDir) - } - private fun collectAllModulesKlibs(modulesBuildDirs: Map): Collection { val result = ArrayList(modulesBuildDirs.size + 1) result.add(stdlibPath())