diff options
| -rw-r--r-- | Library/Homebrew/dependable.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/formula_installer.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/options.rb | 31 | ||||
| -rw-r--r-- | Library/Homebrew/software_spec.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/tab.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_build_options.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_options.rb | 12 | 
7 files changed, 33 insertions, 24 deletions
diff --git a/Library/Homebrew/dependable.rb b/Library/Homebrew/dependable.rb index f1951e4c6..d500cd033 100644 --- a/Library/Homebrew/dependable.rb +++ b/Library/Homebrew/dependable.rb @@ -24,6 +24,6 @@ module Dependable    end    def options -    Options.create(tags - RESERVED_TAGS) +    Options.coerce(tags - RESERVED_TAGS)    end  end diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index d9e72702b..02e61587b 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -465,7 +465,7 @@ class FormulaInstaller    end    def build_argv -    opts = Options.create(sanitized_ARGV_options) +    opts = Options.coerce(sanitized_ARGV_options)      opts.concat(options)      opts    end diff --git a/Library/Homebrew/options.rb b/Library/Homebrew/options.rb index a612f27fe..86be67ea9 100644 --- a/Library/Homebrew/options.rb +++ b/Library/Homebrew/options.rb @@ -53,19 +53,6 @@ class Options    attr_reader :options    protected :options -  def self.create(array) -    options = new -    array.each do |e| -      case e -      when /^-[^-]+$/ -        e[1..-1].split(//).each { |o| options << Option.new(o) } -      else -        options << Option.new(e) -      end -    end -    options -  end -    def initialize(*args)      @options = Set.new(*args)    end @@ -126,4 +113,22 @@ class Options    def inspect      "#<#{self.class.name}: #{to_a.inspect}>"    end + +  def self.coerce(arg) +    case arg +    when Array +      opts = new +      arg.each do |a| +        case a +        when /^-[^-]+$/ +          a[1..-1].split(//).each { |o| opts << Option.new(o) } +        else +          opts << Option.new(a) +        end +      end +      opts +    else +      raise TypeError, "Cannot convert #{arg.inspect} to Options" +    end +  end  end diff --git a/Library/Homebrew/software_spec.rb b/Library/Homebrew/software_spec.rb index 9fda2cef9..e88975a73 100644 --- a/Library/Homebrew/software_spec.rb +++ b/Library/Homebrew/software_spec.rb @@ -34,7 +34,7 @@ class SoftwareSpec      @bottle_specification = BottleSpecification.new      @patches = []      @options = Options.new -    @build = BuildOptions.new(Options.create(ARGV.options_only), options) +    @build = BuildOptions.new(Options.coerce(ARGV.options_only), options)    end    def owner= owner diff --git a/Library/Homebrew/tab.rb b/Library/Homebrew/tab.rb index daf701591..edba1d0e6 100644 --- a/Library/Homebrew/tab.rb +++ b/Library/Homebrew/tab.rb @@ -106,11 +106,11 @@ class Tab < OpenStruct    end    def used_options -    Options.create(super) +    Options.coerce(super)    end    def unused_options -    Options.create(super) +    Options.coerce(super)    end    def cxxstdlib diff --git a/Library/Homebrew/test/test_build_options.rb b/Library/Homebrew/test/test_build_options.rb index 7d2c952d9..a0c52da81 100644 --- a/Library/Homebrew/test/test_build_options.rb +++ b/Library/Homebrew/test/test_build_options.rb @@ -4,8 +4,8 @@ require "options"  class BuildOptionsTests < Homebrew::TestCase    def setup -    args = Options.create(%w(--with-foo --with-bar --without-qux)) -    opts = Options.create(%w(--with-foo --with-bar --without-baz --without-qux)) +    args = Options.coerce(%w(--with-foo --with-bar --without-qux)) +    opts = Options.coerce(%w(--with-foo --with-bar --without-baz --without-qux))      @build = BuildOptions.new(args, opts)    end diff --git a/Library/Homebrew/test/test_options.rb b/Library/Homebrew/test/test_options.rb index 264ef772a..250360a30 100644 --- a/Library/Homebrew/test/test_options.rb +++ b/Library/Homebrew/test/test_options.rb @@ -132,18 +132,22 @@ class OptionsTests < Homebrew::TestCase      assert_equal [foo, bar, baz].sort, (@options | options).to_a.sort    end -  def test_create_with_array +  def test_coerce_with_array      array = %w{--foo --bar}      option1 = Option.new("foo")      option2 = Option.new("bar") -    assert_equal [option1, option2].sort, Options.create(array).to_a.sort +    assert_equal [option1, option2].sort, Options.coerce(array).to_a.sort    end -  def test_create_splits_multiple_switches_with_single_dash +  def test_coerce_raises_for_inappropriate_types +    assert_raises(TypeError) { Options.coerce(1) } +  end + +  def test_coerce_splits_multiple_switches_with_single_dash      array = %w{-vd}      verbose = Option.new("-v")      debug = Option.new("-d") -    assert_equal [verbose, debug].sort, Options.create(array).to_a.sort +    assert_equal [verbose, debug].sort, Options.coerce(array).to_a.sort    end    def test_copies_do_not_share_underlying_collection  | 
