From a61c3615d28e717b273b4b81cc3b956662f63471 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Wed, 13 Aug 2014 08:45:06 +0100 Subject: [PATCH] Revert "Replace Options.coerce with an alternate constructor" This reverts commit 8d2ef974a3a87bf4207f71ccb8a7b4776e16a016. --- Library/Homebrew/dependable.rb | 2 +- Library/Homebrew/formula_installer.rb | 2 +- Library/Homebrew/options.rb | 31 ++++++++++++--------- Library/Homebrew/software_spec.rb | 2 +- Library/Homebrew/tab.rb | 4 +-- Library/Homebrew/test/test_build_options.rb | 4 +-- 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 f1951e4c65..d500cd0331 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 d9e72702b0..02e61587b3 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 a612f27fef..86be67ea93 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 9fda2cef96..e88975a733 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 daf7015919..edba1d0e6c 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 7d2c952d90..a0c52da81a 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 264ef772aa..250360a307 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