ruby-changes:11648
From: nobu <ko1@a...>
Date: Sun, 26 Apr 2009 15:13:26 +0900 (JST)
Subject: [ruby-changes:11648] Ruby:r23286 (trunk): * lib/optparse.rb (OptionParser#parse_in_order): do not make an
nobu 2009-04-26 15:13:11 +0900 (Sun, 26 Apr 2009) New Revision: 23286 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=23286 Log: * lib/optparse.rb (OptionParser#parse_in_order): do not make an option from non-option argument. [ruby-dev:38333] Modified files: trunk/ChangeLog trunk/lib/optparse.rb trunk/test/optparse/test_optparse.rb trunk/test/optparse/test_placearg.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 23285) +++ ChangeLog (revision 23286) @@ -1,3 +1,8 @@ +Sun Apr 26 15:13:09 2009 Nobuyoshi Nakada <nobu@r...> + + * lib/optparse.rb (OptionParser#parse_in_order): do not make an + option from non-option argument. [ruby-dev:38333] + Sat Apr 25 19:11:13 2009 Nobuyoshi Nakada <nobu@r...> * configure.in (ac_cv_func_daemon): use daemon(3) only on *BSD. Index: lib/optparse.rb =================================================================== --- lib/optparse.rb (revision 23285) +++ lib/optparse.rb (revision 23286) @@ -1304,7 +1304,7 @@ begin opt, cb, val = sw.parse(val, argv) {|*exc| raise(*exc) if eq} raise InvalidOption, arg if has_arg and !eq and arg == "-#{opt}" - argv.unshift(opt) if opt and (opt = opt.sub(/\A-*/, '-')) != '-' + argv.unshift(opt) if opt and (!rest or (opt = opt.sub(/\A-*/, '-')) != '-') val = cb.call(val) if cb setter.call(sw.switch_name, val) if setter rescue ParseError Index: test/optparse/test_placearg.rb =================================================================== --- test/optparse/test_placearg.rb (revision 23285) +++ test/optparse/test_placearg.rb (revision 23286) @@ -5,6 +5,7 @@ super @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} @opt.def_option("-n") {} end @@ -42,4 +43,11 @@ assert_equal(%w"", no_error {@opt.parse!(%w"--opt bar")}) assert_equal("bar", @flag) end + + def test_conv + assert_equal(%w"te.rb", no_error('[ruby-dev:38333]') {@opt.parse!(%w"-T te.rb")}) + assert_nil(@topt) + assert_equal(%w"te.rb", no_error('[ruby-dev:38333]') {@opt.parse!(%w"-T1 te.rb")}) + assert_equal(1, @topt) + end end Index: test/optparse/test_optparse.rb =================================================================== --- test/optparse/test_optparse.rb (revision 23285) +++ test/optparse/test_optparse.rb (revision 23286) @@ -8,6 +8,8 @@ end def no_error(*args) assert_nothing_raised(*args) {return yield} + ensure + $!.backtrace.delete_if {|e| /\A#{Regexp.quote(__FILE__)}:#{__LINE__-2}/o =~ e} if $! end def test_permute -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/