From 83da5f61fde9dc1adba84d363d741b79fdd0956d Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Thu, 17 Dec 2020 13:59:18 +0100 Subject: [PATCH] [minor] Implement in-process test for main.kts cache mainly to ease debugging --- .../kotlin/mainKts/test/mainKtsIT.kt | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/libraries/tools/kotlin-main-kts-test/test/org/jetbrains/kotlin/mainKts/test/mainKtsIT.kt b/libraries/tools/kotlin-main-kts-test/test/org/jetbrains/kotlin/mainKts/test/mainKtsIT.kt index 6fda4248334..6b04bb8df39 100644 --- a/libraries/tools/kotlin-main-kts-test/test/org/jetbrains/kotlin/mainKts/test/mainKtsIT.kt +++ b/libraries/tools/kotlin-main-kts-test/test/org/jetbrains/kotlin/mainKts/test/mainKtsIT.kt @@ -94,6 +94,33 @@ class MainKtsIT { } } + @OptIn(ExperimentalPathApi::class) + @Test + fun testCacheInProcess() { + val script = File("$TEST_DATA_ROOT/import-test.main.kts").absolutePath + val cache = createTempDirectory("main.kts.test") + + try { + Assert.assertTrue(cache.exists() && cache.listDirectoryEntries("*.jar").isEmpty()) + runWithK2JVMCompilerAndMainKts(script, OUT_FROM_IMPORT_TEST, cacheDir = cache) + val cacheFile = cache.listDirectoryEntries("*.jar").firstOrNull() + Assert.assertTrue(cacheFile != null && cacheFile.exists()) + + // run generated jar with java + val javaExecutable = File(File(System.getProperty("java.home"), "bin"), "java") + val args = listOf(javaExecutable.absolutePath, "-jar", cacheFile!!.toString()) + runAndCheckResults( + args, OUT_FROM_IMPORT_TEST, + additionalEnvVars = listOf(COMPILED_SCRIPTS_CACHE_DIR_ENV_VAR to cache.toAbsolutePath().toString()) + ) + + // this run should use the cached script + runWithK2JVMCompilerAndMainKts(script, OUT_FROM_IMPORT_TEST, cacheDir = cache) + } finally { + cache.toFile().deleteRecursively() + } + } + @Test fun testHelloSerialization() { val paths = PathUtil.kotlinPathsForDistDirectory