Refactoring: utility for working with temp directory in FilePathsInKlibTest
diff --git a/compiler/tests/org/jetbrains/kotlin/klib/FilePathsInKlibTest.kt b/compiler/tests/org/jetbrains/kotlin/klib/FilePathsInKlibTest.kt index 066fd76..ef90652 100644 --- a/compiler/tests/org/jetbrains/kotlin/klib/FilePathsInKlibTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/klib/FilePathsInKlibTest.kt
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.test.util.KtTestUtil import org.jetbrains.kotlin.util.DummyLogger import java.io.File +import java.nio.file.Path class FilePathsInKlibTest : CodegenTestCase() { @@ -111,90 +112,81 @@ } fun testStableCompilation() { - val testFiles = createTestFiles() + withTempDir { dirA -> + withTempDir { dirB -> + val testFiles = createTestFiles() + val configuration = setupEnvironment() - val dirAPath = kotlin.io.path.createTempDirectory() - val dirBPath = kotlin.io.path.createTempDirectory() + configuration.put(CommonConfigurationKeys.KLIB_RELATIVE_PATH_BASES, listOf(dirA.canonicalPath, dirB.canonicalPath)) - val dirAFile = dirAPath.toFile().also { assert(it.isDirectory) } - val dirBFile = dirBPath.toFile().also { assert(it.isDirectory) } + val moduleA = compileKlib(testFiles, configuration, dirA) + val moduleB = compileKlib(testFiles, configuration, dirB) - try { - val configuration = setupEnvironment() - - configuration.put(CommonConfigurationKeys.KLIB_RELATIVE_PATH_BASES, listOf(dirAFile.canonicalPath, dirBFile.canonicalPath)) - - val moduleA = compileKlib(testFiles, configuration, dirAFile) - val moduleB = compileKlib(testFiles, configuration, dirBFile) - - assertEquals(moduleA.md5(), moduleB.md5()) - } finally { - dirAFile.deleteRecursively() - dirBFile.deleteRecursively() + assertEquals(moduleA.md5(), moduleB.md5()) + } } } fun testRelativePaths() { - val testFiles = createTestFiles() - val workingPath = kotlin.io.path.createTempDirectory() - val workingDirFile = workingPath.toFile().also { assert(it.isDirectory) } - - try { + withTempDir { testTempDir -> + val testFiles = createTestFiles() val configuration = setupEnvironment() - configuration.put(CommonConfigurationKeys.KLIB_RELATIVE_PATH_BASES, listOf(workingDirFile.canonicalPath)) + configuration.put(CommonConfigurationKeys.KLIB_RELATIVE_PATH_BASES, listOf(testTempDir.canonicalPath)) - val artifact = compileKlib(testFiles, configuration, workingDirFile) + val artifact = compileKlib(testFiles, configuration, testTempDir) val modulePaths = artifact.loadKlibFilePaths().map { it.replace("/", File.separator) } - val dirPaths = workingDirFile.listFiles { _, name -> name.endsWith(".kt") }!!.map { it.relativeTo(workingDirFile).path } + val dirPaths = testTempDir.listFiles { _, name -> name.endsWith(".kt") }!!.map { it.relativeTo(testTempDir).path } assertSameElements(modulePaths, dirPaths) - } finally { - workingDirFile.deleteRecursively() } } fun testAbsoluteNormalizedPath() { - val testFiles = createTestFiles() - val workingPath = kotlin.io.path.createTempDirectory() - val workingDirFile = workingPath.toFile().also { assert(it.isDirectory) } + withTempDir { testTempDir -> + val testFiles = createTestFiles() - try { val configuration = setupEnvironment() configuration.put(CommonConfigurationKeys.KLIB_NORMALIZE_ABSOLUTE_PATH, true) - val artifact = compileKlib(testFiles, configuration, workingDirFile) + val artifact = compileKlib(testFiles, configuration, testTempDir) val modulePaths = artifact.loadKlibFilePaths().map { it.replace("/", File.separator) } - val dirCanonicalPaths = workingDirFile.listFiles { _, name -> name.endsWith(".kt") }!!.map { it.canonicalPath } + val dirCanonicalPaths = testTempDir.listFiles { _, name -> name.endsWith(".kt") }!!.map { it.canonicalPath } assertSameElements(modulePaths, dirCanonicalPaths) - } finally { - workingDirFile.deleteRecursively() } } private fun String.normalizePath(): String = replace(File.separator, "/") fun testUnrelatedBase() { - val testFiles = createTestFiles() - val workingPath = kotlin.io.path.createTempDirectory() - val dummyPath = kotlin.io.path.createTempDirectory() + withTempDir { testTempDir -> + val testFiles = createTestFiles() + val dummyPath = kotlin.io.path.createTempDirectory() + val dummyFile = dummyPath.toFile().also { assert(it.isDirectory) } + try { + val configuration = setupEnvironment() + configuration.put(CommonConfigurationKeys.KLIB_RELATIVE_PATH_BASES, listOf(dummyFile.canonicalPath)) + + val artifact = compileKlib(testFiles, configuration, testTempDir) + val modulePaths = artifact.loadKlibFilePaths() + val dirCanonicalPaths = testTempDir.listFiles { _, name -> name.endsWith(".kt") }!!.map { it.canonicalPath } + + assertSameElements(modulePaths.map { it.normalizePath() }, dirCanonicalPaths.map { it.normalizePath() }) + } finally { + dummyFile.deleteRecursively() + } + } + } + + private fun withTempDir(f: (File) -> Unit) { + val workingPath: Path = kotlin.io.path.createTempDirectory() val workingDirFile = workingPath.toFile().also { assert(it.isDirectory) } - val dummyFile = dummyPath.toFile().also { assert(it.isDirectory) } - try { - val configuration = setupEnvironment() - configuration.put(CommonConfigurationKeys.KLIB_RELATIVE_PATH_BASES, listOf(dummyFile.canonicalPath)) - - val artifact = compileKlib(testFiles, configuration, workingDirFile) - val modulePaths = artifact.loadKlibFilePaths() - val dirCanonicalPaths = workingDirFile.listFiles { _, name -> name.endsWith(".kt") }!!.map { it.canonicalPath } - - assertSameElements(modulePaths.map { it.normalizePath() }, dirCanonicalPaths.map { it.normalizePath() }) + f(workingDirFile) } finally { workingDirFile.deleteRecursively() - dummyFile.deleteRecursively() } } } \ No newline at end of file