From 1e867302891f04ba7857d86ea641315d2e1c8e4d Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Mon, 15 Jun 2015 09:56:04 +0100 Subject: Rename requirements named *Dependency. Dependency is another similar, related class and it's super confusing to have some Requirements that are named *Dependency. Closes Homebrew/homebrew#38891. Signed-off-by: Mike McQuaid --- Library/Homebrew/build.rb | 2 +- Library/Homebrew/cmd/audit.rb | 6 +- Library/Homebrew/compat.rb | 1 + Library/Homebrew/compat/requirements.rb | 20 ++++++ Library/Homebrew/dependency_collector.rb | 40 +++++------ Library/Homebrew/formula.rb | 2 +- Library/Homebrew/ld64_dependency.rb | 11 +++ Library/Homebrew/requirements.rb | 32 ++++----- Library/Homebrew/requirements/apr_dependency.rb | 25 ------- Library/Homebrew/requirements/apr_requirement.rb | 25 +++++++ .../Homebrew/requirements/fortran_dependency.rb | 13 ---- .../Homebrew/requirements/fortran_requirement.rb | 13 ++++ Library/Homebrew/requirements/java_dependency.rb | 45 ------------ Library/Homebrew/requirements/java_requirement.rb | 45 ++++++++++++ .../requirements/language_module_dependency.rb | 51 ------------- .../requirements/language_module_requirement.rb | 51 +++++++++++++ Library/Homebrew/requirements/ld64_dependency.rb | 11 --- Library/Homebrew/requirements/mpi_dependency.rb | 67 ----------------- Library/Homebrew/requirements/mpi_requirement.rb | 67 +++++++++++++++++ .../Homebrew/requirements/osxfuse_dependency.rb | 30 -------- .../Homebrew/requirements/osxfuse_requirement.rb | 30 ++++++++ Library/Homebrew/requirements/python_dependency.rb | 58 --------------- .../Homebrew/requirements/python_requirement.rb | 58 +++++++++++++++ Library/Homebrew/requirements/tuntap_dependency.rb | 14 ---- .../Homebrew/requirements/tuntap_requirement.rb | 14 ++++ Library/Homebrew/requirements/x11_dependency.rb | 47 ------------ Library/Homebrew/requirements/x11_requirement.rb | 47 ++++++++++++ Library/Homebrew/test/test_dependencies.rb | 10 +-- Library/Homebrew/test/test_dependency_collector.rb | 16 ++--- .../test/test_language_module_dependency.rb | 83 ---------------------- .../test/test_language_module_requirement.rb | 83 ++++++++++++++++++++++ Library/Homebrew/test/test_mpi_dependency.rb | 12 ---- Library/Homebrew/test/test_mpi_requirement.rb | 12 ++++ Library/Homebrew/test/test_x11_dependency.rb | 40 ----------- Library/Homebrew/test/test_x11_requirement.rb | 40 +++++++++++ 35 files changed, 571 insertions(+), 550 deletions(-) create mode 100644 Library/Homebrew/compat/requirements.rb create mode 100644 Library/Homebrew/ld64_dependency.rb delete mode 100644 Library/Homebrew/requirements/apr_dependency.rb create mode 100644 Library/Homebrew/requirements/apr_requirement.rb delete mode 100644 Library/Homebrew/requirements/fortran_dependency.rb create mode 100644 Library/Homebrew/requirements/fortran_requirement.rb delete mode 100644 Library/Homebrew/requirements/java_dependency.rb create mode 100644 Library/Homebrew/requirements/java_requirement.rb delete mode 100644 Library/Homebrew/requirements/language_module_dependency.rb create mode 100644 Library/Homebrew/requirements/language_module_requirement.rb delete mode 100644 Library/Homebrew/requirements/ld64_dependency.rb delete mode 100644 Library/Homebrew/requirements/mpi_dependency.rb create mode 100644 Library/Homebrew/requirements/mpi_requirement.rb delete mode 100644 Library/Homebrew/requirements/osxfuse_dependency.rb create mode 100644 Library/Homebrew/requirements/osxfuse_requirement.rb delete mode 100644 Library/Homebrew/requirements/python_dependency.rb create mode 100644 Library/Homebrew/requirements/python_requirement.rb delete mode 100644 Library/Homebrew/requirements/tuntap_dependency.rb create mode 100644 Library/Homebrew/requirements/tuntap_requirement.rb delete mode 100644 Library/Homebrew/requirements/x11_dependency.rb create mode 100644 Library/Homebrew/requirements/x11_requirement.rb delete mode 100644 Library/Homebrew/test/test_language_module_dependency.rb create mode 100644 Library/Homebrew/test/test_language_module_requirement.rb delete mode 100644 Library/Homebrew/test/test_mpi_dependency.rb create mode 100644 Library/Homebrew/test/test_mpi_requirement.rb delete mode 100644 Library/Homebrew/test/test_x11_dependency.rb create mode 100644 Library/Homebrew/test/test_x11_requirement.rb (limited to 'Library') diff --git a/Library/Homebrew/build.rb b/Library/Homebrew/build.rb index 0c890c346..a594912c1 100644 --- a/Library/Homebrew/build.rb +++ b/Library/Homebrew/build.rb @@ -81,7 +81,7 @@ class Build if superenv? ENV.keg_only_deps = keg_only_deps.map(&:name) ENV.deps = deps.map { |d| d.to_formula.name } - ENV.x11 = reqs.any? { |rq| rq.kind_of?(X11Dependency) } + ENV.x11 = reqs.any? { |rq| rq.kind_of?(X11Requirement) } ENV.setup_build_environment(formula) post_superenv_hacks reqs.each(&:modify_build_environment) diff --git a/Library/Homebrew/cmd/audit.rb b/Library/Homebrew/cmd/audit.rb index 10f2ab53f..e3e0166a2 100644 --- a/Library/Homebrew/cmd/audit.rb +++ b/Library/Homebrew/cmd/audit.rb @@ -275,7 +275,7 @@ class FormulaAuditor problem "Use `depends_on :fortran` instead of `depends_on 'gfortran'`" when "open-mpi", "mpich2" problem <<-EOS.undent - There are multiple conflicting ways to install MPI. Use an MPIDependency: + There are multiple conflicting ways to install MPI. Use an MPIRequirement: depends_on :mpi => [] Where is a comma delimited list that can include: :cc, :cxx, :f77, :f90 @@ -698,11 +698,11 @@ class FormulaAuditor problem "Define method #{$1.inspect} in the class body, not at the top-level" end - if line =~ /ENV.fortran/ && !formula.requirements.map(&:class).include?(FortranDependency) + if line =~ /ENV.fortran/ && !formula.requirements.map(&:class).include?(FortranRequirement) problem "Use `depends_on :fortran` instead of `ENV.fortran`" end - if line =~ /JAVA_HOME/i && !formula.requirements.map(&:class).include?(JavaDependency) + if line =~ /JAVA_HOME/i && !formula.requirements.map(&:class).include?(JavaRequirement) problem "Use `depends_on :java` to set JAVA_HOME" end diff --git a/Library/Homebrew/compat.rb b/Library/Homebrew/compat.rb index 4343f4bc3..9c9ad8296 100644 --- a/Library/Homebrew/compat.rb +++ b/Library/Homebrew/compat.rb @@ -4,4 +4,5 @@ require 'compat/formula_specialties' require 'compat/hardware' require 'compat/macos' require 'compat/md5' +require 'compat/requirements' require 'compat/version' diff --git a/Library/Homebrew/compat/requirements.rb b/Library/Homebrew/compat/requirements.rb new file mode 100644 index 000000000..3ddc218d5 --- /dev/null +++ b/Library/Homebrew/compat/requirements.rb @@ -0,0 +1,20 @@ +require "requirements" + +XcodeDependency = XcodeRequirement +MysqlDependency = MysqlRequirement +PostgresqlDependency = PostgresqlRequirement +GPGDependency = GPGRequirement +TeXDependency = TeXRequirement +MercurialDependency = MercurialRequirement +GitDependency = GitRequirement +AprDependency = AprRequirement +FortranDependency = FortranRequirement +JavaDependency = JavaRequirement +JavaRequirement = JavaRequirement +LanguageModuleDependency = LanguageModuleRequirement +MPIDependency = MPIRequirement +OsxfuseDependency = OsxfuseRequirement +PythonDependency = PythonRequirement +TuntapDependency = TuntapRequirement +X11Dependency = X11Requirement +ConflictsWithBinaryOsxfuse = NonBinaryOsxfuseRequirement diff --git a/Library/Homebrew/dependency_collector.rb b/Library/Homebrew/dependency_collector.rb index 0211015f7..c9ccde7b9 100644 --- a/Library/Homebrew/dependency_collector.rb +++ b/Library/Homebrew/dependency_collector.rb @@ -1,8 +1,8 @@ require 'dependency' require 'dependencies' +require 'ld64_dependency' require 'requirement' require 'requirements' -require 'requirements/ld64_dependency' require 'set' ## A dependency is a formula that another formula needs to install. @@ -94,7 +94,7 @@ class DependencyCollector elsif tags.empty? Dependency.new(spec, tags) elsif (tag = tags.first) && LANGUAGE_MODULES.include?(tag) - LanguageModuleDependency.new(tag, spec, tags[1]) + LanguageModuleRequirement.new(tag, spec, tags[1]) else Dependency.new(spec, tags) end @@ -102,25 +102,25 @@ class DependencyCollector def parse_symbol_spec(spec, tags) case spec - when :x11 then X11Dependency.new(spec.to_s, tags) - when :xcode then XcodeDependency.new(tags) + when :x11 then X11Requirement.new(spec.to_s, tags) + when :xcode then XcodeRequirement.new(tags) when :macos then MinimumMacOSRequirement.new(tags) - when :mysql then MysqlDependency.new(tags) - when :postgresql then PostgresqlDependency.new(tags) - when :gpg then GPGDependency.new(tags) - when :fortran then FortranDependency.new(tags) - when :mpi then MPIDependency.new(*tags) - when :tex then TeXDependency.new(tags) + when :mysql then MysqlRequirement.new(tags) + when :postgresql then PostgresqlRequirement.new(tags) + when :gpg then GPGRequirement.new(tags) + when :fortran then FortranRequirement.new(tags) + when :mpi then MPIRequirement.new(*tags) + when :tex then TeXRequirement.new(tags) when :arch then ArchRequirement.new(tags) - when :hg then MercurialDependency.new(tags) - when :python then PythonDependency.new(tags) - when :python3 then Python3Dependency.new(tags) - when :java then JavaDependency.new(tags) + when :hg then MercurialRequirement.new(tags) + when :python then PythonRequirement.new(tags) + when :python3 then Python3Requirement.new(tags) + when :java then JavaRequirement.new(tags) when :ruby then RubyRequirement.new(tags) - when :osxfuse then OsxfuseDependency.new(tags) - when :tuntap then TuntapDependency.new(tags) + when :osxfuse then OsxfuseRequirement.new(tags) + when :tuntap then TuntapRequirement.new(tags) when :ant then ant_dep(spec, tags) - when :apr then AprDependency.new(tags) + when :apr then AprRequirement.new(tags) when :emacs then EmacsRequirement.new(tags) # Tiger's ld is too old to properly link some software when :ld64 then LD64Dependency.new if MacOS.version < :leopard @@ -133,7 +133,7 @@ class DependencyCollector tags << :run Dependency.new("libtool", tags) when :python2 - PythonDependency.new(tags) + PythonRequirement.new(tags) else raise ArgumentError, "Unsupported special dependency #{spec.inspect}" end @@ -166,9 +166,9 @@ class DependencyCollector when strategy <= CurlDownloadStrategy parse_url_spec(spec.url, tags) when strategy <= GitDownloadStrategy - GitDependency.new(tags) + GitRequirement.new(tags) when strategy <= MercurialDownloadStrategy - MercurialDependency.new(tags) + MercurialRequirement.new(tags) when strategy <= FossilDownloadStrategy Dependency.new("fossil", tags) when strategy <= BazaarDownloadStrategy diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 979ef3721..e5b02f410 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -616,7 +616,7 @@ class Formula def python(options={}, &block) opoo 'Formula#python is deprecated and will go away shortly.' block.call if block_given? - PythonDependency.new + PythonRequirement.new end alias_method :python2, :python alias_method :python3, :python diff --git a/Library/Homebrew/ld64_dependency.rb b/Library/Homebrew/ld64_dependency.rb new file mode 100644 index 000000000..782a50860 --- /dev/null +++ b/Library/Homebrew/ld64_dependency.rb @@ -0,0 +1,11 @@ +require 'dependency' + +# This special dependency ensures that the Tigerbrew ld64 +# formula is used as gcc's ld in place of the old version +# that comes with the OS. +class LD64Dependency < Dependency + def initialize(name='ld64', tags=[:build], env_proc=nil) + super + @env_proc = proc { ENV.ld64 } + end +end diff --git a/Library/Homebrew/requirements.rb b/Library/Homebrew/requirements.rb index 269657e2e..d15995810 100644 --- a/Library/Homebrew/requirements.rb +++ b/Library/Homebrew/requirements.rb @@ -1,20 +1,20 @@ require 'requirement' -require 'requirements/apr_dependency' -require 'requirements/fortran_dependency' -require 'requirements/language_module_dependency' +require 'requirements/apr_requirement' +require 'requirements/fortran_requirement' +require 'requirements/language_module_requirement' require 'requirements/minimum_macos_requirement' require 'requirements/maximum_macos_requirement' -require 'requirements/mpi_dependency' -require 'requirements/osxfuse_dependency' -require 'requirements/python_dependency' -require 'requirements/java_dependency' +require 'requirements/mpi_requirement' +require 'requirements/osxfuse_requirement' +require 'requirements/python_requirement' +require 'requirements/java_requirement' require 'requirements/ruby_requirement' -require 'requirements/tuntap_dependency' +require 'requirements/tuntap_requirement' require 'requirements/unsigned_kext_requirement' -require 'requirements/x11_dependency' +require 'requirements/x11_requirement' require 'requirements/emacs_requirement' -class XcodeDependency < Requirement +class XcodeRequirement < Requirement fatal true satisfy(:build_env => false) { xcode_installed_version } @@ -52,28 +52,28 @@ class XcodeDependency < Requirement end end -class MysqlDependency < Requirement +class MysqlRequirement < Requirement fatal true default_formula 'mysql' satisfy { which 'mysql_config' } end -class PostgresqlDependency < Requirement +class PostgresqlRequirement < Requirement fatal true default_formula 'postgresql' satisfy { which 'pg_config' } end -class GPGDependency < Requirement +class GPGRequirement < Requirement fatal true default_formula "gpg" satisfy { which("gpg") || which("gpg2") } end -class TeXDependency < Requirement +class TeXRequirement < Requirement fatal true cask "mactex" download "https://www.tug.org/mactex/" @@ -112,14 +112,14 @@ class ArchRequirement < Requirement end end -class MercurialDependency < Requirement +class MercurialRequirement < Requirement fatal true default_formula 'mercurial' satisfy { which('hg') } end -class GitDependency < Requirement +class GitRequirement < Requirement fatal true default_formula 'git' satisfy { !!which('git') } diff --git a/Library/Homebrew/requirements/apr_dependency.rb b/Library/Homebrew/requirements/apr_dependency.rb deleted file mode 100644 index 7dfd83f29..000000000 --- a/Library/Homebrew/requirements/apr_dependency.rb +++ /dev/null @@ -1,25 +0,0 @@ -require "requirement" - -class AprDependency < Requirement - fatal true - default_formula "apr-util" - - satisfy { MacOS::CLT.installed? } - - env do - unless MacOS::CLT.installed? - ENV.prepend_path "PATH", Formula["apr-util"].opt_bin - ENV.prepend_path "PATH", Formula["apr"].opt_bin - ENV.prepend_path "PKG_CONFIG_PATH", "#{Formula["apr"].opt_libexec}/lib/pkgconfig" - ENV.prepend_path "PKG_CONFIG_PATH", "#{Formula["apr-util"].opt_libexec}/lib/pkgconfig" - end - end - - def to_dependency - super.extend Module.new { - def tags - super - [:build] - end - } - end -end diff --git a/Library/Homebrew/requirements/apr_requirement.rb b/Library/Homebrew/requirements/apr_requirement.rb new file mode 100644 index 000000000..313407e12 --- /dev/null +++ b/Library/Homebrew/requirements/apr_requirement.rb @@ -0,0 +1,25 @@ +require "requirement" + +class AprRequirement < Requirement + fatal true + default_formula "apr-util" + + satisfy { MacOS::CLT.installed? } + + env do + unless MacOS::CLT.installed? + ENV.prepend_path "PATH", Formula["apr-util"].opt_bin + ENV.prepend_path "PATH", Formula["apr"].opt_bin + ENV.prepend_path "PKG_CONFIG_PATH", "#{Formula["apr"].opt_libexec}/lib/pkgconfig" + ENV.prepend_path "PKG_CONFIG_PATH", "#{Formula["apr-util"].opt_libexec}/lib/pkgconfig" + end + end + + def to_dependency + super.extend Module.new { + def tags + super - [:build] + end + } + end +end diff --git a/Library/Homebrew/requirements/fortran_dependency.rb b/Library/Homebrew/requirements/fortran_dependency.rb deleted file mode 100644 index 8ab4a8dce..000000000 --- a/Library/Homebrew/requirements/fortran_dependency.rb +++ /dev/null @@ -1,13 +0,0 @@ -require 'requirement' - -class FortranDependency < Requirement - fatal true - - default_formula 'gcc' - - env { ENV.fortran } - - satisfy :build_env => false do - which(ENV["FC"] || "gfortran") - end -end diff --git a/Library/Homebrew/requirements/fortran_requirement.rb b/Library/Homebrew/requirements/fortran_requirement.rb new file mode 100644 index 000000000..a86a1a8ef --- /dev/null +++ b/Library/Homebrew/requirements/fortran_requirement.rb @@ -0,0 +1,13 @@ +require 'requirement' + +class FortranRequirement < Requirement + fatal true + + default_formula 'gcc' + + env { ENV.fortran } + + satisfy :build_env => false do + which(ENV["FC"] || "gfortran") + end +end diff --git a/Library/Homebrew/requirements/java_dependency.rb b/Library/Homebrew/requirements/java_dependency.rb deleted file mode 100644 index 7eb6aefae..000000000 --- a/Library/Homebrew/requirements/java_dependency.rb +++ /dev/null @@ -1,45 +0,0 @@ -require "language/java" - -class JavaDependency < Requirement - fatal true - cask "java" - download "http://www.oracle.com/technetwork/java/javase/downloads/index.html" - - satisfy { java_version } - - env do - java_home = Pathname.new(@java_home) - ENV["JAVA_HOME"] = java_home - ENV.prepend_path "PATH", java_home/"bin" - if (java_home/"include").exist? # Oracle JVM - ENV.append_to_cflags "-I#{java_home}/include" - ENV.append_to_cflags "-I#{java_home}/include/darwin" - else # Apple JVM - ENV.append_to_cflags "-I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/" - end - end - - def initialize(tags) - @version = tags.shift if /(\d\.)+\d/ === tags.first - super - end - - def java_version - args = %w[--failfast] - args << "--version" << "#{@version}" if @version - @java_home = Utils.popen_read("/usr/libexec/java_home", *args).chomp - $?.success? - end - - def message - version_string = " #{@version}" if @version - - s = "Java#{version_string} is required to install this formula." - s += super - s - end - - def inspect - "#<#{self.class.name}: #{name.inspect} #{tags.inspect} version=#{@version.inspect}>" - end -end diff --git a/Library/Homebrew/requirements/java_requirement.rb b/Library/Homebrew/requirements/java_requirement.rb new file mode 100644 index 000000000..1c43ad295 --- /dev/null +++ b/Library/Homebrew/requirements/java_requirement.rb @@ -0,0 +1,45 @@ +require "language/java" + +class JavaRequirement < Requirement + fatal true + cask "java" + download "http://www.oracle.com/technetwork/java/javase/downloads/index.html" + + satisfy { java_version } + + env do + java_home = Pathname.new(@java_home) + ENV["JAVA_HOME"] = java_home + ENV.prepend_path "PATH", java_home/"bin" + if (java_home/"include").exist? # Oracle JVM + ENV.append_to_cflags "-I#{java_home}/include" + ENV.append_to_cflags "-I#{java_home}/include/darwin" + else # Apple JVM + ENV.append_to_cflags "-I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/" + end + end + + def initialize(tags) + @version = tags.shift if /(\d\.)+\d/ === tags.first + super + end + + def java_version + args = %w[--failfast] + args << "--version" << "#{@version}" if @version + @java_home = Utils.popen_read("/usr/libexec/java_home", *args).chomp + $?.success? + end + + def message + version_string = " #{@version}" if @version + + s = "Java#{version_string} is required to install this formula." + s += super + s + end + + def inspect + "#<#{self.class.name}: #{name.inspect} #{tags.inspect} version=#{@version.inspect}>" + end +end diff --git a/Library/Homebrew/requirements/language_module_dependency.rb b/Library/Homebrew/requirements/language_module_dependency.rb deleted file mode 100644 index 2843c5c6c..000000000 --- a/Library/Homebrew/requirements/language_module_dependency.rb +++ /dev/null @@ -1,51 +0,0 @@ -require 'requirement' - -class LanguageModuleDependency < Requirement - fatal true - - def initialize language, module_name, import_name=nil - @language = language - @module_name = module_name - @import_name = import_name || module_name - super([language, module_name, import_name]) - end - - satisfy(:build_env => false) { quiet_system(*the_test) } - - def message; <<-EOS.undent - Unsatisfied dependency: #{@module_name} - Homebrew does not provide #{@language.to_s.capitalize} dependencies; install with: - #{command_line} #{@module_name} - EOS - end - - def the_test - case @language - when :chicken then %W{/usr/bin/env csi -e (use\ #{@import_name})} - when :jruby then %W{/usr/bin/env jruby -rubygems -e require\ '#{@import_name}'} - when :lua then %W{/usr/bin/env luarocks show #{@import_name}} - when :node then %W{/usr/bin/env node -e require('#{@import_name}');} - when :ocaml then %W{/usr/bin/env opam list --installed #{@import_name}} - when :perl then %W{/usr/bin/env perl -e use\ #{@import_name}} - when :python then %W{/usr/bin/env python -c import\ #{@import_name}} - when :python3 then %W{/usr/bin/env python3 -c import\ #{@import_name}} - when :ruby then %W{/usr/bin/env ruby -rubygems -e require\ '#{@import_name}'} - when :rbx then %W{/usr/bin/env rbx -rubygems -e require\ '#{@import_name}'} - end - end - - def command_line - case @language - when :chicken then "chicken-install" - when :jruby then "jruby -S gem install" - when :lua then "luarocks install" - when :node then "npm install" - when :ocaml then "opam install" - when :perl then "cpan -i" - when :python then "pip install" - when :python3 then "pip3 install" - when :rbx then "rbx gem install" - when :ruby then "gem install" - end - end -end diff --git a/Library/Homebrew/requirements/language_module_requirement.rb b/Library/Homebrew/requirements/language_module_requirement.rb new file mode 100644 index 000000000..47cbe8bc1 --- /dev/null +++ b/Library/Homebrew/requirements/language_module_requirement.rb @@ -0,0 +1,51 @@ +require 'requirement' + +class LanguageModuleRequirement < Requirement + fatal true + + def initialize language, module_name, import_name=nil + @language = language + @module_name = module_name + @import_name = import_name || module_name + super([language, module_name, import_name]) + end + + satisfy(:build_env => false) { quiet_system(*the_test) } + + def message; <<-EOS.undent + Unsatisfied dependency: #{@module_name} + Homebrew does not provide #{@language.to_s.capitalize} dependencies; install with: + #{command_line} #{@module_name} + EOS + end + + def the_test + case @language + when :chicken then %W{/usr/bin/env csi -e (use\ #{@import_name})} + when :jruby then %W{/usr/bin/env jruby -rubygems -e require\ '#{@import_name}'} + when :lua then %W{/usr/bin/env luarocks show #{@import_name}} + when :node then %W{/usr/bin/env node -e require('#{@import_name}');} + when :ocaml then %W{/usr/bin/env opam list --installed #{@import_name}} + when :perl then %W{/usr/bin/env perl -e use\ #{@import_name}} + when :python then %W{/usr/bin/env python -c import\ #{@import_name}} + when :python3 then %W{/usr/bin/env python3 -c import\ #{@import_name}} + when :ruby then %W{/usr/bin/env ruby -rubygems -e require\ '#{@import_name}'} + when :rbx then %W{/usr/bin/env rbx -rubygems -e require\ '#{@import_name}'} + end + end + + def command_line + case @language + when :chicken then "chicken-install" + when :jruby then "jruby -S gem install" + when :lua then "luarocks install" + when :node then "npm install" + when :ocaml then "opam install" + when :perl then "cpan -i" + when :python then "pip install" + when :python3 then "pip3 install" + when :rbx then "rbx gem install" + when :ruby then "gem install" + end + end +end diff --git a/Library/Homebrew/requirements/ld64_dependency.rb b/Library/Homebrew/requirements/ld64_dependency.rb deleted file mode 100644 index 782a50860..000000000 --- a/Library/Homebrew/requirements/ld64_dependency.rb +++ /dev/null @@ -1,11 +0,0 @@ -require 'dependency' - -# This special dependency ensures that the Tigerbrew ld64 -# formula is used as gcc's ld in place of the old version -# that comes with the OS. -class LD64Dependency < Dependency - def initialize(name='ld64', tags=[:build], env_proc=nil) - super - @env_proc = proc { ENV.ld64 } - end -end diff --git a/Library/Homebrew/requirements/mpi_dependency.rb b/Library/Homebrew/requirements/mpi_dependency.rb deleted file mode 100644 index 9a5547a73..000000000 --- a/Library/Homebrew/requirements/mpi_dependency.rb +++ /dev/null @@ -1,67 +0,0 @@ -require 'requirement' - -# There are multiple implementations of MPI-2 available. -# http://www.mpi-forum.org/ -# This requirement is used to find an appropriate one. -class MPIDependency < Requirement - - attr_reader :lang_list - - fatal true - - default_formula 'open-mpi' - - env :userpaths - - # This method must accept varargs rather than an array for - # backwards compatibility with formulae that call it directly. - def initialize(*tags) - @non_functional = [] - @unknown_langs = [] - @lang_list = [:cc, :cxx, :f77, :f90] & tags - tags -= @lang_list - super(tags) - end - - def mpi_wrapper_works? compiler - compiler = which compiler - return false if compiler.nil? or not compiler.executable? - - # Some wrappers are non-functional and will return a non-zero exit code - # when invoked for version info. - # - # NOTE: A better test may be to do a small test compilation a la autotools. - quiet_system compiler, '--version' - end - - def inspect - "#<#{self.class.name}: #{name.inspect} #{tags.inspect} lang_list=#{@lang_list.inspect}>" - end - - satisfy do - @lang_list.each do |lang| - case lang - when :cc, :cxx, :f90, :f77 - compiler = 'mpi' + lang.to_s - @non_functional << compiler unless mpi_wrapper_works? compiler - else - @unknown_langs << lang.to_s - end - end - @unknown_langs.empty? and @non_functional.empty? - end - - env do - # Set environment variables to help configure scripts find MPI compilers. - # Variable names taken from: - # https://www.gnu.org/software/autoconf-archive/ax_mpi.html - @lang_list.each do |lang| - compiler = 'mpi' + lang.to_s - mpi_path = which compiler - - # Fortran 90 environment var has a different name - compiler = 'MPIFC' if lang == :f90 - ENV[compiler.upcase] = mpi_path - end - end -end diff --git a/Library/Homebrew/requirements/mpi_requirement.rb b/Library/Homebrew/requirements/mpi_requirement.rb new file mode 100644 index 000000000..5ed042a41 --- /dev/null +++ b/Library/Homebrew/requirements/mpi_requirement.rb @@ -0,0 +1,67 @@ +require 'requirement' + +# There are multiple implementations of MPI-2 available. +# http://www.mpi-forum.org/ +# This requirement is used to find an appropriate one. +class MPIRequirement < Requirement + + attr_reader :lang_list + + fatal true + + default_formula 'open-mpi' + + env :userpaths + + # This method must accept varargs rather than an array for + # backwards compatibility with formulae that call it directly. + def initialize(*tags) + @non_functional = [] + @unknown_langs = [] + @lang_list = [:cc, :cxx, :f77, :f90] & tags + tags -= @lang_list + super(tags) + end + + def mpi_wrapper_works? compiler + compiler = which compiler + return false if compiler.nil? or not compiler.executable? + + # Some wrappers are non-functional and will return a non-zero exit code + # when invoked for version info. + # + # NOTE: A better test may be to do a small test compilation a la autotools. + quiet_system compiler, '--version' + end + + def inspect + "#<#{self.class.name}: #{name.inspect} #{tags.inspect} lang_list=#{@lang_list.inspect}>" + end + + satisfy do + @lang_list.each do |lang| + case lang + when :cc, :cxx, :f90, :f77 + compiler = 'mpi' + lang.to_s + @non_functional << compiler unless mpi_wrapper_works? compiler + else + @unknown_langs << lang.to_s + end + end + @unknown_langs.empty? and @non_functional.empty? + end + + env do + # Set environment variables to help configure scripts find MPI compilers. + # Variable names taken from: + # https://www.gnu.org/software/autoconf-archive/ax_mpi.html + @lang_list.each do |lang| + compiler = 'mpi' + lang.to_s + mpi_path = which compiler + + # Fortran 90 environment var has a different name + compiler = 'MPIFC' if lang == :f90 + ENV[compiler.upcase] = mpi_path + end + end +end diff --git a/Library/Homebrew/requirements/osxfuse_dependency.rb b/Library/Homebrew/requirements/osxfuse_dependency.rb deleted file mode 100644 index f1acf68e9..000000000 --- a/Library/Homebrew/requirements/osxfuse_dependency.rb +++ /dev/null @@ -1,30 +0,0 @@ -require "requirement" - -class OsxfuseDependency < Requirement - fatal true - default_formula "osxfuse" - cask "osxfuse" - download "https://osxfuse" - - satisfy { Formula["osxfuse"].installed? || self.class.binary_osxfuse_installed? } - - def self.binary_osxfuse_installed? - File.exist?("/usr/local/include/osxfuse/fuse.h") && !File.symlink?("/usr/local/include/osxfuse") - end - - env do - ENV.append_path "PKG_CONFIG_PATH", HOMEBREW_PREFIX/"Library/ENV/pkgconfig/fuse" - end -end - -class ConflictsWithBinaryOsxfuse < Requirement - fatal true - satisfy { HOMEBREW_PREFIX.to_s != "/usr/local" || !OsxfuseDependency.binary_osxfuse_installed? } - - def message - <<-EOS.undent - osxfuse is already installed from the binary distribution and - conflicts with this formula. - EOS - end -end diff --git a/Library/Homebrew/requirements/osxfuse_requirement.rb b/Library/Homebrew/requirements/osxfuse_requirement.rb new file mode 100644 index 000000000..190d71cde --- /dev/null +++ b/Library/Homebrew/requirements/osxfuse_requirement.rb @@ -0,0 +1,30 @@ +require "requirement" + +class OsxfuseRequirement < Requirement + fatal true + default_formula "osxfuse" + cask "osxfuse" + download "https://osxfuse" + + satisfy { Formula["osxfuse"].installed? || self.class.binary_osxfuse_installed? } + + def self.binary_osxfuse_installed? + File.exist?("/usr/local/include/osxfuse/fuse.h") && !File.symlink?("/usr/local/include/osxfuse") + end + + env do + ENV.append_path "PKG_CONFIG_PATH", HOMEBREW_PREFIX/"Library/ENV/pkgconfig/fuse" + end +end + +class NonBinaryOsxfuseRequirement < Requirement + fatal true + satisfy { HOMEBREW_PREFIX.to_s != "/usr/local" || !OsxfuseRequirement.binary_osxfuse_installed? } + + def message + <<-EOS.undent + osxfuse is already installed from the binary distribution and + conflicts with this formula. + EOS + end +end diff --git a/Library/Homebrew/requirements/python_dependency.rb b/Library/Homebrew/requirements/python_dependency.rb deleted file mode 100644 index f5276cb4e..000000000 --- a/Library/Homebrew/requirements/python_dependency.rb +++ /dev/null @@ -1,58 +0,0 @@ -require "language/python" - -class PythonDependency < Requirement - fatal true - default_formula "python" - cask "python" - - satisfy :build_env => false do - python = which_python - next unless python - version = python_short_version - next unless version - # Always use Python 2.7 for consistency on older versions of OSX. - version == Version.new("2.7") - end - - def pour_bottle? - build? || system_python? - end - - env do - if system_python? - if python_binary == "python" - version = python_short_version - ENV["PYTHONPATH"] = "#{HOMEBREW_PREFIX}/lib/python#{version}/site-packages" - end - elsif which_python - ENV.prepend_path "PATH", which_python.dirname - end - end - - def python_short_version - @short_version ||= Language::Python.major_minor_version which_python - end - - def which_python - python = which python_binary - return unless python - Pathname.new Utils.popen_read(python, "-c", "import sys; print(sys.executable)").strip - end - - def system_python; "/usr/bin/#{python_binary}" end - def system_python?; system_python == which_python.to_s end - def python_binary; "python" end - - # Deprecated - alias_method :to_s, :python_binary -end - -class Python3Dependency < PythonDependency - fatal true - default_formula "python3" - cask "python3" - - satisfy(:build_env => false) { which_python } - - def python_binary; "python3" end -end diff --git a/Library/Homebrew/requirements/python_requirement.rb b/Library/Homebrew/requirements/python_requirement.rb new file mode 100644 index 000000000..df9d7328c --- /dev/null +++ b/Library/Homebrew/requirements/python_requirement.rb @@ -0,0 +1,58 @@ +require "language/python" + +class PythonRequirement < Requirement + fatal true + default_formula "python" + cask "python" + + satisfy :build_env => false do + python = which_python + next unless python + version = python_short_version + next unless version + # Always use Python 2.7 for consistency on older versions of OSX. + version == Version.new("2.7") + end + + def pour_bottle? + build? || system_python? + end + + env do + if system_python? + if python_binary == "python" + version = python_short_version + ENV["PYTHONPATH"] = "#{HOMEBREW_PREFIX}/lib/python#{version}/site-packages" + end + elsif which_python + ENV.prepend_path "PATH", which_python.dirname + end + end + + def python_short_version + @short_version ||= Language::Python.major_minor_version which_python + end + + def which_python + python = which python_binary + return unless python + Pathname.new Utils.popen_read(python, "-c", "import sys; print(sys.executable)").strip + end + + def system_python; "/usr/bin/#{python_binary}" end + def system_python?; system_python == which_python.to_s end + def python_binary; "python" end + + # Deprecated + alias_method :to_s, :python_binary +end + +class Python3Requirement < PythonRequirement + fatal true + default_formula "python3" + cask "python3" + + satisfy(:build_env => false) { which_python } + + def python_binary; "python3" end +end diff --git a/Library/Homebrew/requirements/tuntap_dependency.rb b/Library/Homebrew/requirements/tuntap_dependency.rb deleted file mode 100644 index c3fa98ce1..000000000 --- a/Library/Homebrew/requirements/tuntap_dependency.rb +++ /dev/null @@ -1,14 +0,0 @@ -require "requirement" - -class TuntapDependency < Requirement - fatal true - default_formula "tuntap" - cask "tuntap" - satisfy { self.class.binary_tuntap_installed? || Formula["tuntap"].installed? } - - def self.binary_tuntap_installed? - File.exist?("/Library/Extensions/tun.kext") && File.exist?("/Library/Extensions/tap.kext") - File.exist?("/Library/LaunchDaemons/net.sf.tuntaposx.tun.plist") - File.exist?("/Library/LaunchDaemons/net.sf.tuntaposx.tap.plist") - end -end diff --git a/Library/Homebrew/requirements/tuntap_requirement.rb b/Library/Homebrew/requirements/tuntap_requirement.rb new file mode 100644 index 000000000..1581393ac --- /dev/null +++ b/Library/Homebrew/requirements/tuntap_requirement.rb @@ -0,0 +1,14 @@ +require "requirement" + +class TuntapRequirement < Requirement + fatal true + default_formula "tuntap" + cask "tuntap" + satisfy { self.class.binary_tuntap_installed? || Formula["tuntap"].installed? } + + def self.binary_tuntap_installed? + File.exist?("/Library/Extensions/tun.kext") && File.exist?("/Library/Extensions/tap.kext") + File.exist?("/Library/LaunchDaemons/net.sf.tuntaposx.tun.plist") + File.exist?("/Library/LaunchDaemons/net.sf.tuntaposx.tap.plist") + end +end diff --git a/Library/Homebrew/requirements/x11_dependency.rb b/Library/Homebrew/requirements/x11_dependency.rb deleted file mode 100644 index 5f7e4b526..000000000 --- a/Library/Homebrew/requirements/x11_dependency.rb +++ /dev/null @@ -1,47 +0,0 @@ -require "requirement" - -class X11Dependency < Requirement - include Comparable - attr_reader :min_version - - fatal true - cask "xquartz" - download "https://xquartz.macosforge.org" - - env { ENV.x11 } - - def initialize(name="x11", tags=[]) - @name = name - if /(\d\.)+\d/ === tags.first - @min_version = Version.new(tags.shift) - @min_version_string = " #{@min_version}" - else - @min_version = Version.new("0.0.0") - @min_version_string = "" - end - super(tags) - end - - satisfy :build_env => false do - MacOS::XQuartz.installed? && min_version <= Version.new(MacOS::XQuartz.version) - end - - def message - s = "XQuartz#{@min_version_string} is required to install this formula." - s += super - s - end - - def <=> other - return unless X11Dependency === other - min_version <=> other.min_version - end - - def eql?(other) - super && min_version == other.min_version - end - - def inspect - "#<#{self.class.name}: #{name.inspect} #{tags.inspect} min_version=#{min_version}>" - end -end diff --git a/Library/Homebrew/requirements/x11_requirement.rb b/Library/Homebrew/requirements/x11_requirement.rb new file mode 100644 index 000000000..890ef4d4f --- /dev/null +++ b/Library/Homebrew/requirements/x11_requirement.rb @@ -0,0 +1,47 @@ +require "requirement" + +class X11Requirement < Requirement + include Comparable + attr_reader :min_version + + fatal true + cask "xquartz" + download "https://xquartz.macosforge.org" + + env { ENV.x11 } + + def initialize(name="x11", tags=[]) + @name = name + if /(\d\.)+\d/ === tags.first + @min_version = Version.new(tags.shift) + @min_version_string = " #{@min_version}" + else + @min_version = Version.new("0.0.0") + @min_version_string = "" + end + super(tags) + end + + satisfy :build_env => false do + MacOS::XQuartz.installed? && min_version <= Version.new(MacOS::XQuartz.version) + end + + def message + s = "XQuartz#{@min_version_string} is required to install this formula." + s += super + s + end + + def <=> other + return unless X11Requirement === other + min_version <=> other.min_version + end + + def eql?(other) + super && min_version == other.min_version + end + + def inspect + "#<#{self.class.name}: #{name.inspect} #{tags.inspect} min_version=#{min_version}>" + end +end diff --git a/Library/Homebrew/test/test_dependencies.rb b/Library/Homebrew/test/test_dependencies.rb index 1c64e26e8..b587cd12a 100644 --- a/Library/Homebrew/test/test_dependencies.rb +++ b/Library/Homebrew/test/test_dependencies.rb @@ -83,19 +83,19 @@ class RequirementsTests < Homebrew::TestCase end def test_merging_multiple_dependencies - @reqs << X11Dependency.new << X11Dependency.new + @reqs << X11Requirement.new << X11Requirement.new assert_equal 1, @reqs.count @reqs << Requirement.new assert_equal 2, @reqs.count end def test_comparison_prefers_larger - @reqs << X11Dependency.new << X11Dependency.new("x11", %w[2.6]) - assert_equal [X11Dependency.new("x11", %w[2.6])], @reqs.to_a + @reqs << X11Requirement.new << X11Requirement.new("x11", %w[2.6]) + assert_equal [X11Requirement.new("x11", %w[2.6])], @reqs.to_a end def test_comparison_does_not_merge_smaller - @reqs << X11Dependency.new("x11", %w{2.6}) << X11Dependency.new - assert_equal [X11Dependency.new("x11", %w[2.6])], @reqs.to_a + @reqs << X11Requirement.new("x11", %w{2.6}) << X11Requirement.new + assert_equal [X11Requirement.new("x11", %w[2.6])], @reqs.to_a end end diff --git a/Library/Homebrew/test/test_dependency_collector.rb b/Library/Homebrew/test/test_dependency_collector.rb index 6700a97c8..1f4ffc784 100644 --- a/Library/Homebrew/test/test_dependency_collector.rb +++ b/Library/Homebrew/test/test_dependency_collector.rb @@ -39,7 +39,7 @@ class DependencyCollectorTests < Homebrew::TestCase def test_requirement_creation @d.add :x11 - assert_instance_of X11Dependency, find_requirement(X11Dependency) + assert_instance_of X11Requirement, find_requirement(X11Requirement) end def test_no_duplicate_requirements @@ -50,28 +50,28 @@ class DependencyCollectorTests < Homebrew::TestCase def test_requirement_tags @d.add :x11 => '2.5.1' @d.add :xcode => :build - assert_empty find_requirement(X11Dependency).tags - assert_predicate find_requirement(XcodeDependency), :build? + assert_empty find_requirement(X11Requirement).tags + assert_predicate find_requirement(XcodeRequirement), :build? end def test_x11_no_tag @d.add :x11 - assert_empty find_requirement(X11Dependency).tags + assert_empty find_requirement(X11Requirement).tags end def test_x11_min_version @d.add :x11 => '2.5.1' - assert_equal "2.5.1", find_requirement(X11Dependency).min_version.to_s + assert_equal "2.5.1", find_requirement(X11Requirement).min_version.to_s end def test_x11_tag @d.add :x11 => :optional - assert_predicate find_requirement(X11Dependency), :optional? + assert_predicate find_requirement(X11Requirement), :optional? end def test_x11_min_version_and_tag @d.add :x11 => ['2.5.1', :optional] - dep = find_requirement(X11Dependency) + dep = find_requirement(X11Requirement) assert_equal '2.5.1', dep.min_version.to_s assert_predicate dep, :optional? end @@ -104,7 +104,7 @@ class DependencyCollectorTests < Homebrew::TestCase def test_resource_dep_git_url resource = Resource.new resource.url("git://example.com/foo/bar.git") - assert_instance_of GitDependency, @d.add(resource) + assert_instance_of GitRequirement, @d.add(resource) end def test_resource_dep_gzip_url diff --git a/Library/Homebrew/test/test_language_module_dependency.rb b/Library/Homebrew/test/test_language_module_dependency.rb deleted file mode 100644 index a06765c29..000000000 --- a/Library/Homebrew/test/test_language_module_dependency.rb +++ /dev/null @@ -1,83 +0,0 @@ -require 'testing_env' -require 'requirements/language_module_dependency' - -class LanguageModuleDependencyTests < Homebrew::TestCase - parallelize_me! - - def assert_deps_fail(spec) - refute_predicate LanguageModuleDependency.new(*spec.shift.reverse), :satisfied? - end - - def assert_deps_pass(spec) - assert_predicate LanguageModuleDependency.new(*spec.shift.reverse), :satisfied? - end - - def test_unique_deps_are_not_eql - x = LanguageModuleDependency.new(:node, "less") - y = LanguageModuleDependency.new(:node, "coffee-script") - refute_eql x, y - refute_equal x.hash, y.hash - end - - def test_differing_module_and_import_name - mod_name = "foo" - import_name = "bar" - l = LanguageModuleDependency.new(:python, mod_name, import_name) - assert_includes l.message, mod_name - assert_includes l.the_test, "import #{import_name}" - end - - def test_bad_perl_deps - assert_deps_fail "notapackage" => :perl - end - - def test_good_perl_deps - assert_deps_pass "ENV" => :perl - end - - def test_bad_python_deps - assert_deps_fail "notapackage" => :python - end - - def test_good_python_deps - assert_deps_pass "datetime" => :python - end - - def test_bad_ruby_deps - assert_deps_fail "notapackage" => :ruby - end - - def test_good_ruby_deps - assert_deps_pass "date" => :ruby - end - - if which("rbx") - def test_bad_rubinius_deps - assert_deps_fail "notapackage" => :rbx - end - - def test_good_rubinius_deps - assert_deps_pass "date" => :rbx - end - end - - if which("csc") - def test_bad_chicken_deps - assert_deps_fail "notapackage" => :chicken - end - - def test_good_chicken_deps - assert_deps_pass "extras" => :chicken - end - end - - if which("node") - def test_bad_node_deps - assert_deps_fail "notapackage" => :node - end - - def test_good_node_deps - assert_deps_pass "util" => :node - end - end -end diff --git a/Library/Homebrew/test/test_language_module_requirement.rb b/Library/Homebrew/test/test_language_module_requirement.rb new file mode 100644 index 000000000..4a64e5ba7 --- /dev/null +++ b/Library/Homebrew/test/test_language_module_requirement.rb @@ -0,0 +1,83 @@ +require 'testing_env' +require 'requirements/language_module_requirement' + +class LanguageModuleRequirementTests < Homebrew::TestCase + parallelize_me! + + def assert_deps_fail(spec) + refute_predicate LanguageModuleRequirement.new(*spec.shift.reverse), :satisfied? + end + + def assert_deps_pass(spec) + assert_predicate LanguageModuleRequirement.new(*spec.shift.reverse), :satisfied? + end + + def test_unique_deps_are_not_eql + x = LanguageModuleRequirement.new(:node, "less") + y = LanguageModuleRequirement.new(:node, "coffee-script") + refute_eql x, y + refute_equal x.hash, y.hash + end + + def test_differing_module_and_import_name + mod_name = "foo" + import_name = "bar" + l = LanguageModuleRequirement.new(:python, mod_name, import_name) + assert_includes l.message, mod_name + assert_includes l.the_test, "import #{import_name}" + end + + def test_bad_perl_deps + assert_deps_fail "notapackage" => :perl + end + + def test_good_perl_deps + assert_deps_pass "ENV" => :perl + end + + def test_bad_python_deps + assert_deps_fail "notapackage" => :python + end + + def test_good_python_deps + assert_deps_pass "datetime" => :python + end + + def test_bad_ruby_deps + assert_deps_fail "notapackage" => :ruby + end + + def test_good_ruby_deps + assert_deps_pass "date" => :ruby + end + + if which("rbx") + def test_bad_rubinius_deps + assert_deps_fail "notapackage" => :rbx + end + + def test_good_rubinius_deps + assert_deps_pass "date" => :rbx + end + end + + if which("csc") + def test_bad_chicken_deps + assert_deps_fail "notapackage" => :chicken + end + + def test_good_chicken_deps + assert_deps_pass "extras" => :chicken + end + end + + if which("node") + def test_bad_node_deps + assert_deps_fail "notapackage" => :node + end + + def test_good_node_deps + assert_deps_pass "util" => :node + end + end +end diff --git a/Library/Homebrew/test/test_mpi_dependency.rb b/Library/Homebrew/test/test_mpi_dependency.rb deleted file mode 100644 index c90c767e7..000000000 --- a/Library/Homebrew/test/test_mpi_dependency.rb +++ /dev/null @@ -1,12 +0,0 @@ -require 'testing_env' -require 'requirements/mpi_dependency' - -class MPIDependencyTests < Homebrew::TestCase - def test_initialize_untangles_tags_and_wrapper_symbols - wrappers = [:cc, :cxx, :f77] - tags = [:optional, 'some-other-tag'] - dep = MPIDependency.new(*wrappers + tags) - assert_equal wrappers, dep.lang_list - assert_equal tags, dep.tags - end -end diff --git a/Library/Homebrew/test/test_mpi_requirement.rb b/Library/Homebrew/test/test_mpi_requirement.rb new file mode 100644 index 000000000..0b8555cd4 --- /dev/null +++ b/Library/Homebrew/test/test_mpi_requirement.rb @@ -0,0 +1,12 @@ +require 'testing_env' +require 'requirements/mpi_requirement' + +class MPIRequirementTests < Homebrew::TestCase + def test_initialize_untangles_tags_and_wrapper_symbols + wrappers = [:cc, :cxx, :f77] + tags = [:optional, 'some-other-tag'] + dep = MPIRequirement.new(*wrappers + tags) + assert_equal wrappers, dep.lang_list + assert_equal tags, dep.tags + end +end diff --git a/Library/Homebrew/test/test_x11_dependency.rb b/Library/Homebrew/test/test_x11_dependency.rb deleted file mode 100644 index bc4d72761..000000000 --- a/Library/Homebrew/test/test_x11_dependency.rb +++ /dev/null @@ -1,40 +0,0 @@ -require 'testing_env' -require 'requirements/x11_dependency' - -class X11DependencyTests < Homebrew::TestCase - def test_eql_instances_are_eql - x = X11Dependency.new - y = X11Dependency.new - assert_eql x, y - assert_equal x.hash, y.hash - end - - def test_not_eql_when_hashes_differ - x = X11Dependency.new("foo") - y = X11Dependency.new - refute_eql x, y - refute_equal x.hash, y.hash - end - - def test_different_min_version - x = X11Dependency.new - y = X11Dependency.new("x11", %w[2.5]) - refute_eql x, y - end - - def test_x_env - x = X11Dependency.new - x.stubs(:satisfied?).returns(true) - ENV.expects(:x11) - x.modify_build_environment - end - - def test_satisfied - MacOS::XQuartz.stubs(:version).returns("2.7.5") - MacOS::XQuartz.stubs(:installed?).returns(true) - assert_predicate X11Dependency.new, :satisfied? - - MacOS::XQuartz.stubs(:installed?).returns(false) - refute_predicate X11Dependency.new, :satisfied? - end -end diff --git a/Library/Homebrew/test/test_x11_requirement.rb b/Library/Homebrew/test/test_x11_requirement.rb new file mode 100644 index 000000000..0f7ffe004 --- /dev/null +++ b/Library/Homebrew/test/test_x11_requirement.rb @@ -0,0 +1,40 @@ +require 'testing_env' +require 'requirements/x11_requirement' + +class X11RequirementTests < Homebrew::TestCase + def test_eql_instances_are_eql + x = X11Requirement.new + y = X11Requirement.new + assert_eql x, y + assert_equal x.hash, y.hash + end + + def test_not_eql_when_hashes_differ + x = X11Requirement.new("foo") + y = X11Requirement.new + refute_eql x, y + refute_equal x.hash, y.hash + end + + def test_different_min_version + x = X11Requirement.new + y = X11Requirement.new("x11", %w[2.5]) + refute_eql x, y + end + + def test_x_env + x = X11Requirement.new + x.stubs(:satisfied?).returns(true) + ENV.expects(:x11) + x.modify_build_environment + end + + def test_satisfied + MacOS::XQuartz.stubs(:version).returns("2.7.5") + MacOS::XQuartz.stubs(:installed?).returns(true) + assert_predicate X11Requirement.new, :satisfied? + + MacOS::XQuartz.stubs(:installed?).returns(false) + refute_predicate X11Requirement.new, :satisfied? + end +end -- cgit v1.2.3