From c7a094040d0e016921d840dca66c70e79de84009 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Fri, 19 Feb 2016 22:34:25 +0400 Subject: [PATCH] More test resource fixes. --- .../main/kotlin/com/beust/kobalt/Variant.kt | 4 +-- .../api/ITestSourceDirectoryContributor.kt | 7 +++++ .../kobalt/internal/JvmCompilerPlugin.kt | 30 +++++++++++++------ .../kotlin/com/beust/kobalt/misc/KFiles.kt | 2 ++ 4 files changed, 32 insertions(+), 11 deletions(-) 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 51b094f6..ad02e094 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 @@ -48,7 +48,7 @@ class Variant(val initialProductFlavor: ProductFlavorConfig? = null, } } - return result.toList() + return result.filter { ! KFiles.isResource(it.path) }.toList() } /** @@ -56,7 +56,7 @@ class Variant(val initialProductFlavor: ProductFlavorConfig? = null, */ fun resourceDirectories(project: Project, sourceSet: SourceSet = SourceSet.MAIN) = sourceDirectories(project, "resources", variantFirst = false, sourceSet = sourceSet) - .filter { it.path.contains("resources") || it.path.contains("res") } + .filter { KFiles.isResource(it.path) } /** * suffix is either "java" (to find source files) or "resources" (to find resources). diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/ITestSourceDirectoryContributor.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/ITestSourceDirectoryContributor.kt index d88ca197..eb9ffc2b 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/ITestSourceDirectoryContributor.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/ITestSourceDirectoryContributor.kt @@ -9,3 +9,10 @@ interface ITestSourceDirectoryContributor { fun testSourceDirectoriesFor(project: Project, context: KobaltContext): List } +fun KobaltContext.testSourceDirectories(project: Project) : List { + val result = pluginInfo.testSourceDirContributors.flatMap { + it.testSourceDirectoriesFor(project, this) + } + return result +} + 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 435f4519..d3b9b5b4 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 @@ -174,8 +174,14 @@ open class JvmCompilerPlugin @Inject constructor( } else { compilerContributors.forEach { contributor -> contributor.compilersFor(project, context).forEach { compiler -> + val contributedSourceDirs = + if (isTest) { + context.testSourceDirectories(project) + } else { + context.sourceDirectories(project) + } val sourceFiles = KFiles.findSourceFiles(project.directory, - context.sourceDirectories(project).map { it.path }, compiler.sourceSuffixes) + contributedSourceDirs.map { it.path }, compiler.sourceSuffixes) if (sourceFiles.size > 0) { // TODO: createCompilerActionInfo recalculates the source files, only compute them // once and pass them @@ -268,15 +274,21 @@ open class JvmCompilerPlugin @Inject constructor( }) // Transform them with the interceptors, if any - val allSourceDirectories = if (isTest) { - initialSourceDirectories - } else { - context.pluginInfo.sourceDirectoriesInterceptors.fold(initialSourceDirectories.toList(), - { sd, interceptor -> interceptor.intercept(project, context, sd) }) - }.filter { - File(project.directory, it.path).exists() - } + val allSourceDirectories = + if (isTest) { + initialSourceDirectories + } else { + context.pluginInfo.sourceDirectoriesInterceptors.fold(initialSourceDirectories.toList(), + { sd, interceptor -> interceptor.intercept(project, context, sd) }) + }.filter { + File(project.directory, it.path).exists() + }.filter { + ! KFiles.isResource(it.path) + }.distinct() + if (allSourceDirectories.any { KFiles.isResource(it.path) }) { + println("PROBLEM") + } // Now that we have all the source directories, find all the source files in them val sourceFiles = files.findRecursively(projectDirectory, allSourceDirectories, { file -> sourceSuffixes.any { file.endsWith(it) }}) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KFiles.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KFiles.kt index 18b19122..91db8c2f 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KFiles.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KFiles.kt @@ -310,6 +310,8 @@ class KFiles { } return result } + + fun isResource(name: String) = name.contains("res") || name.contains("resources") } fun findRecursively(directory: File, function: Function1): List {