From 45581c11fad0a3fd0c9824297a8fc7eb08e1bd0e Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Mon, 29 Aug 2022 14:24:09 +0200 Subject: [PATCH] [Gradle] Add test for KT-53704 CInterop Task input should be modifiable through Cinterop DSL --- .../kotlin/gradle/CInteropTaskTest.kt | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/CInteropTaskTest.kt diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/CInteropTaskTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/CInteropTaskTest.kt new file mode 100644 index 00000000000..0d75c0d5782 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/CInteropTaskTest.kt @@ -0,0 +1,68 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle + +import org.jetbrains.kotlin.gradle.plugin.mpp.DefaultCInteropSettings +import org.jetbrains.kotlin.gradle.tasks.CInteropProcess +import kotlin.test.BeforeTest +import kotlin.test.Test +import kotlin.test.assertEquals + +class CInteropTaskTest : MultiplatformExtensionTest() { + + @BeforeTest + override fun setup() { + super.setup() + setupDefaultProjectWithCinterop() + } + + private fun setupDefaultProjectWithCinterop() { + + } + + @Test + fun `cinterop properties can be changed after creating`() { + fun DefaultCInteropSettings.setDummyValues(prefix: String) { + dependencyFiles = project.files("${prefix}-dependencyFile") + defFile("${prefix}-defFile") + packageName = "${prefix}-packageName" + compilerOpts += "${prefix}-compilerOpts" + linkerOpts += "${prefix}-linkerOpts" + extraOpts = listOf("${prefix}-extraOpts") + header("${prefix}-header.h") + + includeDirs { + allHeaders("${prefix}-allHeaders") + headerFilterOnly("${prefix}-headerFilterOnly") + } + } + + val linuxX64 = kotlin.linuxX64().apply { + compilations.getByName("main").cinterops.create("dummy") { + it.setDummyValues(prefix = "default") + } + } + + // Get task to make sure it is configured + val cinteropTask = project.tasks.getByName("cinteropDummyLinuxX64") as CInteropProcess + + // Change cinterop properties + val cinterop = linuxX64.compilations.getByName("main").cinterops.getByName("dummy") + cinterop.setDummyValues("updated") + + project.evaluate() + + assertEquals("updated-dependencyFile", cinteropTask.libraries.files.single().name) + assertEquals("updated-defFile", cinteropTask.defFile.name) + assertEquals("updated-packageName", cinteropTask.packageName) + assertEquals(listOf("default-compilerOpts", "updated-compilerOpts"), cinteropTask.compilerOpts) + assertEquals(listOf("default-linkerOpts", "updated-linkerOpts"), cinteropTask.linkerOpts) + assertEquals(listOf("updated-extraOpts"), cinteropTask.extraOpts) + assertEquals(listOf("default-header.h", "updated-header.h"), cinteropTask.headers.files.map { it.name }) + assertEquals(listOf("default-allHeaders", "updated-allHeaders"), cinteropTask.allHeadersDirs.map { it.name }) + assertEquals(listOf("default-headerFilterOnly", "updated-headerFilterOnly"), cinteropTask.headerFilterDirs.map { it.name }) + } +} \ No newline at end of file