From 3f8df88857df18a4700eb3bef4bcae4cdaf175ce Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Wed, 4 Jan 2023 21:05:59 +0100 Subject: [PATCH] [Gradle, Test] Move newMppDependenciesDsl test to functional tests --- .../kotlin/gradle/NewMultiplatformIT.kt | 42 -------- .../newMppDependenciesDsl/app/build.gradle | 39 -------- .../newMppDependenciesDsl/lib/build.gradle | 16 ---- .../newMppDependenciesDsl/settings.gradle | 1 - .../regressionTests/ConfigurationsTest.kt | 96 +++++++++++++++++++ 5 files changed, 96 insertions(+), 98 deletions(-) delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/newMppDependenciesDsl/app/build.gradle delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/newMppDependenciesDsl/lib/build.gradle delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/newMppDependenciesDsl/settings.gradle 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 ca5af575c05..4f24a62c9c2 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 @@ -1529,48 +1529,6 @@ class NewMultiplatformIT : BaseGradleIT() { } } - @Test - fun testDependenciesDsl() = with(transformProjectWithPluginsDsl("newMppDependenciesDsl")) { - val originalBuildscriptContent = gradleBuildScript("app").readText() - - fun testDependencies() = testResolveAllConfigurations("app") { - assertContains(">> :app:testNonTransitiveStringNotationApiDependenciesMetadata --> junit-4.13.2.jar") - assertContains(">> :app:testNonTransitiveStringNotationApiDependenciesMetadata --> kotlin-stdlib-common-${KOTLIN_VERSION}.jar") - val dependenciesOnNonTransitive = (Regex.escape(">> :app:testNonTransitiveStringNotationApiDependenciesMetadata") + " .*") - .toRegex().findAll(output) - - if (dependenciesOnNonTransitive.count() != 2) fail( - "Expected two resolved dependencies on testNonTransitiveStringNotationApiDependenciesMetadata. " + - "Found: ${dependenciesOnNonTransitive.toList().map { it.value }}" - ) - - assertContains(">> :app:testNonTransitiveDependencyNotationApiDependenciesMetadata --> kotlin-reflect-${defaultBuildOptions().kotlinVersion}.jar") - - // All scoped DependenciesMetadata should resolve consistently into the same version - assertContains(">> :app:testExplicitKotlinVersionApiDependenciesMetadata --> kotlin-reflect-1.3.0.jar") - assertContains(">> :app:testExplicitKotlinVersionImplementationDependenciesMetadata --> kotlin-reflect-1.3.0.jar") - assertContains(">> :app:testExplicitKotlinVersionCompileOnlyDependenciesMetadata --> kotlin-reflect-1.3.0.jar") - - assertContains(">> :app:testProjectWithConfigurationApiDependenciesMetadata --> output.txt") - } - - testDependencies() - - // Then run with Gradle Kotlin DSL; the build script needs some correction to be a valid GK DSL script: - gradleBuildScript("app").run { - modify { - originalBuildscriptContent - .replace(": ", " = ") - .replace("def ", " val ") - .replace("new File(cacheRedirectorFile)", "File(cacheRedirectorFile)") - .replace("id \"org.jetbrains.kotlin.test.fixes.android\"", "id(\"org.jetbrains.kotlin.test.fixes.android\")") - } - renameTo(projectDir.resolve("app/build.gradle.kts")) - } - - testDependencies() - } - @Test fun testMultipleTargetsSamePlatform() = with(Project("newMppMultipleTargetsSamePlatform", gradleVersion)) { testResolveAllConfigurations("app") { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/newMppDependenciesDsl/app/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/newMppDependenciesDsl/app/build.gradle deleted file mode 100644 index 16fa839c796..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/newMppDependenciesDsl/app/build.gradle +++ /dev/null @@ -1,39 +0,0 @@ -plugins { - id("org.jetbrains.kotlin.multiplatform").version("") -} - -repositories { - mavenLocal() - mavenCentral() -} - -kotlin { - jvm("jvm6") - js { } - - sourceSets { - create("testNonTransitiveStringNotation") { - dependencies { - api("junit:junit:4.13.2") { setTransitive(false) } - } - } - create("testNonTransitiveDependencyNotation") { - dependencies { - api(kotlin("reflect")) { setTransitive(false) } - } - } - create("testExplicitKotlinVersion") { - dependencies { - api(kotlin("reflect", "1.3.0")) - implementation(kotlin("reflect", "1.2.71")) - compileOnly(kotlin("reflect", "1.2.70")) - runtimeOnly(kotlin("reflect", "1.2.60")) - } - } - create("testProjectWithConfiguration") { - dependencies { - api(project(path: ":lib", configuration: "outputConfiguration")) - } - } - } -} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/newMppDependenciesDsl/lib/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/newMppDependenciesDsl/lib/build.gradle deleted file mode 100644 index 86bf81b09b2..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/newMppDependenciesDsl/lib/build.gradle +++ /dev/null @@ -1,16 +0,0 @@ -plugins { - id 'java' -} - -repositories { - mavenLocal() - mavenCentral() -} - -configurations { - outputConfiguration -} - -artifacts { - outputConfiguration file('output.txt') -} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/newMppDependenciesDsl/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/newMppDependenciesDsl/settings.gradle deleted file mode 100644 index b1de2138f4f..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/newMppDependenciesDsl/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -include ':lib', ':app' \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/ConfigurationsTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/ConfigurationsTest.kt index ff91cd49512..b6a51f8b85d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/ConfigurationsTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/ConfigurationsTest.kt @@ -7,6 +7,10 @@ package org.jetbrains.kotlin.gradle.regressionTests +import org.gradle.api.artifacts.Configuration +import org.gradle.api.artifacts.Dependency +import org.gradle.api.artifacts.ModuleDependency +import org.gradle.api.artifacts.ProjectDependency import org.gradle.api.attributes.AttributeContainer import org.gradle.api.attributes.Category import org.gradle.api.attributes.Usage @@ -30,6 +34,98 @@ import kotlin.test.assertTrue class ConfigurationsTest : MultiplatformExtensionTest() { + @Test + fun `source set dependencies dsl test`() { + val lib = buildProjectWithMPP(projectBuilder = { withName("lib"); withParent(project) }) { + kotlin { + jvm() + linuxX64() + } + + configurations.create("outputConfiguration") { + it.isCanBeConsumed = true + it.isCanBeResolved = false + } + } + + kotlin.jvm() + kotlin.linuxX64() + + kotlin.sourceSets.getByName("commonMain").dependencies { + api("junit:junit:4.13.2") { setTransitive(false) } + api(kotlin("reflect")) { setTransitive(false) } + api(kotlin("reflect", "1.3.0")) + implementation(kotlin("reflect", "1.2.71")) + compileOnly(kotlin("reflect", "1.2.70")) + runtimeOnly(kotlin("reflect", "1.2.60")) + api(project(path = ":lib", configuration = "outputConfiguration")) + } + + project.evaluate() + + val commonMainApi = project.configurations.getByName("commonMainApi") + val commonMainImplementation = project.configurations.getByName("commonMainImplementation") + val commonMainCompileOnly = project.configurations.getByName("commonMainCompileOnly") + val commonMainRuntimeOnly = project.configurations.getByName("commonMainRuntimeOnly") + + fun Configuration.assertHasDependency(criterionName: String, criterion: Dependency.() -> Boolean) { + val allDependenciesString = allDependencies.joinToString("\n") + val message = "Configuration expected to have dependency: ${criterionName}.\n" + + "But it has only dependencies: \n$allDependenciesString" + assertTrue(message) { allDependencies.any(criterion) } + } + + commonMainApi.assertHasDependency("non-transitive string notation of junit:junit:4.13.2") { + this is ModuleDependency && + group == "junit" && + name == "junit" && + version == "4.13.2" && + !isTransitive + } + + commonMainApi.assertHasDependency("non-transitive dependency notation of kotlin-reflect without version") { + this is ModuleDependency && + group == "org.jetbrains.kotlin" && + name == "kotlin-reflect" && + version == null && + !isTransitive + } + + commonMainApi.assertHasDependency("dependency notation of kotlin-reflect:1.3.0") { + this is ModuleDependency && + group == "org.jetbrains.kotlin" && + name == "kotlin-reflect" && + version == "1.3.0" + } + + commonMainApi.assertHasDependency("project notation of :lib:outputConfiguration") { + this is ProjectDependency && + dependencyProject == lib && + targetConfiguration == "outputConfiguration" + } + + commonMainImplementation.assertHasDependency("dependency notation of kotlin-reflect:1.2.71") { + this is ModuleDependency && + group == "org.jetbrains.kotlin" && + name == "kotlin-reflect" && + version == "1.2.71" + } + + commonMainCompileOnly.assertHasDependency("dependency notation of kotlin-reflect:1.2.70") { + this is ModuleDependency && + group == "org.jetbrains.kotlin" && + name == "kotlin-reflect" && + version == "1.2.70" + } + + commonMainRuntimeOnly.assertHasDependency("dependency notation of kotlin-reflect:1.2.60") { + this is ModuleDependency && + group == "org.jetbrains.kotlin" && + name == "kotlin-reflect" && + version == "1.2.60" + } + } + @Test fun `consumable configurations except sourcesElements with platform target are marked with Category LIBRARY`() { kotlin.linuxX64()