[Gradle] KT-65528 Migrate maven-publish plugin test to new IT DSL
Convert test to functional test
^KT-65528 In Progress
Merge-request: KT-MR-15883
Merged-by: Adam Semenenko <adam.semenenko@jetbrains.com>
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt
index 4eb8e04..799185a 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt
@@ -9,12 +9,14 @@
import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments
import org.jetbrains.kotlin.gradle.plugin.ProjectLocalConfigurations
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
-import org.jetbrains.kotlin.gradle.plugin.sources.METADATA_CONFIGURATION_NAME_SUFFIX
import org.jetbrains.kotlin.gradle.testbase.MPPNativeTargets
import org.jetbrains.kotlin.gradle.testbase.TestVersions
import org.jetbrains.kotlin.gradle.testbase.assertHasDiagnostic
import org.jetbrains.kotlin.gradle.testbase.assertNoDiagnostic
-import org.jetbrains.kotlin.gradle.util.*
+import org.jetbrains.kotlin.gradle.util.checkBytecodeContains
+import org.jetbrains.kotlin.gradle.util.isWindows
+import org.jetbrains.kotlin.gradle.util.modify
+import org.jetbrains.kotlin.gradle.util.replaceText
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.junit.Assert
@@ -197,16 +199,6 @@
}
@Test
- fun testMavenPublishAppliedBeforeMultiplatformPlugin() =
- with(transformNativeTestProject("sample-lib", directoryPrefix = "new-mpp-lib-and-app")) {
- gradleBuildScript().modify { "apply plugin: 'maven-publish'\n$it" }
-
- build {
- assertSuccessful()
- }
- }
-
- @Test
@Ignore // KT-60745
fun testJvmWithJavaEquivalence() = doTestJvmWithJava(testJavaSupportInJvmTargets = false)
diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/MppPublicationTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/MppPublicationTest.kt
index af824cf..79bbd81 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/MppPublicationTest.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/MppPublicationTest.kt
@@ -16,9 +16,12 @@
import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.api.publish.PublishingExtension
import org.gradle.api.publish.maven.MavenPublication
+import org.gradle.api.publish.maven.plugins.MavenPublishPlugin
+import org.gradle.kotlin.dsl.apply
import org.gradle.testfixtures.ProjectBuilder
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.mpp.internal
+import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl
import org.jetbrains.kotlin.gradle.util.*
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
import kotlin.test.*
@@ -267,6 +270,38 @@
if (missingConfigurations.isNotEmpty()) fail("Following configurations are not created: $missingConfigurations")
}
+ @Test
+ @OptIn(ExperimentalWasmDsl::class)
+ fun `test MavenPublish applied before KotlinMultiplatform KT-28520`() {
+ val project = buildProject {
+
+ apply<MavenPublishPlugin>()
+
+ assertTrue(pluginManager.hasPlugin("maven-publish"), "Expected project has MavenPublish plugin")
+ assertFalse(project.pluginManager.hasPlugin("kotlin-multiplatform"), "Expected project does not have KGP")
+
+ applyMultiplatformPlugin()
+
+ assertTrue(project.pluginManager.hasPlugin("kotlin-multiplatform"), "Expected project has KGP")
+
+ kotlin {
+ jvm()
+
+ linuxX64()
+ mingwX64()
+ macosX64()
+
+ js { browser() }
+
+ wasmJs { browser() }
+ wasmWasi { nodejs() }
+ }
+ }.evaluate()
+
+ assertTrue(project.pluginManager.hasPlugin("maven-publish"), "Expected evaluated project has MavenPublish plugin")
+ assertTrue(project.pluginManager.hasPlugin("kotlin-multiplatform"), "Expected evaluated project has KGP")
+ }
+
private fun SoftwareComponent.attributesOfUsageContext(usageContextName: String): AttributeContainer {
this as SoftwareComponentInternal
return usages.first { it.name == usageContextName }.attributes