[K/N][tests] Use HostExecutor in new test infra
This commit is contained in:
committed by
Space Team
parent
8c000b8319
commit
f2ba4a3e6e
+14
-12
@@ -27,34 +27,36 @@ internal class RunnerWithExecutor(
|
|||||||
get() = if (testRun.runParameters.has<TestRunParameter.WithTCTestLogger>()) TCTestOutputFilter else TestOutputFilter.NO_FILTERING
|
get() = if (testRun.runParameters.has<TestRunParameter.WithTCTestLogger>()) TCTestOutputFilter else TestOutputFilter.NO_FILTERING
|
||||||
|
|
||||||
private val programArgs = mutableListOf<String>().apply {
|
private val programArgs = mutableListOf<String>().apply {
|
||||||
|
add(executable.executable.executableFile.absolutePath)
|
||||||
testRun.runParameters.forEach { it.applyTo(this) }
|
testRun.runParameters.forEach { it.applyTo(this) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun inputStreamFromTestParameter(): InputStream =
|
private fun inputStreamFromTestParameter(): InputStream? =
|
||||||
testRun.runParameters.firstIsInstanceOrNull<TestRunParameter.WithInputData>()
|
testRun.runParameters.firstIsInstanceOrNull<TestRunParameter.WithInputData>()
|
||||||
?.let {
|
?.let {
|
||||||
ByteArrayInputStream(it.inputDataFile.readBytes())
|
ByteArrayInputStream(it.inputDataFile.readBytes())
|
||||||
} ?: ByteArrayInputStream(byteArrayOf())
|
}
|
||||||
|
|
||||||
override fun buildRun() = AbstractRun {
|
override fun buildRun() = AbstractRun {
|
||||||
val stdin = inputStreamFromTestParameter()
|
|
||||||
val stdout = ByteArrayOutputStream()
|
val stdout = ByteArrayOutputStream()
|
||||||
val stderr = ByteArrayOutputStream()
|
val stderr = ByteArrayOutputStream()
|
||||||
val request = ExecuteRequest(
|
val request = ExecuteRequest(programArgs[0]).apply {
|
||||||
executableAbsolutePath = executable.executable.executableFile.absolutePath,
|
this.args.addAll(programArgs.drop(1))
|
||||||
args = programArgs,
|
this.workingDirectory = executable.executable.executableFile.parentFile
|
||||||
stdin = stdin,
|
inputStreamFromTestParameter()?.let {
|
||||||
stdout = stdout,
|
this.stdin = it
|
||||||
stderr = stderr,
|
}
|
||||||
timeout = testRun.checks.executionTimeoutCheck.timeout
|
this.stdout = stdout
|
||||||
)
|
this.stderr = stderr
|
||||||
|
this.timeout = testRun.checks.executionTimeoutCheck.timeout
|
||||||
|
}
|
||||||
val response = executor.execute(request)
|
val response = executor.execute(request)
|
||||||
RunResult(
|
RunResult(
|
||||||
testExecutable = executable,
|
testExecutable = executable,
|
||||||
exitCode = response.exitCode,
|
exitCode = response.exitCode,
|
||||||
timeout = request.timeout,
|
timeout = request.timeout,
|
||||||
duration = response.executionTime,
|
duration = response.executionTime,
|
||||||
hasFinishedOnTime = request.timeout >= response.executionTime,
|
hasFinishedOnTime = response.exitCode != null,
|
||||||
processOutput = ProcessOutput(
|
processOutput = ProcessOutput(
|
||||||
stdOut = outputFilter.filter(stdout.toString("UTF-8")),
|
stdOut = outputFilter.filter(stdout.toString("UTF-8")),
|
||||||
stdErr = stderr.toString("UTF-8")
|
stdErr = stderr.toString("UTF-8")
|
||||||
|
|||||||
+13
-19
@@ -8,10 +8,7 @@ package org.jetbrains.kotlin.konan.test.blackbox.support.runner
|
|||||||
import org.jetbrains.kotlin.konan.target.*
|
import org.jetbrains.kotlin.konan.target.*
|
||||||
import org.jetbrains.kotlin.konan.test.blackbox.support.TestName
|
import org.jetbrains.kotlin.konan.test.blackbox.support.TestName
|
||||||
import org.jetbrains.kotlin.konan.test.blackbox.support.settings.*
|
import org.jetbrains.kotlin.konan.test.blackbox.support.settings.*
|
||||||
import org.jetbrains.kotlin.native.executors.EmulatorExecutor
|
import org.jetbrains.kotlin.native.executors.*
|
||||||
import org.jetbrains.kotlin.native.executors.Executor
|
|
||||||
import org.jetbrains.kotlin.native.executors.RosettaExecutor
|
|
||||||
import org.jetbrains.kotlin.native.executors.XcodeSimulatorExecutor
|
|
||||||
import org.jetbrains.kotlin.test.services.JUnit5Assertions.fail
|
import org.jetbrains.kotlin.test.services.JUnit5Assertions.fail
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
|
|
||||||
@@ -20,22 +17,19 @@ internal object TestRunners {
|
|||||||
if (get<ForcedNoopTestRunner>().value) {
|
if (get<ForcedNoopTestRunner>().value) {
|
||||||
NoopTestRunner
|
NoopTestRunner
|
||||||
} else with(get<KotlinNativeTargets>()) {
|
} else with(get<KotlinNativeTargets>()) {
|
||||||
if (testTarget == hostTarget) {
|
val configurables = configurables
|
||||||
LocalTestRunner(testRun)
|
|
||||||
} else {
|
|
||||||
val configurables = configurables
|
|
||||||
|
|
||||||
val executor = cached(
|
val executor = cached(
|
||||||
when {
|
when {
|
||||||
configurables is ConfigurablesWithEmulator -> EmulatorExecutor(configurables)
|
testTarget == hostTarget -> HostExecutor()
|
||||||
configurables is AppleConfigurables && configurables.targetTriple.isSimulator ->
|
configurables is ConfigurablesWithEmulator -> EmulatorExecutor(configurables)
|
||||||
XcodeSimulatorExecutor(configurables)
|
configurables is AppleConfigurables && configurables.targetTriple.isSimulator ->
|
||||||
configurables is AppleConfigurables && RosettaExecutor.availableFor(configurables) -> RosettaExecutor(configurables)
|
XcodeSimulatorExecutor(configurables)
|
||||||
else -> runningOnUnsupportedTarget()
|
configurables is AppleConfigurables && RosettaExecutor.availableFor(configurables) -> RosettaExecutor(configurables)
|
||||||
}
|
else -> runningOnUnsupportedTarget()
|
||||||
)
|
}
|
||||||
RunnerWithExecutor(executor, testRun)
|
)
|
||||||
}
|
RunnerWithExecutor(executor, testRun)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user