diff options
| author | Vlad Shablinsky | 2016-08-01 16:31:36 +0300 | 
|---|---|---|
| committer | Xu Cheng | 2016-08-06 21:25:57 +0800 | 
| commit | 072e5df4ed3afb0ca6a7bbd8e869d9ff8e5f8d73 (patch) | |
| tree | f009d1f5ed124081f83f565d4701b9a00f9f6e78 /Library/Homebrew | |
| parent | 9754dbada809260ccb8e61fedfdc8e20c9c93317 (diff) | |
| download | brew-072e5df4ed3afb0ca6a7bbd8e869d9ff8e5f8d73.tar.bz2 | |
Cache outdated_versions for Formula
Closes #584.
Signed-off-by: Xu Cheng <xucheng@me.com>
Diffstat (limited to 'Library/Homebrew')
| -rw-r--r-- | Library/Homebrew/formula.rb | 32 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_formula.rb | 1 | 
2 files changed, 19 insertions, 14 deletions
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index d7d2f16fc..3730b135c 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1001,24 +1001,28 @@ class Formula    # @private    def outdated_versions(options = {}) -    @outdated_versions ||= begin -      all_versions = [] - +    @outdated_versions ||= Hash.new do |cache, key|        raise Migrator::MigrationNeededError.new(self) if migration_needed? +      cache[key] = _outdated_versions(key) +    end +    @outdated_versions[options] +  end -      installed_kegs.each do |keg| -        version = keg.version -        all_versions << version +  def _outdated_versions(options = {}) +    all_versions = [] -        return [] if pkg_version <= version && !version.head? -      end +    installed_kegs.each do |keg| +      version = keg.version +      all_versions << version -      head_version = latest_head_version -      if head_version -        head_version_outdated?(head_version, options) ? all_versions.sort! : [] -      else -        all_versions.sort! -      end +      return [] if pkg_version <= version && !version.head? +    end + +    head_version = latest_head_version +    if head_version && !head_version_outdated?(head_version, options) +      [] +    else +      all_versions.sort      end    end diff --git a/Library/Homebrew/test/test_formula.rb b/Library/Homebrew/test/test_formula.rb index 3f3938414..af98c358f 100644 --- a/Library/Homebrew/test/test_formula.rb +++ b/Library/Homebrew/test/test_formula.rb @@ -583,6 +583,7 @@ class OutdatedVersionsTests < Homebrew::TestCase    def reset_outdated_versions      f.instance_variable_set(:@outdated_versions, nil) +    f.instance_variable_set(:@outdated_versions_head_fetched, nil)    end    def test_greater_different_tap_installed  | 
