aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike McQuaid2018-01-19 08:11:07 +0000
committerGitHub2018-01-19 08:11:07 +0000
commit985202cf8e3f9e221753dd99adf1e8874fece03a (patch)
tree108c43249bdbf86fd0448d2bcee257e11edc57a3
parent02e4cae3d0f3fb7065ea3e9c0c4877f70c92689d (diff)
parent78c829790d990b324320c3089c74eaec95c5ec31 (diff)
downloadbrew-1.5.0.tar.bz2
Merge pull request #3696 from alyssais/prepend1.5.0
`prepend` instead of alias hacks for deprecations
-rw-r--r--Library/Homebrew/compat.rb1
-rw-r--r--Library/Homebrew/compat/dependency_collector.rb134
-rw-r--r--Library/Homebrew/compat/formula_support.rb24
-rw-r--r--Library/Homebrew/test/dependency_collector_spec.rb10
-rw-r--r--Library/Homebrew/test/formula_support_spec.rb8
5 files changed, 99 insertions, 78 deletions
diff --git a/Library/Homebrew/compat.rb b/Library/Homebrew/compat.rb
index d829e900c..6c3fa2dbb 100644
--- a/Library/Homebrew/compat.rb
+++ b/Library/Homebrew/compat.rb
@@ -3,6 +3,7 @@ require "compat/tap"
require "compat/hbc"
require "compat/formula"
require "compat/formula_specialties"
+require "compat/formula_support"
require "compat/global"
require "compat/hardware"
require "compat/macos"
diff --git a/Library/Homebrew/compat/dependency_collector.rb b/Library/Homebrew/compat/dependency_collector.rb
index 1c91f2283..84d5431f3 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.inspect}'"
+ 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