[Gradle, JS] dependsOn for test tasks

This commit is contained in:
Ilya Goncharov
2022-09-20 13:03:07 +02:00
committed by teamcity
parent e7f2085aa9
commit b721b3e13c
4 changed files with 35 additions and 11 deletions
@@ -157,7 +157,11 @@ internal abstract class KotlinSourceSetProcessor<T : AbstractKotlinCompile<*>>(
protected fun applyStandardTaskConfiguration(taskConfiguration: AbstractKotlinCompileConfig<*>) {
taskConfiguration.configureTask {
it.description = taskDescription
it.destinationDirectory.convention(defaultKotlinDestinationDir)
if (it is Kotlin2JsCompile) {
it.defaultDestinationDirectory.convention(defaultKotlinDestinationDir)
} else {
it.destinationDirectory.convention(defaultKotlinDestinationDir)
}
it.libraries.from({ kotlinCompilation.compileDependencyFiles })
}
}
@@ -121,17 +121,15 @@ abstract class KotlinJsIrSubTarget(
KotlinJsBinaryMode.DEVELOPMENT
).single()
testJs.inputFileProperty.set(
project.layout.file(
binary.linkSyncTask.flatMap { copyTask ->
binary.linkTask
.flatMap { linkTask -> linkTask.compilerOptions.moduleName }
.map { outputName ->
copyTask.destinationDir
.resolve(outputName + compilation.platformType.fileExtension)
}
testJs.dependsOn(binary.linkSyncTask)
testJs.inputFileProperty.fileProvider(
binary.linkSyncTask.flatMap { linkSyncTask ->
binary.linkTask.flatMap { linkTask ->
linkTask.outputFileProperty.map {
linkSyncTask.destinationDir.resolve(it.name)
}
}
)
}
)
configureTestDependencies(testJs)
@@ -977,6 +977,10 @@ abstract class Kotlin2JsCompile @Inject constructor(
}
}
// Workaround to be able to use default value and change it later based on external input
@get:Internal
internal abstract val defaultDestinationDirectory: DirectoryProperty
@Deprecated("Use destinationDirectory and moduleName instead")
@get:Internal
abstract val outputFileProperty: Property<File>
@@ -50,6 +50,24 @@ internal open class BaseKotlin2JsCompileConfig<TASK : Kotlin2JsCompile>(
}
)
task.destinationDirectory
.convention(
project.objects.directoryProperty().fileProvider(
task.defaultDestinationDirectory.map {
val freeArgs = task.enhancedFreeCompilerArgs.get()
if (task.compilerOptions.outputFile.orNull != null) {
if (freeArgs.contains(PRODUCE_UNZIPPED_KLIB)) {
File(task.compilerOptions.outputFile.get())
} else {
File(task.compilerOptions.outputFile.get()).parentFile
}
} else {
it.asFile
}
}
)
)
task.libraryCache.set(libraryCacheService).also { task.libraryCache.disallowChanges() }
}
}