aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Homebrew/options.rb5
-rw-r--r--Library/Homebrew/test/test_options.rb6
2 files changed, 11 insertions, 0 deletions
diff --git a/Library/Homebrew/options.rb b/Library/Homebrew/options.rb
index b59cd2930..033e5b69e 100644
--- a/Library/Homebrew/options.rb
+++ b/Library/Homebrew/options.rb
@@ -54,6 +54,11 @@ class Options
@options = Set.new(*args)
end
+ def initialize_copy(other)
+ super
+ @options = @options.dup
+ end
+
def each(*args, &block)
@options.each(*args, &block)
end
diff --git a/Library/Homebrew/test/test_options.rb b/Library/Homebrew/test/test_options.rb
index b0f560354..493aa100a 100644
--- a/Library/Homebrew/test/test_options.rb
+++ b/Library/Homebrew/test/test_options.rb
@@ -152,4 +152,10 @@ class OptionsTests < Test::Unit::TestCase
debug = Option.new("-d")
assert_equal [verbose, debug].sort, Options.coerce(array).to_a.sort
end
+
+ def test_copies_do_not_share_underlying_collection
+ copy = @options.dup << Option.new("foo")
+ assert_empty @options
+ assert_equal 1, copy.count
+ end
end