[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
|
||||
|
||||
private val programArgs = mutableListOf<String>().apply {
|
||||
add(executable.executable.executableFile.absolutePath)
|
||||
testRun.runParameters.forEach { it.applyTo(this) }
|
||||
}
|
||||
|
||||
private fun inputStreamFromTestParameter(): InputStream =
|
||||
private fun inputStreamFromTestParameter(): InputStream? =
|
||||
testRun.runParameters.firstIsInstanceOrNull<TestRunParameter.WithInputData>()
|
||||
?.let {
|
||||
ByteArrayInputStream(it.inputDataFile.readBytes())
|
||||
} ?: ByteArrayInputStream(byteArrayOf())
|
||||
}
|
||||
|
||||
override fun buildRun() = AbstractRun {
|
||||
val stdin = inputStreamFromTestParameter()
|
||||
val stdout = ByteArrayOutputStream()
|
||||
val stderr = ByteArrayOutputStream()
|
||||
val request = ExecuteRequest(
|
||||
executableAbsolutePath = executable.executable.executableFile.absolutePath,
|
||||
args = programArgs,
|
||||
stdin = stdin,
|
||||
stdout = stdout,
|
||||
stderr = stderr,
|
||||
timeout = testRun.checks.executionTimeoutCheck.timeout
|
||||
)
|
||||
val request = ExecuteRequest(programArgs[0]).apply {
|
||||
this.args.addAll(programArgs.drop(1))
|
||||
this.workingDirectory = executable.executable.executableFile.parentFile
|
||||
inputStreamFromTestParameter()?.let {
|
||||
this.stdin = it
|
||||
}
|
||||
this.stdout = stdout
|
||||
this.stderr = stderr
|
||||
this.timeout = testRun.checks.executionTimeoutCheck.timeout
|
||||
}
|
||||
val response = executor.execute(request)
|
||||
RunResult(
|
||||
testExecutable = executable,
|
||||
exitCode = response.exitCode,
|
||||
timeout = request.timeout,
|
||||
duration = response.executionTime,
|
||||
hasFinishedOnTime = request.timeout >= response.executionTime,
|
||||
hasFinishedOnTime = response.exitCode != null,
|
||||
processOutput = ProcessOutput(
|
||||
stdOut = outputFilter.filter(stdout.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.test.blackbox.support.TestName
|
||||
import org.jetbrains.kotlin.konan.test.blackbox.support.settings.*
|
||||
import org.jetbrains.kotlin.native.executors.EmulatorExecutor
|
||||
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.native.executors.*
|
||||
import org.jetbrains.kotlin.test.services.JUnit5Assertions.fail
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
@@ -20,22 +17,19 @@ internal object TestRunners {
|
||||
if (get<ForcedNoopTestRunner>().value) {
|
||||
NoopTestRunner
|
||||
} else with(get<KotlinNativeTargets>()) {
|
||||
if (testTarget == hostTarget) {
|
||||
LocalTestRunner(testRun)
|
||||
} else {
|
||||
val configurables = configurables
|
||||
val configurables = configurables
|
||||
|
||||
val executor = cached(
|
||||
when {
|
||||
configurables is ConfigurablesWithEmulator -> EmulatorExecutor(configurables)
|
||||
configurables is AppleConfigurables && configurables.targetTriple.isSimulator ->
|
||||
XcodeSimulatorExecutor(configurables)
|
||||
configurables is AppleConfigurables && RosettaExecutor.availableFor(configurables) -> RosettaExecutor(configurables)
|
||||
else -> runningOnUnsupportedTarget()
|
||||
}
|
||||
)
|
||||
RunnerWithExecutor(executor, testRun)
|
||||
}
|
||||
val executor = cached(
|
||||
when {
|
||||
testTarget == hostTarget -> HostExecutor()
|
||||
configurables is ConfigurablesWithEmulator -> EmulatorExecutor(configurables)
|
||||
configurables is AppleConfigurables && configurables.targetTriple.isSimulator ->
|
||||
XcodeSimulatorExecutor(configurables)
|
||||
configurables is AppleConfigurables && RosettaExecutor.availableFor(configurables) -> RosettaExecutor(configurables)
|
||||
else -> runningOnUnsupportedTarget()
|
||||
}
|
||||
)
|
||||
RunnerWithExecutor(executor, testRun)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user