From 04dce8a3f0c77afb705f31a37454eb8b3c498dc0 Mon Sep 17 00:00:00 2001 From: Dmitrii Krasnov Date: Wed, 19 Jul 2023 18:04:42 +0200 Subject: [PATCH] Added configuring for subprojects nativeProject form testDsl #KT-51553 In Progress --- .../kotlin/gradle/testbase/testDsl.kt | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt index 6f43fc5a93f..54640354cdb 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt @@ -108,6 +108,7 @@ fun KGPBaseTest.nativeProject( buildJdk: File? = null, localRepoDir: Path? = null, environmentVariables: EnvironmentalVariables = EnvironmentalVariables(), + configureSubProjects: Boolean = false, test: TestProject.() -> Unit = {}, ): TestProject { val project = project( @@ -123,7 +124,7 @@ fun KGPBaseTest.nativeProject( localRepoDir = localRepoDir, environmentVariables = environmentVariables, ) - project.configureSingleNativeTarget() + project.configureSingleNativeTarget(configureSubProjects) project.test() return project } @@ -645,11 +646,27 @@ private fun GradleProject.addHeapDumpOptions() { private const val SINGLE_NATIVE_TARGET_PLACEHOLDER = "" private const val LOCAL_REPOSITORY_PLACEHOLDER = "" -private fun TestProject.configureSingleNativeTarget(preset: String = HostManager.host.presetName) { +private fun TestProject.configureSingleNativeTarget( + configureSubProjects: Boolean = false, + preset: String = HostManager.host.presetName, +) { val buildScript = if (buildGradle.exists()) buildGradle else buildGradleKts buildScript.modify { it.replace(SINGLE_NATIVE_TARGET_PLACEHOLDER, preset) } + if (configureSubProjects) { + configureSingleNativeTargetInSubFolders(preset) + } +} + +private fun TestProject.configureSingleNativeTargetInSubFolders(preset: String = HostManager.host.presetName) { + projectPath.toFile().walk() + .filter { it.isFile && (it.name == "build.gradle.kts" || it.name == "build.gradle") } + .forEach { file -> + file.modify { + it.replace(SINGLE_NATIVE_TARGET_PLACEHOLDER, preset) + } + } } private fun TestProject.configureLocalRepository(localRepoDir: Path) {