From f6690477def28114d03ec58ba43e8ff8d5b5deb0 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 19 Feb 2016 22:02:32 +0400 Subject: [PATCH] Test resources were not copied properly. --- .../main/kotlin/com/beust/kobalt/Variant.kt | 21 ++++++++++++++----- .../kotlin/com/beust/kobalt/api/Project.kt | 2 +- .../kobalt/internal/JvmCompilerPlugin.kt | 17 +++++++-------- .../com/beust/kobalt/internal/SourceSet.kt | 7 +++++++ 4 files changed, 32 insertions(+), 15 deletions(-) create mode 100644 modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/SourceSet.kt diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Variant.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Variant.kt index f3321bbd..dd4a819f 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Variant.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Variant.kt @@ -2,6 +2,7 @@ package com.beust.kobalt import com.beust.kobalt.api.* import com.beust.kobalt.internal.ActorUtils +import com.beust.kobalt.internal.SourceSet import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.log import java.io.File @@ -36,13 +37,14 @@ class Variant(val initialProductFlavor: ProductFlavorConfig? = null, return result } - fun sourceDirectories(project: Project, context: KobaltContext) : List { + fun sourceDirectories(project: Project, context: KobaltContext, sourceSet: SourceSet) : List { val result = arrayListOf() val compilerContributors = ActorUtils.selectAffinityActors(project, context, context.pluginInfo.compilerContributors) compilerContributors.forEach { it.compilersFor(project, context).forEach { compiler -> - result.addAll(sourceDirectories(project, compiler.sourceDirectory, variantFirst = true)) + result.addAll(sourceDirectories(project, compiler.sourceDirectory, variantFirst = true, + sourceSet = sourceSet)) } } @@ -52,7 +54,8 @@ class Variant(val initialProductFlavor: ProductFlavorConfig? = null, /** * Might be used by plug-ins. */ - fun resourceDirectories(project: Project) = sourceDirectories(project, "resources", variantFirst = false) + fun resourceDirectories(project: Project, sourceSet: SourceSet = SourceSet.MAIN) + = sourceDirectories(project, "resources", variantFirst = false, sourceSet = sourceSet) .filter { it.path.contains("resources") || it.path.contains("res") } /** @@ -62,9 +65,17 @@ class Variant(val initialProductFlavor: ProductFlavorConfig? = null, * files that have already been seen get skipped, which is how compilation and resources * receive the correct priority in the final jar. */ - private fun sourceDirectories(project: Project, suffix: String, variantFirst: Boolean) : List { + private fun sourceDirectories(project: Project, suffix: String, variantFirst: Boolean, sourceSet: SourceSet) + : List { val result = arrayListOf() - val sourceDirectories = project.sourceDirectories.map { File(it) } + val sourceDirectories = + if (sourceSet == SourceSet.MAIN) { + project.sourceDirectories.map { File(it) } + } else if (sourceSet == SourceSet.TEST){ + project.sourceDirectoriesTest.map { File(it) } + } else { + throw KobaltException("Unknown source set: $sourceSet)) + } if (isDefault) { result.addAll(sourceDirectories) } else { diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Project.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Project.kt index 98f0f67b..86af8ac6 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Project.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Project.kt @@ -56,7 +56,7 @@ open class Project( companion object { val DEFAULT_SOURCE_DIRECTORIES = setOf("src/main/java", "src/main/kotlin", "src/main/resources") - val DEFAULT_SOURCE_DIRECTORIES_TEST = setOf("src/test/java", "src/test/kotlin") + val DEFAULT_SOURCE_DIRECTORIES_TEST = setOf("src/test/java", "src/test/kotlin", "src/test/resources") } // diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt index cfb4f637..435f4519 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt @@ -49,8 +49,6 @@ open class JvmCompilerPlugin @Inject constructor( const val TASK_CLEAN = "clean" const val TASK_TEST = "test" - const val SOURCE_SET_MAIN = "main" - const val SOURCE_SET_TEST = "test" const val DOCS_DIRECTORY = "docs/javadoc" } @@ -100,20 +98,20 @@ open class JvmCompilerPlugin @Inject constructor( /** * Copy the resources from a source directory to the build one */ - protected fun copyResources(project: Project, sourceSet: String) { + protected fun copyResources(project: Project, sourceSet: SourceSet) { val sourceDirs: ArrayList = arrayListOf() var outputDir: String? - if (sourceSet == JvmCompilerPlugin.SOURCE_SET_MAIN) { + if (sourceSet == SourceSet.MAIN) { sourceDirs.addAll(project.sourceDirectories.filter { it.contains("resources") }) outputDir = KFiles.CLASSES_DIR - } else if (sourceSet == JvmCompilerPlugin.SOURCE_SET_TEST) { + } else if (sourceSet == SourceSet.TEST) { sourceDirs.addAll(project.sourceDirectoriesTest.filter { it.contains("resources") }) outputDir = KFiles.TEST_CLASSES_DIR } else { - throw IllegalArgumentException("Custom source sets not supported yet: $sourceSet") + throw IllegalArgumentException("Unknown source set: $sourceSet") } - val variantSourceDirs = context.variant.resourceDirectories(project) + val variantSourceDirs = context.variant.resourceDirectories(project, sourceSet) if (variantSourceDirs.size > 0) { lp(project, "Copying $sourceSet resources") val absOutputDir = File(KFiles.joinDir(project.directory, project.buildDirectory, outputDir)) @@ -158,7 +156,8 @@ open class JvmCompilerPlugin @Inject constructor( private fun doTaskCompile(project: Project, isTest: Boolean): TaskResult { // Set up the source files now that we have the variant - sourceDirectories.addAll(context.variant.sourceDirectories(project, context)) + sourceDirectories.addAll(context.variant.sourceDirectories(project, context, + if (isTest) SourceSet.TEST else SourceSet.MAIN)) val sourceDirectory = context.variant.maybeGenerateBuildConfig(project, context) if (sourceDirectory != null) { @@ -243,7 +242,7 @@ open class JvmCompilerPlugin @Inject constructor( */ protected fun createCompilerActionInfo(project: Project, context: KobaltContext, isTest: Boolean, sourceDirectories: List, sourceSuffixes: List): CompilerActionInfo { - copyResources(project, JvmCompilerPlugin.SOURCE_SET_MAIN) + copyResources(project, if (isTest) SourceSet.TEST else SourceSet.MAIN) val fullClasspath = if (isTest) dependencyManager.testDependencies(project, context) else dependencyManager.dependencies(project, context) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/SourceSet.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/SourceSet.kt new file mode 100644 index 00000000..7899ccb3 --- /dev/null +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/SourceSet.kt @@ -0,0 +1,7 @@ +package com.beust.kobalt.internal + +enum class SourceSet { + MAIN, + TEST +} +