[K/N] Added a test for KT-56611

This commit is contained in:
Igor Chevdar
2023-02-14 15:17:31 +02:00
committed by Space Team
parent 3d05565b99
commit 951ebf4082
2 changed files with 39 additions and 4 deletions
@@ -31,7 +31,7 @@ class CachesAutoBuildTest : AbstractNativeSimpleTest() {
fun testSimple() {
val rootDir = File("$TEST_SUITE_PATH/simple")
val lib = compileToLibrary(rootDir.resolve("lib"), buildDir)
val main = compileToExecutable(rootDir.resolve("main"), autoCacheFrom = buildDir, lib)
val main = compileToExecutable(rootDir.resolve("main"), autoCacheFrom = buildDir, emptyList(), lib)
assertTrue(main.executableFile.exists())
assertTrue(autoCacheDir.resolve(cacheFlavor).resolve("lib").exists())
@@ -43,21 +43,41 @@ class CachesAutoBuildTest : AbstractNativeSimpleTest() {
val rootDir = File("$TEST_SUITE_PATH/dontCacheUserLib")
val externalLib = compileToLibrary(rootDir.resolve("externalLib"), buildDir.resolve("external"))
val userLib = compileToLibrary(rootDir.resolve("userLib"), buildDir.resolve("user"), externalLib)
val main = compileToExecutable(rootDir.resolve("main"), autoCacheFrom = buildDir.resolve("external"), externalLib, userLib)
val main = compileToExecutable(
rootDir.resolve("main"),
autoCacheFrom = buildDir.resolve("external"), emptyList(),
externalLib, userLib
)
assertTrue(main.executableFile.exists())
assertTrue(autoCacheDir.resolve(cacheFlavor).resolve("externalLib").exists())
assertFalse(autoCacheDir.resolve(cacheFlavor).resolve("userLib").exists())
}
private fun compileToExecutable(sourcesDir: File, autoCacheFrom: File, vararg dependencies: KLIB) =
@Test
@TestMetadata("cacheDirPrioritizesOverAutoCacheDir")
fun testCacheDirPrioritizesOverAutoCacheDir() {
val rootDir = File("$TEST_SUITE_PATH/simple")
val lib = compileToLibrary(rootDir.resolve("lib"), buildDir)
val cacheDir = buildDir.resolve("lib_cache")
cacheDir.mkdirs()
compileToStaticCache(lib, cacheDir)
val makePerFileCache = testRunSettings.get<CacheMode>().makePerFileCaches
assertTrue(cacheDir.resolve("lib-${if (makePerFileCache) "per-file-cache" else "cache"}").exists())
val main = compileToExecutable(rootDir.resolve("main"), autoCacheFrom = buildDir, listOf(cacheDir), lib)
assertTrue(main.executableFile.exists())
assertFalse(autoCacheDir.resolve(cacheFlavor).resolve("lib").exists())
}
private fun compileToExecutable(sourcesDir: File, autoCacheFrom: File, cacheDirectories: List<File>, vararg dependencies: KLIB) =
compileToExecutable(
sourcesDir,
freeCompilerArgs = TestCompilerArgs(
listOf(
"-Xauto-cache-from=${autoCacheFrom.absolutePath}",
"-Xauto-cache-dir=${autoCacheDir.absolutePath}",
)
) + cacheDirectories.map { "-Xcache-directory=${it.absolutePath}" }
),
*dependencies
).assertSuccess().resultingArtifact
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.konan.blackboxtest.support.TestRunnerType
import org.jetbrains.kotlin.konan.blackboxtest.support.compilation.ExecutableCompilation
import org.jetbrains.kotlin.konan.blackboxtest.support.compilation.ExistingDependency
import org.jetbrains.kotlin.konan.blackboxtest.support.compilation.LibraryCompilation
import org.jetbrains.kotlin.konan.blackboxtest.support.compilation.StaticCacheCompilation
import org.jetbrains.kotlin.konan.blackboxtest.support.compilation.TestCompilationArtifact
import org.jetbrains.kotlin.konan.blackboxtest.support.compilation.TestCompilationDependency
import org.jetbrains.kotlin.konan.blackboxtest.support.compilation.TestCompilationDependencyType
@@ -71,6 +72,20 @@ internal fun AbstractNativeSimpleTest.compileToExecutable(
internal fun AbstractNativeSimpleTest.compileToExecutable(testCase: TestCase, vararg dependencies: TestCompilationDependency<*>) =
compileToExecutable(testCase, dependencies.asList())
internal fun AbstractNativeSimpleTest.compileToStaticCache(
klib: TestCompilationArtifact.KLIB,
cacheDir: File,
): TestCompilationResult<out TestCompilationArtifact.KLIBStaticCache> {
val compilation = StaticCacheCompilation(
settings = testRunSettings,
freeCompilerArgs = TestCompilerArgs.EMPTY,
StaticCacheCompilation.Options.Regular,
dependencies = listOf(klib.asLibraryDependency()),
expectedArtifact = TestCompilationArtifact.KLIBStaticCache(cacheDir, klib)
)
return compilation.result
}
internal fun AbstractNativeSimpleTest.generateTestCaseWithSingleModule(
moduleDir: File?,
freeCompilerArgs: TestCompilerArgs = TestCompilerArgs.EMPTY