diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/TestDirectives.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/TestDirectives.kt index 4b69f2632be..e3305c418d2 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/TestDirectives.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/TestDirectives.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.INPUT_DAT import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.KIND import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.LLDB_TRACE import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.OUTPUT_DATA_FILE +import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.PROGRAM_ARGS import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.TEST_RUNNER import org.jetbrains.kotlin.konan.test.blackbox.support.runner.TestRunCheck import org.jetbrains.kotlin.konan.test.blackbox.support.runner.TestRunCheck.OutputDataFile @@ -181,6 +182,13 @@ internal object TestDirectives : SimpleDirectivesContainer() { Declares this test is expected to fail in described run configuration on K2 frontend. """.trimIndent() ) + + val PROGRAM_ARGS by stringDirective( + description = """ + Command line arguments to pass to the executable. + Note that this directive makes sense only in combination with // KIND: STANDALONE_NO_TR + """.trimIndent() + ) } internal enum class TestKind { @@ -386,6 +394,8 @@ private fun parseFileBasedDirective( return file } +internal fun parseProgramArguments(registeredDirectives: RegisteredDirectives): List = registeredDirectives[PROGRAM_ARGS] + internal class Location(private val testDataFile: File, val lineNumber: Int? = null) { override fun toString() = buildString { append(testDataFile.path) diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/group/StandardTestCaseGroupProvider.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/group/StandardTestCaseGroupProvider.kt index 0deff8b790b..8c7394c7e13 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/group/StandardTestCaseGroupProvider.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/group/StandardTestCaseGroupProvider.kt @@ -230,7 +230,8 @@ internal class StandardTestCaseGroupProvider : TestCaseGroupProvider { TestKind.STANDALONE_NO_TR -> { NoTestRunnerExtras( entryPoint = parseEntryPoint(registeredDirectives, location), - inputDataFile = parseInputDataFile(baseDir = testDataFile.parentFile, registeredDirectives, location) + inputDataFile = parseInputDataFile(baseDir = testDataFile.parentFile, registeredDirectives, location), + arguments = parseProgramArguments(registeredDirectives) ) } TestKind.REGULAR, TestKind.STANDALONE -> { diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/runner/BaseTestRunProvider.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/runner/BaseTestRunProvider.kt index 51286c3603e..8340ffd9282 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/runner/BaseTestRunProvider.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/support/runner/BaseTestRunProvider.kt @@ -37,7 +37,9 @@ internal open class BaseTestRunProvider { } TestKind.STANDALONE_NO_TR -> { assertTrue(testName == null) - addIfNotNull(testCase.extras().inputDataFile?.let(TestRunParameter::WithInputData)) + val extras = testCase.extras() + addIfNotNull(extras.inputDataFile?.let(TestRunParameter::WithInputData)) + add(TestRunParameter.WithFreeCommandLineArguments(extras.arguments)) } TestKind.STANDALONE -> { add(TestRunParameter.WithTCTestLogger)