Skip to content

Commit 88a5e14

Browse files
committed
Always configure test compilation classpath (#308)
Always configure test compilation dependencies Fixes #307
1 parent fea9b5d commit 88a5e14

File tree

1 file changed

+43
-38
lines changed

1 file changed

+43
-38
lines changed

atomicfu-gradle-plugin/src/main/kotlin/kotlinx/atomicfu/plugin/gradle/AtomicFUGradlePlugin.kt

+43-38
Original file line numberDiff line numberDiff line change
@@ -287,45 +287,47 @@ private fun Project.configureTransformationForTarget(target: KotlinTarget) {
287287
.dir("classes/atomicfu/${target.name}/${compilation.name}")
288288
val transformTask = when (target.platformType) {
289289
KotlinPlatformType.jvm, KotlinPlatformType.androidJvm -> {
290-
// skip transformation task if transformation is turned off or ir transformation is enabled
291-
if (!config.transformJvm || rootProject.getBooleanProperty(ENABLE_JVM_IR_TRANSFORMATION)) return@compilations
292-
project.registerJvmTransformTask(compilation)
293-
.configureJvmTask(
294-
compilation.compileDependencyFiles,
295-
compilation.compileAllTaskName,
296-
transformedClassesDir,
297-
originalClassesDirs,
298-
config
299-
)
300-
.also {
301-
compilation.defaultSourceSet.kotlin.compiledBy(it, AtomicFUTransformTask::destinationDirectory)
302-
}
290+
// create transformation task only if transformation is required and JVM IR compiler transformation is not enabled
291+
if (config.transformJvm && !rootProject.getBooleanProperty(ENABLE_JVM_IR_TRANSFORMATION)) {
292+
project.registerJvmTransformTask(compilation)
293+
.configureJvmTask(
294+
compilation.compileDependencyFiles,
295+
compilation.compileAllTaskName,
296+
transformedClassesDir,
297+
originalClassesDirs,
298+
config
299+
)
300+
.also {
301+
compilation.defaultSourceSet.kotlin.compiledBy(it, AtomicFUTransformTask::destinationDirectory)
302+
}
303+
} else null
303304
}
304305
KotlinPlatformType.js -> {
305-
// skip when js transformation is not needed or when IR is transformed
306-
if (!config.transformJs || (needsJsIrTransformation(target))) {
307-
return@compilations
308-
}
309-
project.registerJsTransformTask(compilation)
310-
.configureJsTask(
311-
compilation.compileAllTaskName,
312-
transformedClassesDir,
313-
originalClassesDirs,
314-
config
315-
)
316-
.also {
317-
compilation.defaultSourceSet.kotlin.compiledBy(it, AtomicFUTransformJsTask::destinationDirectory)
318-
}
306+
// create transformation task only if transformation is required and JS IR compiler transformation is not enabled
307+
if (config.transformJs && !needsJsIrTransformation(target)) {
308+
project.registerJsTransformTask(compilation)
309+
.configureJsTask(
310+
compilation.compileAllTaskName,
311+
transformedClassesDir,
312+
originalClassesDirs,
313+
config
314+
)
315+
.also {
316+
compilation.defaultSourceSet.kotlin.compiledBy(it, AtomicFUTransformJsTask::destinationDirectory)
317+
}
318+
} else null
319319
}
320320
else -> error("Unsupported transformation platform '${target.platformType}'")
321321
}
322-
//now transformTask is responsible for compiling this source set into the classes directory
323-
compilation.defaultSourceSet.kotlin.destinationDirectory.value(transformedClassesDir)
324-
classesDirs.setFrom(transformedClassesDir)
325-
classesDirs.setBuiltBy(listOf(transformTask))
326-
tasks.withType(Jar::class.java).configureEach {
327-
if (name == target.artifactsTaskName) {
328-
it.setupJarManifest(multiRelease = config.jvmVariant.toJvmVariant() == JvmVariant.BOTH)
322+
if (transformTask != null) {
323+
//now transformTask is responsible for compiling this source set into the classes directory
324+
compilation.defaultSourceSet.kotlin.destinationDirectory.value(transformedClassesDir)
325+
classesDirs.setFrom(transformedClassesDir)
326+
classesDirs.setBuiltBy(listOf(transformTask))
327+
tasks.withType(Jar::class.java).configureEach {
328+
if (name == target.artifactsTaskName) {
329+
it.setupJarManifest(multiRelease = config.jvmVariant.toJvmVariant() == JvmVariant.BOTH)
330+
}
329331
}
330332
}
331333
// test should compile and run against original production binaries
@@ -335,15 +337,18 @@ private fun Project.configureTransformationForTarget(target: KotlinTarget) {
335337
val originalMainClassesDirs = project.objects.fileCollection().from(
336338
mainCompilation.compileTaskProvider.flatMap { (it as KotlinCompileTool).destinationDirectory }
337339
)
340+
// compilationTask.destinationDirectory was changed from build/classes/kotlin/main to build/classes/atomicfu-orig/main,
341+
// so we need to update libraries
338342
(tasks.findByName(compilation.compileKotlinTaskName) as? AbstractKotlinCompileTool<*>)
339343
?.libraries
340344
?.setFrom(
341345
originalMainClassesDirs + compilation.compileDependencyFiles
342346
)
343-
344-
(tasks.findByName("${target.name}${compilation.name.capitalize()}") as? Test)?.classpath =
345-
originalMainClassesDirs + (compilation as KotlinCompilationToRunnableFiles).runtimeDependencyFiles - mainCompilation.output.classesDirs
346-
347+
if (transformTask != null) {
348+
// if transform task was not created, then originalMainClassesDirs == mainCompilation.output.classesDirs
349+
(tasks.findByName("${target.name}${compilation.name.capitalize()}") as? Test)?.classpath =
350+
originalMainClassesDirs + (compilation as KotlinCompilationToRunnableFiles).runtimeDependencyFiles - mainCompilation.output.classesDirs
351+
}
347352
compilation.compileKotlinTask.setFriendPaths(originalMainClassesDirs)
348353
}
349354
}

0 commit comments

Comments
 (0)