diff options
| author | Alyssa Ross | 2018-01-18 20:54:21 +0000 | 
|---|---|---|
| committer | Alyssa Ross | 2018-01-18 21:08:41 +0000 | 
| commit | 8874d1fb139516bd40f11f5427418ded693db88a (patch) | |
| tree | 729a9d9bef8bcc4896c72a5d233b21e65da1e3d4 /Library | |
| parent | 02e4cae3d0f3fb7065ea3e9c0c4877f70c92689d (diff) | |
| download | brew-8874d1fb139516bd40f11f5427418ded693db88a.tar.bz2 | |
`prepend` instead of alias hacks for deprecations
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/compat/dependency_collector.rb | 134 | ||||
| -rw-r--r-- | Library/Homebrew/compat/formula_support.rb | 24 | ||||
| -rw-r--r-- | Library/Homebrew/test/dependency_collector_spec.rb | 10 | ||||
| -rw-r--r-- | Library/Homebrew/test/formula_support_spec.rb | 8 | 
4 files changed, 98 insertions, 78 deletions
| diff --git a/Library/Homebrew/compat/dependency_collector.rb b/Library/Homebrew/compat/dependency_collector.rb index 1c91f2283..66e9b3f41 100644 --- a/Library/Homebrew/compat/dependency_collector.rb +++ b/Library/Homebrew/compat/dependency_collector.rb @@ -1,80 +1,82 @@  require "dependency_collector"  class DependencyCollector -  alias _parse_string_spec parse_string_spec +  module Compat +    # Define the languages that we can handle as external dependencies. +    LANGUAGE_MODULES = Set[ +      :lua, :lua51, :perl, :python, :python3, :ruby +    ].freeze -  # Define the languages that we can handle as external dependencies. -  LANGUAGE_MODULES = Set[ -    :lua, :lua51, :perl, :python, :python3, :ruby -  ].freeze +    def parse_string_spec(spec, tags) +      if (tag = tags.first) && LANGUAGE_MODULES.include?(tag) +        odeprecated "'depends_on :#{tag}'" +        LanguageModuleRequirement.new(tag, spec, tags[1]) +      else +        super +      end +    end -  def parse_string_spec(spec, tags) -    if (tag = tags.first) && LANGUAGE_MODULES.include?(tag) -      odeprecated "'depends_on :#{tag}'" -      LanguageModuleRequirement.new(tag, spec, tags[1]) -    else -      _parse_string_spec(spec, tags) +    def parse_symbol_spec(spec, tags) +      case spec +      when :clt +        odeprecated "'depends_on :clt'" +      when :tex +        odeprecated "'depends_on :tex'" +        TeXRequirement.new(tags) +      when :autoconf, :automake, :bsdmake, :libtool +        output_deprecation(spec) +        autotools_dep(spec, tags) +      when :cairo, :fontconfig, :freetype, :libpng, :pixman +        output_deprecation(spec) +        Dependency.new(spec.to_s, tags) +      when :ant, :expat +        output_deprecation(spec) +        Dependency.new(spec.to_s, tags) +      when :libltdl +        tags << :run +        output_deprecation("libtool") +        Dependency.new("libtool", tags) +      when :apr +        output_deprecation(spec, "apr-util") +        Dependency.new("apr-util", tags) +      when :fortran +        output_deprecation(spec, "gcc") +        Dependency.new("gcc", tags) +      when :gpg +        output_deprecation(spec, "gnupg") +        Dependency.new("gnupg", tags) +      when :hg +        output_deprecation(spec, "mercurial") +        Dependency.new("mercurial", tags) +      when :mpi +        output_deprecation(spec, "open-mpi") +        Dependency.new("open-mpi", tags) +      when :python, :python2 +        output_deprecation(spec, "python") +        Dependency.new("python", tags) +      when :python3 +        output_deprecation(spec, "python3") +        Dependency.new("python3", tags) +      when :emacs, :mysql, :perl, :postgresql, :rbenv, :ruby +        output_deprecation(spec) +        Dependency.new(spec, tags) +      else +        super +      end      end -  end -  alias _parse_symbol_spec parse_symbol_spec +    private -  def parse_symbol_spec(spec, tags) -    case spec -    when :clt -      odeprecated "'depends_on :clt'" -    when :tex -      odeprecated "'depends_on :tex'" -      TeXRequirement.new(tags) -    when :autoconf, :automake, :bsdmake, :libtool -      output_deprecation(spec) -      autotools_dep(spec, tags) -    when :cairo, :fontconfig, :freetype, :libpng, :pixman -      output_deprecation(spec) -      Dependency.new(spec.to_s, tags) -    when :ant, :expat -      output_deprecation(spec) +    def autotools_dep(spec, tags) +      tags << :build unless tags.include? :run        Dependency.new(spec.to_s, tags) -    when :libltdl -      tags << :run -      output_deprecation("libtool") -      Dependency.new("libtool", tags) -    when :apr -      output_deprecation(spec, "apr-util") -      Dependency.new("apr-util", tags) -    when :fortran -      output_deprecation(spec, "gcc") -      Dependency.new("gcc", tags) -    when :gpg -      output_deprecation(spec, "gnupg") -      Dependency.new("gnupg", tags) -    when :hg -      output_deprecation(spec, "mercurial") -      Dependency.new("mercurial", tags) -    when :mpi -      output_deprecation(spec, "open-mpi") -      Dependency.new("open-mpi", tags) -    when :python, :python2 -      output_deprecation(spec, "python") -      Dependency.new("python", tags) -    when :python3 -      output_deprecation(spec, "python3") -      Dependency.new("python3", tags) -    when :emacs, :mysql, :perl, :postgresql, :rbenv, :ruby -      output_deprecation(spec) -      Dependency.new(spec, tags) -    else -      _parse_symbol_spec(spec, tags)      end -  end -  def autotools_dep(spec, tags) -    tags << :build unless tags.include? :run -    Dependency.new(spec.to_s, tags) +    def output_deprecation(dependency, new_dependency = dependency) +      odeprecated "'depends_on :#{dependency}'", +                  "'depends_on \"#{new_dependency}\"'" +    end    end -  def output_deprecation(dependency, new_dependency = dependency) -    odeprecated "'depends_on :#{dependency}'", -                "'depends_on \"#{new_dependency}\"'" -  end +  prepend Compat  end diff --git a/Library/Homebrew/compat/formula_support.rb b/Library/Homebrew/compat/formula_support.rb index f56a4909b..9cb8d8ff1 100644 --- a/Library/Homebrew/compat/formula_support.rb +++ b/Library/Homebrew/compat/formula_support.rb @@ -1,18 +1,20 @@  require "formula_support"  class KegOnlyReason -  alias _to_s to_s +  module Compat +    def to_s +      case @reason +      when :provided_by_osx +        odeprecated "keg_only :provided_by_osx", "keg_only :provided_by_macos" +        @reason = :provided_by_macos +      when :shadowed_by_osx +        odeprecated "keg_only :shadowed_by_osx", "keg_only :shadowed_by_macos" +        @reason = :shadowed_by_macos +      end -  def to_s -    case @reason -    when :provided_by_osx -      odeprecated "keg_only :provided_by_osx", "keg_only :provided_by_macos" -      @reason = :provided_by_macos -    when :shadowed_by_osx -      odeprecated "keg_only :shadowed_by_osx", "keg_only :shadowed_by_macos" -      @reason = :shadowed_by_macos +      super      end - -    _to_s    end + +  prepend Compat  end diff --git a/Library/Homebrew/test/dependency_collector_spec.rb b/Library/Homebrew/test/dependency_collector_spec.rb index 0f182a69e..46e859b2d 100644 --- a/Library/Homebrew/test/dependency_collector_spec.rb +++ b/Library/Homebrew/test/dependency_collector_spec.rb @@ -128,5 +128,15 @@ describe DependencyCollector do        resource.download_strategy = Class.new        expect { subject.add(resource) }.to raise_error(TypeError)      end + +    it "is deprecated when called with a language module", :needs_compat do +      expect(subject).to receive(:odeprecated) +      subject.add("lpeg" => :lua) +    end + +    it "is deprecated when called with deprecated requirements", :needs_compat do +      expect(subject).to receive(:odeprecated) +      subject.add(:python) +    end    end  end diff --git a/Library/Homebrew/test/formula_support_spec.rb b/Library/Homebrew/test/formula_support_spec.rb index f42d61ba9..7239ef352 100644 --- a/Library/Homebrew/test/formula_support_spec.rb +++ b/Library/Homebrew/test/formula_support_spec.rb @@ -3,7 +3,7 @@ require "formula_support"  describe KegOnlyReason do    describe "#to_s" do      it "returns the reason provided" do -      r = KegOnlyReason.new :provided_by_osx, "test" +      r = KegOnlyReason.new :provided_by_macos, "test"        expect(r.to_s).to eq("test")      end @@ -11,6 +11,12 @@ describe KegOnlyReason do        r = KegOnlyReason.new :provided_by_macos, ""        expect(r.to_s).to match(/^macOS already provides/)      end + +    it "is deprecated when reason mentions 'osx'", :needs_compat do +      r = KegOnlyReason.new :provided_by_osx, "test" +      expect(r).to receive(:odeprecated) +      r.to_s +    end    end  end | 
