diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index d450b65f5a0626cecc187721c9c197f41d0637ef..8064e1ebb83646c9ea6a6db846ed58df449283b9 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -750,7 +750,7 @@ class FormulaAuditor current_version_scheme = formula.version_scheme [:stable, :devel].each do |spec| spec_version_scheme_map = attributes_map[:version_scheme][spec] - next if spec_version_scheme_map.nil? || spec_version_scheme_map.empty? + next if spec_version_scheme_map.empty? version_schemes = spec_version_scheme_map.values.flatten max_version_scheme = version_schemes.max @@ -783,28 +783,24 @@ class FormulaAuditor end current_revision = formula.revision - if formula.stable - if revision_map = attributes_map[:revision][:stable] - if !revision_map.nil? && !revision_map.empty? - stable_revisions = revision_map[formula.stable.version] - stable_revisions ||= [] - current_revision = formula.revision - max_revision = stable_revisions.max || 0 - - if current_revision < max_revision - problem "revision should not decrease (from #{max_revision} to #{current_revision})" - end + revision_map = attributes_map[:revision][:stable] + if formula.stable && !revision_map.empty? + stable_revisions = revision_map[formula.stable.version] + stable_revisions ||= [] + max_revision = stable_revisions.max || 0 + + if current_revision < max_revision + problem "revision should not decrease (from #{max_revision} to #{current_revision})" + end - stable_revisions -= [formula.revision] - if !current_revision.zero? && stable_revisions.empty? && - revision_map.keys.length > 1 - problem "'revision #{formula.revision}' should be removed" - elsif current_revision > 1 && - current_revision != max_revision && - !stable_revisions.include?(current_revision - 1) - problem "revisions should only increment by 1" - end - end + stable_revisions -= [formula.revision] + if !current_revision.zero? && stable_revisions.empty? && + revision_map.keys.length > 1 + problem "'revision #{formula.revision}' should be removed" + elsif current_revision > 1 && + current_revision != max_revision && + !stable_revisions.include?(current_revision - 1) + problem "revisions should only increment by 1" end elsif !current_revision.zero? # head/devel-only formula problem "'revision #{current_revision}' should be removed" diff --git a/Library/Homebrew/formula_versions.rb b/Library/Homebrew/formula_versions.rb index f0fbb3aaf83c8749de5abe8f8dbf17e83bdffcf2..70706a2f012da6e7f9e2941ea2425bb6940fdc37 100644 --- a/Library/Homebrew/formula_versions.rb +++ b/Library/Homebrew/formula_versions.rb @@ -67,11 +67,17 @@ class FormulaVersions attributes_map = {} return attributes_map if attributes.empty? + attributes.each do |attribute| + attributes_map[attribute] ||= { + stable: {}, + devel: {}, + } + end + stable_versions_seen = 0 rev_list(branch) do |rev| formula_at_revision(rev) do |f| attributes.each do |attribute| - attributes_map[attribute] ||= {} map = attributes_map[attribute] set_attribute_map(map, f, attribute) @@ -89,12 +95,10 @@ class FormulaVersions def set_attribute_map(map, f, attribute) if f.stable - map[:stable] ||= {} map[:stable][f.stable.version] ||= [] map[:stable][f.stable.version] << f.send(attribute) end return unless f.devel - map[:devel] ||= {} map[:devel][f.devel.version] ||= [] map[:devel][f.devel.version] << f.send(attribute) end