Skip to content

Commit

Permalink
Remove guard clause due to bad method invocation.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
ben-manes committed Dec 10, 2012
1 parent cbac8fd commit 076361d
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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.
* <p>
Expand All @@ -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)
Expand All @@ -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]
}
}

Expand Down Expand Up @@ -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]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down

0 comments on commit 076361d

Please sign in to comment.