From 68dcd76d58584c192f202409365350d0b356e391 Mon Sep 17 00:00:00 2001 From: Marc-Andre Lafortune Date: Mon, 13 Nov 2017 17:00:02 -0500 Subject: Fix separator so it doesn't mutate user data --- lib/slop/options.rb | 2 +- test/options_test.rb | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/slop/options.rb b/lib/slop/options.rb index 94fc5dd..41913e0 100644 --- a/lib/slop/options.rb +++ b/lib/slop/options.rb @@ -61,7 +61,7 @@ module Slop # the help text. def separator(string) if separators[options.size] - separators.last << "\n#{string}" + separators[-1] += "\n#{string}" else separators[options.size] = string end diff --git a/test/options_test.rb b/test/options_test.rb index bb19210..8553fe1 100644 --- a/test/options_test.rb +++ b/test/options_test.rb @@ -36,6 +36,15 @@ describe Slop::Options do end end + describe "#separator" do + # TODO: Missing all other specs for #separator + + it "accepts a frozen argument, even when called multiple times for the same option" do + @options.separator("foo".freeze) + @options.separator("bar".freeze) + end + end + describe "#method_missing" do it "uses the method name as an option type" do option = @options.string("--name") @@ -86,7 +95,7 @@ describe Slop::Options do describe "custom banner" do it "is prefixed with defined banner" do @options_config = Slop::Options.new({banner: "custom banner"}) - assert_match(/^custom banner/, @options_config.to_s) + assert_match(/^custom banner/, @options_config.to_s) end it "banner is disabled" do @options_config = Slop::Options.new({banner: false}) -- cgit v1.2.1