Skip to content

Commit

Permalink
* lib/optparse.rb (Regexp): fix incorrect options when casting to
Browse files Browse the repository at this point in the history
  a Regexp, and suppress encoding option warnings.
  ruby#82


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
nobu committed Jan 16, 2012
1 parent 688d00d commit de1e488
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 1 deletion.
6 changes: 6 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
Mon Jan 16 16:41:53 2012 Nobuyoshi Nakada <[email protected]>

* lib/optparse.rb (Regexp): fix incorrect options when casting to
a Regexp, and suppress encoding option warnings.
https://github.com/ruby/ruby/pull/82

Mon Jan 16 11:22:38 2012 Nobuyoshi Nakada <[email protected]>

* win32/win32.c (rb_chsize): no need to get the current file size.
Expand Down
3 changes: 2 additions & 1 deletion lib/optparse.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1709,7 +1709,8 @@ def environment(env = File.basename($0, '.*'))
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
Expand Down
2 changes: 2 additions & 0 deletions test/optparse/test_optarg.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ def setup
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
Expand Down
17 changes: 17 additions & 0 deletions test/optparse/test_optparse.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,17 @@ def setup
@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
Expand Down Expand Up @@ -45,4 +52,14 @@ def test_order
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
3 changes: 3 additions & 0 deletions test/optparse/test_placearg.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ def setup
@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
Expand Down
2 changes: 2 additions & 0 deletions test/optparse/test_reqarg.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ def setup
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
Expand Down

0 comments on commit de1e488

Please sign in to comment.