diff options
| author | Bruce Steedman | 2016-10-03 09:42:53 +0100 | 
|---|---|---|
| committer | Bruce Steedman | 2016-10-03 09:42:53 +0100 | 
| commit | 62e14ea6733c9302889bc89820c7f88fbb593964 (patch) | |
| tree | de02ec25a7931841b68c3139f67228c827b5090c | |
| parent | 1e1903e4cc0ef928081ebab6b7a8e478de493b2a (diff) | |
| download | brew-62e14ea6733c9302889bc89820c7f88fbb593964.tar.bz2 | |
invalid build options - fixed conflicts; rename
| -rw-r--r-- | Library/Homebrew/build_options.rb | 9 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/install.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/formula_installer.rb | 7 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_build_options.rb | 15 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_formula_installer.rb | 1 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_install.rb | 6 | 
6 files changed, 40 insertions, 2 deletions
| diff --git a/Library/Homebrew/build_options.rb b/Library/Homebrew/build_options.rb index e9a06f4e0..1c44af147 100644 --- a/Library/Homebrew/build_options.rb +++ b/Library/Homebrew/build_options.rb @@ -101,6 +101,15 @@ class BuildOptions      @options - @args    end +  # @private +  def invalid_options +    @args - @options +  end + +  def invalid_option_names +    invalid_options.map(&:flag).sort +  end +    private    def option_defined?(name) diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index 402a159db..aa316b187 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -261,7 +261,9 @@ module Homebrew      f.print_tap_action      fi = FormulaInstaller.new(f) -    fi.options             = f.build.used_options +    build_options          = f.build +    fi.options             = build_options.used_options +    fi.invalid_opt_names   = build_options.invalid_option_names      fi.ignore_deps         = ARGV.ignore_deps?      fi.only_deps           = ARGV.only_deps?      fi.build_bottle        = ARGV.build_bottle? diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 09c11318e..f678acaf8 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -32,7 +32,7 @@ class FormulaInstaller    end    attr_reader :formula -  attr_accessor :options, :build_bottle +  attr_accessor :options, :build_bottle, :invalid_opt_names    mode_attr_accessor :show_summary_heading, :show_header    mode_attr_accessor :build_from_source, :force_bottle    mode_attr_accessor :ignore_deps, :only_deps, :interactive, :git @@ -52,6 +52,7 @@ class FormulaInstaller      @quieter = false      @debug = false      @options = Options.new +    @invalid_opt_names = []      @@attempted ||= Set.new @@ -214,6 +215,10 @@ class FormulaInstaller        opoo "#{formula.full_name}: #{old_flag} was deprecated; using #{new_flag} instead!"      end +    invalid_opt_names.each do |option| +      opoo "#{formula.full_name}: #{option} is invalid for this formula and will be ignored!" +    end +      oh1 "Installing #{Formatter.identifier(formula.full_name)}" if show_header?      if formula.tap && !formula.tap.private? diff --git a/Library/Homebrew/test/test_build_options.rb b/Library/Homebrew/test/test_build_options.rb index dab418792..02f4be0fa 100644 --- a/Library/Homebrew/test/test_build_options.rb +++ b/Library/Homebrew/test/test_build_options.rb @@ -7,6 +7,8 @@ class BuildOptionsTests < Homebrew::TestCase      args = Options.create(%w[--with-foo --with-bar --without-qux])      opts = Options.create(%w[--with-foo --with-bar --without-baz --without-qux])      @build = BuildOptions.new(args, opts) +    bad_args = Options.create(%w[--with-foo --with-bar --without-bas --without-qux --without-abc]) +    @bad_build = BuildOptions.new(bad_args, opts)    end    def test_include @@ -31,4 +33,17 @@ class BuildOptionsTests < Homebrew::TestCase    def test_unused_options      assert_includes @build.unused_options, "--without-baz"    end + +  def test_invalid_options +    assert_empty @build.invalid_options +    assert_includes @bad_build.invalid_options, "--without-bas" +    assert_includes @bad_build.invalid_options, "--without-abc" +    refute_includes @bad_build.invalid_options, "--with-foo" +    refute_includes @bad_build.invalid_options, "--with-baz" +  end + +  def test_invalid_opt_names +    assert_empty @build.invalid_opt_names +    assert_equal @bad_build.invalid_opt_names, %w[--without-abc --without-bas] +  end  end diff --git a/Library/Homebrew/test/test_formula_installer.rb b/Library/Homebrew/test/test_formula_installer.rb index 5b937d1df..18bd910a6 100644 --- a/Library/Homebrew/test/test_formula_installer.rb +++ b/Library/Homebrew/test/test_formula_installer.rb @@ -37,6 +37,7 @@ class InstallTests < Homebrew::TestCase    end    def test_a_basic_install +    ARGV << "--with-invalid_flag" # added to ensure it doesn't fail install      temporary_install(Testball.new) do |f|        # Test that things made it into the Keg        assert_predicate f.prefix+"readme", :exist? diff --git a/Library/Homebrew/test/test_install.rb b/Library/Homebrew/test/test_install.rb index 5d27d978b..e0a40b5d7 100644 --- a/Library/Homebrew/test/test_install.rb +++ b/Library/Homebrew/test/test_install.rb @@ -21,4 +21,10 @@ class IntegrationCommandTestInstall < IntegrationCommandTestCase      assert_match "testball1 already installed, it's just not migrated",        cmd("install", "testball2")    end + +  def test_install_with_invalid_option +    setup_test_formula "testball1" +    assert_match "testball1: --with-fo is invalid for this formula and will be ignored!", +      cmd("install", "testball1", "--with-fo") +  end  end | 
