From 076361d83099fa452e83f0c3b9604974d3361a35 Mon Sep 17 00:00:00 2001 From: Ben Manes Date: Sun, 9 Dec 2012 21:23:06 -0800 Subject: [PATCH] Remove guard clause due to bad method invocation. The no-arg `getFirstLevelModuleDependencies()` method is only availabe on the default implementation and is not defined on the interface for LenientConfiguration. The anonymous implementation returned from when any empty dependency set is used lacks this helper method, resulting in a runtime failure. The interface method is now invoked with a filter to collect everything. --- .../gradle/versions/DependencyUpdates.groovy | 17 ++++++++--------- .../versions/DependencyUpdatesSpec.groovy | 2 +- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/main/groovy/com/github/benmanes/gradle/versions/DependencyUpdates.groovy b/src/main/groovy/com/github/benmanes/gradle/versions/DependencyUpdates.groovy index d5c24668..c9fe3215 100644 --- a/src/main/groovy/com/github/benmanes/gradle/versions/DependencyUpdates.groovy +++ b/src/main/groovy/com/github/benmanes/gradle/versions/DependencyUpdates.groovy @@ -20,6 +20,8 @@ import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.ExternalDependency import org.gradle.api.internal.artifacts.version.LatestVersionSemanticComparator +import static org.gradle.api.specs.Specs.SATISFIES_ALL + /** * An evaluator for reporting of which dependencies have newer versions. *

@@ -42,12 +44,12 @@ class DependencyUpdates { def current = getProjectAndBuildscriptDependencies() def (resolved, unresolved) = resolveLatestDepedencies(current) def (currentVersions, latestVersions, upToDateVersions, downgradeVersions, upgradeVersions) = - getVersionMapping(current, resolved) + composeVersionMapping(current, resolved) new DependencyUpdatesReporter(project, revision, currentVersions, latestVersions, upToDateVersions, downgradeVersions, upgradeVersions, unresolved) } - /** Returns {@link ExternalDependency} collected from the project and buildscript. */ + /** Returns {@link ExternalDependency} collected from all projects and buildscripts. */ private def getProjectAndBuildscriptDependencies() { project.allprojects.collectMany{ proj -> def configurations = (proj.configurations + proj.buildscript.configurations) @@ -60,19 +62,16 @@ class DependencyUpdates { * the latest dependencies to determine the newest versions. */ private def resolveLatestDepedencies(current) { - if (current.empty) { - return [[], []] - } - def unresolved = current.collect { dependency -> + def latest = current.collect { dependency -> project.dependencies.create(group: dependency.group, name: dependency.name, version: "latest.${revision}") { transitive = false } } resolveWithAllRepositories { - def lenient = project.configurations.detachedConfiguration(unresolved as Dependency[]) + def conf = project.configurations.detachedConfiguration(latest as Dependency[]) .resolvedConfiguration.lenientConfiguration - [lenient.firstLevelModuleDependencies, lenient.unresolvedModuleDependencies] + [conf.getFirstLevelModuleDependencies(SATISFIES_ALL), conf.unresolvedModuleDependencies] } } @@ -100,7 +99,7 @@ class DependencyUpdates { } /** Organizes the dependencies into version mappings. */ - private def getVersionMapping(current, resolved) { + private def composeVersionMapping(current, resolved) { def currentVersions = current.collectEntries { dependency -> [keyOf(dependency), dependency.version] } diff --git a/src/test/groovy/com/github/benmanes/gradle/versions/DependencyUpdatesSpec.groovy b/src/test/groovy/com/github/benmanes/gradle/versions/DependencyUpdatesSpec.groovy index 166c5975..ffd6412f 100644 --- a/src/test/groovy/com/github/benmanes/gradle/versions/DependencyUpdatesSpec.groovy +++ b/src/test/groovy/com/github/benmanes/gradle/versions/DependencyUpdatesSpec.groovy @@ -120,7 +120,7 @@ class DependencyUpdatesSpec extends Specification { given: def (rootProject, childProject, leafProject) = multiProject() addRepositoryTo(childProject) - addDependenciesTo(leafProject) + addDependenciesTo(rootProject) when: def reporter = evaluate(rootProject, revision) reporter.writeToConsole()