[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