aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaria Sokolova <maria.sokolova@jetbrains.com>2024-01-17 17:44:28 +0100
committerMaria Sokolova <maria.sokolova@jetbrains.com>2024-01-17 17:44:28 +0100
commit6c7ca4b03d465f9f2ac399e9f11ef4b6a312f1d0 (patch)
treed9594cc0e4e77b9ca3bac63258f321798c1473e6
parent31fe3fdffe6f4fb61d76b1f6942fbba2f140731a (diff)
downloadkotlinx.atomicfu-6c7ca4b03d465f9f2ac399e9f11ef4b6a312f1d0.tar.gz
Copy outputs of compileJava tasks to the transformed directory.
Java classes missed in the transformed atomicfu directory, because originalClassesDirs contained only outputs of compileKotlin tasks. This bug was introduced in #303. Added a test for jar packing as well, as it was an initial problem that was fixed in #303. Fixes #388
-rw-r--r--atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt5
-rw-r--r--integration-testing/src/functionalTest/kotlin/kotlinx.atomicfu.gradle.plugin.test/cases/JvmProjectTest.kt8
-rw-r--r--integration-testing/src/functionalTest/kotlin/kotlinx.atomicfu.gradle.plugin.test/framework/runner/Commands.kt2
3 files changed, 11 insertions, 4 deletions
diff --git a/atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt b/atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt
index 42c2bc9..eb4d858 100644
--- a/atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt
+++ b/atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt
@@ -337,9 +337,8 @@ private fun Project.configureTransformationForTarget(target: KotlinTarget) {
it.destinationDirectory.value(originalDestinationDirectory)
}
}
- val originalClassesDirs: FileCollection = project.objects.fileCollection().from(
- compilationTask.flatMap { it.destinationDirectory }
- )
+ val originalClassesDirs: FileCollection =
+ project.files(classesDirs.from.toTypedArray()).filter { it.exists() }
originalDirsByCompilation[compilation] = originalClassesDirs
val transformedClassesDir = project.layout.buildDirectory
.dir("classes/atomicfu/${target.name}/${compilation.name}")
diff --git a/integration-testing/src/functionalTest/kotlin/kotlinx.atomicfu.gradle.plugin.test/cases/JvmProjectTest.kt b/integration-testing/src/functionalTest/kotlin/kotlinx.atomicfu.gradle.plugin.test/cases/JvmProjectTest.kt
index 54198c7..15dea5a 100644
--- a/integration-testing/src/functionalTest/kotlin/kotlinx.atomicfu.gradle.plugin.test/cases/JvmProjectTest.kt
+++ b/integration-testing/src/functionalTest/kotlin/kotlinx.atomicfu.gradle.plugin.test/cases/JvmProjectTest.kt
@@ -6,7 +6,7 @@ package kotlinx.atomicfu.gradle.plugin.test.cases
import kotlinx.atomicfu.gradle.plugin.test.framework.checker.*
import kotlinx.atomicfu.gradle.plugin.test.framework.runner.*
-import kotlin.test.Test
+import kotlin.test.*
class JvmProjectTest {
@@ -27,4 +27,10 @@ class JvmProjectTest {
jvmSample.checkConsumableDependencies()
jvmSample.buildAndCheckBytecode()
}
+
+ // This test checks that jar is packed without duplicates, see #303
+ @Test
+ fun testJar() {
+ assertTrue(jvmSample.cleanAndJar().isSuccessful)
+ }
}
diff --git a/integration-testing/src/functionalTest/kotlin/kotlinx.atomicfu.gradle.plugin.test/framework/runner/Commands.kt b/integration-testing/src/functionalTest/kotlin/kotlinx.atomicfu.gradle.plugin.test/framework/runner/Commands.kt
index a5455ce..73346bf 100644
--- a/integration-testing/src/functionalTest/kotlin/kotlinx.atomicfu.gradle.plugin.test/framework/runner/Commands.kt
+++ b/integration-testing/src/functionalTest/kotlin/kotlinx.atomicfu.gradle.plugin.test/framework/runner/Commands.kt
@@ -8,6 +8,8 @@ import kotlinx.atomicfu.gradle.plugin.test.framework.checker.getProjectClasspath
internal fun GradleBuild.cleanAndBuild(): BuildResult = runGradle(listOf("clean", "build"))
+internal fun GradleBuild.cleanAndJar(): BuildResult = runGradle(listOf("clean", "jar"))
+
internal fun GradleBuild.dependencies(): BuildResult =
runGradle(listOf("dependencies")).also {
require(it.isSuccessful) { "${this.projectName}:dependencies task FAILED: ${it.output} " }