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 | |
| parent | 02e4cae3d0f3fb7065ea3e9c0c4877f70c92689d (diff) | |
| download | brew-8874d1fb139516bd40f11f5427418ded693db88a.tar.bz2 | |
`prepend` instead of alias hacks for deprecations
| -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 |
