Cache outdated_versions for Formula
Closes #584. Signed-off-by: Xu Cheng <xucheng@me.com>
This commit is contained in:
parent
9754dbada8
commit
072e5df4ed
@ -1001,24 +1001,28 @@ class Formula
|
|||||||
|
|
||||||
# @private
|
# @private
|
||||||
def outdated_versions(options = {})
|
def outdated_versions(options = {})
|
||||||
@outdated_versions ||= begin
|
@outdated_versions ||= Hash.new do |cache, key|
|
||||||
all_versions = []
|
|
||||||
|
|
||||||
raise Migrator::MigrationNeededError.new(self) if migration_needed?
|
raise Migrator::MigrationNeededError.new(self) if migration_needed?
|
||||||
|
cache[key] = _outdated_versions(key)
|
||||||
|
end
|
||||||
|
@outdated_versions[options]
|
||||||
|
end
|
||||||
|
|
||||||
installed_kegs.each do |keg|
|
def _outdated_versions(options = {})
|
||||||
version = keg.version
|
all_versions = []
|
||||||
all_versions << version
|
|
||||||
|
|
||||||
return [] if pkg_version <= version && !version.head?
|
installed_kegs.each do |keg|
|
||||||
end
|
version = keg.version
|
||||||
|
all_versions << version
|
||||||
|
|
||||||
head_version = latest_head_version
|
return [] if pkg_version <= version && !version.head?
|
||||||
if head_version
|
end
|
||||||
head_version_outdated?(head_version, options) ? all_versions.sort! : []
|
|
||||||
else
|
head_version = latest_head_version
|
||||||
all_versions.sort!
|
if head_version && !head_version_outdated?(head_version, options)
|
||||||
end
|
[]
|
||||||
|
else
|
||||||
|
all_versions.sort
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -583,6 +583,7 @@ class OutdatedVersionsTests < Homebrew::TestCase
|
|||||||
|
|
||||||
def reset_outdated_versions
|
def reset_outdated_versions
|
||||||
f.instance_variable_set(:@outdated_versions, nil)
|
f.instance_variable_set(:@outdated_versions, nil)
|
||||||
|
f.instance_variable_set(:@outdated_versions_head_fetched, nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_greater_different_tap_installed
|
def test_greater_different_tap_installed
|
||||||
|
Loading…
x
Reference in New Issue
Block a user