From 882f4428482d19dc4945a44c26896b4b0cea1ff5 Mon Sep 17 00:00:00 2001 From: "Alexander.Likhachev" Date: Tue, 29 Sep 2020 14:39:29 +0700 Subject: [PATCH] [Gradle, K/N] Simplify native cinterop test --- .../kotlin/gradle/native/GeneralNativeIT.kt | 62 +++--------------- .../testProject/native-cinterop/build.gradle | 44 +++---------- .../projectLibrary/build.gradle | 41 ------------ .../publishedLibrary/build.gradle | 64 ------------------- .../src/allNative/kotlin/main.kt | 14 ---- .../src/nativeInterop/cinterop/stdio.def | 2 - .../src/nativeTest/kotlin/test.kt | 12 ---- .../native-cinterop/settings.gradle | 13 ++-- .../src/allNative/kotlin/main.kt | 12 ---- .../allNative => src/hostMain}/kotlin/main.kt | 6 +- .../hostTest}/kotlin/test.kt | 10 +-- .../nativeInterop/cinterop/number.def} | 1 - .../src/nativeTest/kotlin/test.kt | 11 ---- 13 files changed, 30 insertions(+), 262 deletions(-) delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/projectLibrary/build.gradle delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/publishedLibrary/build.gradle delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/publishedLibrary/src/allNative/kotlin/main.kt delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/publishedLibrary/src/nativeInterop/cinterop/stdio.def delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/publishedLibrary/src/nativeTest/kotlin/test.kt delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/allNative/kotlin/main.kt rename libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/{projectLibrary/src/allNative => src/hostMain}/kotlin/main.kt (72%) rename libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/{projectLibrary/src/nativeTest => src/hostTest}/kotlin/test.kt (54%) rename libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/{projectLibrary/src/nativeInterop/cinterop/stdio.def => src/nativeInterop/cinterop/number.def} (88%) delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/nativeTest/kotlin/test.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/GeneralNativeIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/GeneralNativeIT.kt index 73e90c90ce9..45165003893 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/GeneralNativeIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/GeneralNativeIT.kt @@ -646,68 +646,22 @@ class GeneralNativeIT : BaseGradleIT() { @Test fun testCinterop() { - val libProject = Project("sample-lib", directoryPrefix = "new-mpp-lib-and-app") - libProject.build("publish") { - assertSuccessful() - } - val repo = libProject.projectDir.resolve("repo").absolutePath.replace('\\', '/') - - with(Project("native-cinterop")) { - - setupWorkingDir() - listOf(gradleBuildScript(), gradleBuildScript("publishedLibrary")).forEach { - it.appendText( - """ - repositories { - maven { url '$repo' } - } - """.trimIndent() - ) - } - - val targetsToBuild = if (HostManager.hostIsMingw) { - listOf(nativeHostTargetName, "mingw86") - } else { - listOf(nativeHostTargetName) - } - - val libraryCinteropTasks = targetsToBuild.map { ":projectLibrary:cinteropStdio${it.capitalize()}" } - val libraryCompileTasks = targetsToBuild.map { ":projectLibrary:compileKotlin${it.capitalize()}" } - - build(":projectLibrary:build") { - assertSuccessful() - assertTasksExecuted(libraryCinteropTasks) - assertTrue(output.contains("Project test"), "No test output found") - targetsToBuild.forEach { - assertFileExists("projectLibrary/build/classes/kotlin/$it/main/projectLibrary-cinterop-stdio.klib") - } - } - - build(":publishedLibrary:build", ":publishedLibrary:publish") { - assertSuccessful() - assertTasksExecuted( - targetsToBuild.map { ":publishedLibrary:cinteropStdio${it.capitalize()}" } - ) - assertTrue(output.contains("Published test"), "No test output found") - targetsToBuild.forEach { - assertFileExists("publishedLibrary/build/classes/kotlin/$it/main/publishedLibrary-cinterop-stdio.klib") - assertFileExists("publishedLibrary/build/classes/kotlin/$it/test/test-cinterop-stdio.klib") - assertFileExists("repo/org/example/publishedLibrary-$it/1.0/publishedLibrary-$it-1.0-cinterop-stdio.klib") - } - } + with(transformProjectWithPluginsDsl("native-cinterop")) { + configureSingleNativeTarget() build(":build") { assertSuccessful() - assertTrue(output.contains("Dependent: Project print"), "No test output found") - assertTrue(output.contains("Dependent: Published print"), "No test output found") + assertFileExists("build/libs/host/main/native-cinterop-cinterop-number.klib") + assertFileExists("build/classes/kotlin/host/main/native-cinterop-cinterop-number.klib") + assertFileExists("build/classes/kotlin/host/test/native-cinterop_test.klib") } // Check that changing the compiler version in properties causes interop reprocessing and source recompilation. val hostLibraryTasks = listOf( - ":projectLibrary:cinteropStdio${nativeHostTargetName.capitalize()}", - ":projectLibrary:compileKotlin${nativeHostTargetName.capitalize()}" + ":cinteropNumberHost", + ":compileKotlinHost" ) - build(":projectLibrary:build") { + build(":build") { assertSuccessful() assertTasksUpToDate(hostLibraryTasks) } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/build.gradle index 104cab0541d..688d5227ebd 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/build.gradle @@ -1,48 +1,20 @@ -buildscript { - repositories { - mavenLocal() - jcenter() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } +plugins { + id("org.jetbrains.kotlin.multiplatform").version("") } - -apply plugin: 'kotlin-multiplatform' - repositories { mavenLocal() jcenter() - maven { url 'repo' } } kotlin { - sourceSets { - allNative { - dependencies { - implementation project(':projectLibrary') - implementation 'org.example:publishedLibrary:1.0' + ("host") { + compilations.main.cinterops { + number { + packageName 'example.cinterop.project' + extraOpts '-nodefaultlibs' + compilerOpts '-DEVEN_NUMBER' } } - nativeTest - - macos64Main { dependsOn sourceSets.allNative } - linux64Main { dependsOn sourceSets.allNative } - mingw64Main { dependsOn sourceSets.allNative } - mingw86Main { dependsOn sourceSets.allNative } - - macos64Test { dependsOn sourceSets.nativeTest } - linux64Test { dependsOn sourceSets.nativeTest } - mingw64Test { dependsOn sourceSets.nativeTest } - mingw86Test { dependsOn sourceSets.nativeTest } - } - - targets { - fromPreset(presets.macosX64, 'macos64') - fromPreset(presets.linuxX64, 'linux64') - fromPreset(presets.mingwX64, 'mingw64') - // Test building a 32-bit Windows binary. - fromPreset(presets.mingwX86, 'mingw86') } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/projectLibrary/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/projectLibrary/build.gradle deleted file mode 100644 index 52ab100734e..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/projectLibrary/build.gradle +++ /dev/null @@ -1,41 +0,0 @@ -apply plugin: 'kotlin-multiplatform' - -repositories { - mavenLocal() - jcenter() -} - -kotlin { - sourceSets { - allNative - nativeTest - - macos64Main { dependsOn sourceSets.allNative } - linux64Main { dependsOn sourceSets.allNative } - mingw64Main { dependsOn sourceSets.allNative } - mingw86Main { dependsOn sourceSets.allNative } - - macos64Test { dependsOn sourceSets.nativeTest } - linux64Test { dependsOn sourceSets.nativeTest } - mingw64Test { dependsOn sourceSets.nativeTest } - mingw86Test { dependsOn sourceSets.nativeTest } - } - - targets { - fromPreset(presets.macosX64, 'macos64') - fromPreset(presets.linuxX64, 'linux64') - fromPreset(presets.mingwX64, 'mingw64') - // Test building a 32-bit Windows binary. - fromPreset(presets.mingwX86, 'mingw86') - - configure([macos64, linux64, mingw64, mingw86]) { - compilations.main.cinterops { - stdio { - packageName 'example.cinterop.project.stdio' - extraOpts '-nodefaultlibs' - compilerOpts '-DEVEN_NUMBER' - } - } - } - } -} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/publishedLibrary/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/publishedLibrary/build.gradle deleted file mode 100644 index 3cb66fa2e57..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/publishedLibrary/build.gradle +++ /dev/null @@ -1,64 +0,0 @@ -apply plugin: 'kotlin-multiplatform' -apply plugin: 'maven-publish' - -group = 'org.example' -version = '1.0' - -repositories { - mavenLocal() - jcenter() -} - -kotlin { - sourceSets { - allNative { - dependencies { - implementation 'com.example:sample-lib:1.0' - } - } - nativeTest - - macos64Main { dependsOn sourceSets.allNative } - linux64Main { dependsOn sourceSets.allNative } - mingw64Main { dependsOn sourceSets.allNative } - mingw86Main { dependsOn sourceSets.allNative } - - macos64Test { dependsOn sourceSets.nativeTest } - linux64Test { dependsOn sourceSets.nativeTest } - mingw64Test { dependsOn sourceSets.nativeTest } - mingw86Test { dependsOn sourceSets.nativeTest } - } - - targets { - fromPreset(presets.macosX64, 'macos64') - fromPreset(presets.linuxX64, 'linux64') - fromPreset(presets.mingwX64, 'mingw64') - // Test building a 32-bit Windows binary. - fromPreset(presets.mingwX86, 'mingw86') - - configure([macos64, linux64, mingw64, mingw86]) { - compilations.all { - // Add interop in the test compilation too as a regression test for KT-30290. - cinterops { - stdio { - packageName 'example.cinterop.published.stdio' - extraOpts '-nodefaultlibs' - } - } - } - } - } - -} - -// We don't create test tasks for Windows x86. But we still want to test -// generating interop for it, so we add this dependency. -build.dependsOn 'linkDebugTestMingw86' - -publishing { - repositories { - maven { - url = '../repo' - } - } -} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/publishedLibrary/src/allNative/kotlin/main.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/publishedLibrary/src/allNative/kotlin/main.kt deleted file mode 100644 index 7c11548c696..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/publishedLibrary/src/allNative/kotlin/main.kt +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2010-2018 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 example.cinterop.published - -import example.cinterop.published.stdio.* -import com.example.lib.* - -fun publishedPrint(str: String) { - printf(str + '\n') - println(id(42)) -} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/publishedLibrary/src/nativeInterop/cinterop/stdio.def b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/publishedLibrary/src/nativeInterop/cinterop/stdio.def deleted file mode 100644 index 69362d03386..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/publishedLibrary/src/nativeInterop/cinterop/stdio.def +++ /dev/null @@ -1,2 +0,0 @@ -headers = stdio.h -compilerOpts.osx = -D_ANSI_SOURCE diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/publishedLibrary/src/nativeTest/kotlin/test.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/publishedLibrary/src/nativeTest/kotlin/test.kt deleted file mode 100644 index 2110b1462c2..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/publishedLibrary/src/nativeTest/kotlin/test.kt +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright 2010-2018 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 example.cinterop.published - -import kotlin.test.* - -@Test -fun publishedTest() { - publishedPrint("Published test") -} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/settings.gradle index f7bc267a2f2..0bd00ea71d9 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/settings.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/settings.gradle @@ -1,6 +1,11 @@ +pluginManagement { + repositories { + mavenLocal() + jcenter() + gradlePluginPortal() + } +} + enableFeaturePreview('GRADLE_METADATA') -rootProject.name = 'native-cinterop' - -include 'projectLibrary' -include 'publishedLibrary' +rootProject.name = "native-cinterop" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/allNative/kotlin/main.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/allNative/kotlin/main.kt deleted file mode 100644 index eae10d3bade..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/allNative/kotlin/main.kt +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright 2010-2018 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. - */ - -import example.cinterop.project.* -import example.cinterop.published.* - -fun dependentProject() { - projectPrint("Dependent: Project print") - publishedPrint("Dependent: Published print") -} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/projectLibrary/src/allNative/kotlin/main.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/hostMain/kotlin/main.kt similarity index 72% rename from libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/projectLibrary/src/allNative/kotlin/main.kt rename to libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/hostMain/kotlin/main.kt index 1a30d5dd3b1..ba8c53799bb 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/projectLibrary/src/allNative/kotlin/main.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/hostMain/kotlin/main.kt @@ -5,8 +5,8 @@ package example.cinterop.project -import example.cinterop.project.stdio.* +import example.cinterop.project.* -fun projectPrint(str: String) { - printf(str + '\n') +fun answer(): Int { + return getNumber() * 2 } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/projectLibrary/src/nativeTest/kotlin/test.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/hostTest/kotlin/test.kt similarity index 54% rename from libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/projectLibrary/src/nativeTest/kotlin/test.kt rename to libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/hostTest/kotlin/test.kt index 3702e50ccb5..a11af7afd41 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/projectLibrary/src/nativeTest/kotlin/test.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/hostTest/kotlin/test.kt @@ -1,18 +1,12 @@ /* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 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 example.cinterop.project import kotlin.test.* -import example.cinterop.project.stdio.* - -@Test -fun projectTest() { - projectPrint("Project test") -} @Test fun compilerOptsTest() { - assertEquals(2, getNumber()) + assertEquals(4, answer()) } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/projectLibrary/src/nativeInterop/cinterop/stdio.def b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/nativeInterop/cinterop/number.def similarity index 88% rename from libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/projectLibrary/src/nativeInterop/cinterop/stdio.def rename to libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/nativeInterop/cinterop/number.def index 31066bac181..ab2606e7f37 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/projectLibrary/src/nativeInterop/cinterop/stdio.def +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/nativeInterop/cinterop/number.def @@ -1,4 +1,3 @@ -headers = stdio.h compilerOpts.osx = -D_ANSI_SOURCE --- diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/nativeTest/kotlin/test.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/nativeTest/kotlin/test.kt deleted file mode 100644 index ad613c7d96f..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/native-cinterop/src/nativeTest/kotlin/test.kt +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright 2010-2018 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. - */ - -import kotlin.test.* - -@Test -fun dependentTest() { - dependentProject() -}