aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Homebrew/dependable.rb2
-rw-r--r--Library/Homebrew/formula_installer.rb2
-rw-r--r--Library/Homebrew/options.rb31
-rw-r--r--Library/Homebrew/software_spec.rb2
-rw-r--r--Library/Homebrew/tab.rb4
-rw-r--r--Library/Homebrew/test/test_build_options.rb4
-rw-r--r--Library/Homebrew/test/test_options.rb12
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