1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 00:17:11 -07:00

Better filter dependency implementation.

This commit is contained in:
Cedric Beust 2016-07-29 00:09:43 -08:00
parent e513508807
commit 89559d5952
2 changed files with 34 additions and 17 deletions

View file

@ -31,14 +31,15 @@ import org.eclipse.aether.util.artifact.JavaScopes
import org.eclipse.aether.util.filter.AndDependencyFilter
import org.eclipse.aether.util.filter.DependencyFilterUtils
import java.io.File
import java.util.*
import java.util.concurrent.Future
enum class Scope(val scope: String) {
COMPILE(JavaScopes.COMPILE),
PROVIDED(JavaScopes.PROVIDED),
SYSTEM(JavaScopes.SYSTEM),
RUNTIME(JavaScopes.RUNTIME),
TEST(JavaScopes.TEST)
enum class Scope(val scope: String, val dependencyLambda: (Project) -> List<IClasspathDependency>) {
COMPILE(JavaScopes.COMPILE, { project : Project -> project.compileDependencies }),
PROVIDED(JavaScopes.PROVIDED, { project : Project -> project.compileProvidedDependencies }),
SYSTEM(JavaScopes.SYSTEM, { project : Project -> emptyList() }),
RUNTIME(JavaScopes.RUNTIME, { project : Project -> project.compileRuntimeDependencies }),
TEST(JavaScopes.TEST, { project : Project -> project.testDependencies })
;
companion object {
@ -55,13 +56,13 @@ enum class Scope(val scope: String) {
* filters passed.
*/
fun toDependencyLambda(scopes: Collection<Scope>) : (Project) -> List<IClasspathDependency> {
val result =
if (scopes.contains(Scope.COMPILE) && scopes.contains(Scope.TEST)) {
{ project : Project -> project.compileDependencies + project.testDependencies }
} else if (scopes.contains(Scope.TEST)) {
{ project : Project -> project.testDependencies }
} else {
{ project : Project -> project.compileDependencies }
val result = { project : Project ->
scopes.fold(arrayListOf<IClasspathDependency>(),
{ l: ArrayList<IClasspathDependency>, scope: Scope ->
val deps = scope.dependencyLambda(project)
l.addAll(deps)
l
})
}
return result
}

View file

@ -91,9 +91,25 @@ class DependencyManagerTest @Inject constructor(val dependencyManager: Dependenc
val compileResult = compileBuildFile(buildFileString, Args(), compilerFactory)
val project2 = compileResult.projects[1]
val dependencies = dependencyManager2.resolve(project2, Kobalt.context!!, isTest = false,
passedScopeFilters = listOf(Scope.COMPILE, Scope.RUNTIME))
assertContains(dependencies, ":testng:")
assertContains(dependencies, ":jcommander:")
dependencyManager2.resolve(project2, Kobalt.context!!, isTest = false,
passedScopeFilters = listOf(Scope.COMPILE, Scope.RUNTIME)).let { dependencies ->
assertThat(dependencies.size).isEqualTo(4)
assertContains(dependencies, ":testng:")
assertContains(dependencies, ":jcommander:")
}
dependencyManager2.resolve(project2, Kobalt.context!!, isTest = false,
passedScopeFilters = listOf(Scope.COMPILE)).let { dependencies ->
assertThat(dependencies.size).isEqualTo(3)
assertContains(dependencies, ":testng:")
}
dependencyManager2.resolve(project2, Kobalt.context!!, isTest = false,
passedScopeFilters = listOf(Scope.RUNTIME)).let { dependencies ->
assertThat(dependencies.size).isEqualTo(3)
assertContains(dependencies, ":jcommander:")
}
}
}