diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExecutorService.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExecutorService.kt index 83e42b7c0cc..ab984d0c3ef 100644 --- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExecutorService.kt +++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/ExecutorService.kt @@ -50,6 +50,7 @@ fun create(project: Project): ExecutorService { val configurables = project.testTargetConfigurables return when { + project.compileOnlyTests -> noopExecutor(project) project.hasProperty("remote") -> sshExecutor(project, testTarget) configurables is WasmConfigurables -> wasmExecutor(project) configurables is ConfigurablesWithEmulator && testTarget != HostManager.host -> emulatorExecutor(project, testTarget) @@ -59,6 +60,19 @@ fun create(project: Project): ExecutorService { } } +private fun noopExecutor(project: Project) = object : ExecutorService { + override val project: Project + get() = project + + override fun execute(action: Action): ExecResult? = object : ExecResult { + override fun getExitValue(): Int = 0 + + override fun assertNormalExitValue(): ExecResult = this + + override fun rethrowFailure(): ExecResult = this + } +} + private fun wasmExecutor(project: Project) = object : ExecutorService { val absoluteTargetToolchain = project.testTargetConfigurables.absoluteTargetToolchain diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/FrameworkTest.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/FrameworkTest.kt index 34bc5d74eec..cb64e7f80a4 100644 --- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/FrameworkTest.kt +++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/FrameworkTest.kt @@ -186,6 +186,9 @@ open class FrameworkTest : DefaultTask(), KonanTestExecutable { // Build test executable as a first action of the task before executing the test buildTestExecutable() doBeforeRun?.execute(this) + if (project.compileOnlyTests) { + return + } runTest(executorService = project.executor, testExecutable = Paths.get(executable)) } diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/KotlinNativeTest.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/KotlinNativeTest.kt index 11f372275b6..c1653cf648c 100644 --- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/KotlinNativeTest.kt +++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/KotlinNativeTest.kt @@ -164,6 +164,9 @@ open class KonanGTest : KonanTest() { @TaskAction override fun run() { doBeforeRun?.execute(this) + if (project.compileOnlyTests) { + return + } runProcess( executor = { project.executor.execute(it) }, executable = executable, @@ -302,6 +305,9 @@ open class KonanLocalTest : KonanTest() { @TaskAction override fun run() { doBeforeRun?.execute(this) + if (project.compileOnlyTests) { + return + } val times = if (multiRuns && multiArguments != null) multiArguments!!.size else 1 var output = ProcessOutput("", "", 0) for (i in 1..times) { diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/Utils.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/Utils.kt index eea006e6adf..78c264f233b 100644 --- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/Utils.kt +++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/Utils.kt @@ -86,6 +86,9 @@ val Project.testOutputExternal val Project.cacheRedirectorEnabled get() = findProperty("cacheRedirectorEnabled")?.toString()?.toBoolean() ?: false +val Project.compileOnlyTests: Boolean + get() = hasProperty("compile-only-tests") + fun Project.redirectIfEnabled(url: String):String = if (cacheRedirectorEnabled) { val base = URL(url) "https://cache-redirector.jetbrains.com/${base.host}/${base.path}"