diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-01-16 07:42:01 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-01-16 07:42:01 +0000 |
commit | 2a1b0f247d92ce859f9d1793dac3127ccac560cb (patch) | |
tree | 5c6654b1258bbdd90640cd7d1ec8e5ec1abbd68a | |
parent | 0634c325a6aa923a97d4f5d4571311be57ef015c (diff) |
* lib/optparse.rb (Regexp): fix incorrect options when casting to
a Regexp, and suppress encoding option warnings.
https://github.com/ruby/ruby/pull/82
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@34316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | lib/optparse.rb | 3 | ||||
-rw-r--r-- | test/optparse/test_optarg.rb | 2 | ||||
-rw-r--r-- | test/optparse/test_optparse.rb | 17 | ||||
-rw-r--r-- | test/optparse/test_placearg.rb | 3 | ||||
-rw-r--r-- | test/optparse/test_reqarg.rb | 2 |
6 files changed, 32 insertions, 1 deletions
@@ -1,3 +1,9 @@ +Mon Jan 16 16:41:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * lib/optparse.rb (Regexp): fix incorrect options when casting to + a Regexp, and suppress encoding option warnings. + https://github.com/ruby/ruby/pull/82 + Wed Dec 28 11:22:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org> * lib/fileutils.rb (FileUtils::Entry_#entries): use utility method diff --git a/lib/optparse.rb b/lib/optparse.rb index b07d91ef6c..1751aa0a5f 100644 --- a/lib/optparse.rb +++ b/lib/optparse.rb @@ -1596,7 +1596,8 @@ class OptionParser f |= Regexp::IGNORECASE if /i/ =~ o f |= Regexp::MULTILINE if /m/ =~ o f |= Regexp::EXTENDED if /x/ =~ o - k = o.delete("^imx") + k = o.delete("imx") + k = nil if k.empty? end Regexp.new(s || all, f, k) end diff --git a/test/optparse/test_optarg.rb b/test/optparse/test_optarg.rb index 2058e3719d..3114b80fc5 100644 --- a/test/optparse/test_optarg.rb +++ b/test/optparse/test_optarg.rb @@ -5,6 +5,8 @@ class TestOptionParser::OptArg < TestOptionParser super @opt.def_option("-x[VAL]") {|x| @flag = x} @opt.def_option("--option[=VAL]") {|x| @flag = x} + @opt.def_option("--regexp[=REGEXP]", Regexp) {|x| @reopt = x} + @reopt = nil end def test_short diff --git a/test/optparse/test_optparse.rb b/test/optparse/test_optparse.rb index 6aa8fac757..76b8f7b183 100644 --- a/test/optparse/test_optparse.rb +++ b/test/optparse/test_optparse.rb @@ -6,10 +6,17 @@ class TestOptionParser < Test::Unit::TestCase @opt = OptionParser.new @flag = self.class # cannot set by option end + + class DummyOutput < String + alias write << + end def no_error(*args) + $stderr, stderr = DummyOutput.new, $stderr assert_nothing_raised(*args) {return yield} ensure + stderr, $stderr = $stderr, stderr $!.backtrace.delete_if {|e| /\A#{Regexp.quote(__FILE__)}:#{__LINE__-2}/o =~ e} if $! + assert_empty(stderr) end def test_permute @@ -45,4 +52,14 @@ class TestOptionParser < Test::Unit::TestCase assert_equal(%w"foo -- --help bar", no_error {@opt.order!(%w"foo -- --help bar")}) assert_equal(self.class, @flag) end + + def test_regexp + return unless defined?(@reopt) + assert_equal(%w"", no_error {@opt.parse!(%w"--regexp=/foo/")}) + assert_equal(/foo/, @reopt) + assert_equal(%w"", no_error {@opt.parse!(%w"--regexp=/foo/i")}) + assert_equal(/foo/i, @reopt) + assert_equal(%w"", no_error {@opt.parse!(%w"--regexp=/foo/n")}) + assert_equal(/foo/n, @reopt) + end end diff --git a/test/optparse/test_placearg.rb b/test/optparse/test_placearg.rb index 1aec01efb4..0bbd1a007e 100644 --- a/test/optparse/test_placearg.rb +++ b/test/optparse/test_placearg.rb @@ -6,7 +6,10 @@ class TestOptionParser::PlaceArg < TestOptionParser @opt.def_option("-x [VAL]") {|x| @flag = x} @opt.def_option("--option [VAL]") {|x| @flag = x} @opt.def_option("-T [level]", /^[0-4]$/, Integer) {|x| @topt = x} + @topt = nil @opt.def_option("-n") {} + @opt.def_option("--regexp [REGEXP]", Regexp) {|x| @reopt = x} + @reopt = nil end def test_short diff --git a/test/optparse/test_reqarg.rb b/test/optparse/test_reqarg.rb index 47c9e9a8a7..397da4a593 100644 --- a/test/optparse/test_reqarg.rb +++ b/test/optparse/test_reqarg.rb @@ -7,6 +7,8 @@ module TestOptionParser::ReqArg super @opt.def_option("-xVAL") {|x| @flag = x} @opt.def_option("--option=VAL") {|x| @flag = x} + @opt.def_option("--regexp=REGEXP", Regexp) {|x| @reopt = x} + @reopt = nil end end class Def2 < TestOptionParser |