summaryrefslogtreecommitdiff
path: root/test/optparse/test_optparse.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/optparse/test_optparse.rb')
-rw-r--r--test/optparse/test_optparse.rb34
1 files changed, 33 insertions, 1 deletions
diff --git a/test/optparse/test_optparse.rb b/test/optparse/test_optparse.rb
index 9c73399f5b..e4aeb07aac 100644
--- a/test/optparse/test_optparse.rb
+++ b/test/optparse/test_optparse.rb
@@ -1,3 +1,4 @@
+# frozen_string_literal: false
require 'test/unit'
require 'optparse'
@@ -6,9 +7,19 @@ class TestOptionParser < Test::Unit::TestCase
@opt = OptionParser.new
@flag = self.class # cannot set by option
end
- def no_error(*args)
+
+ class DummyOutput < String
+ alias write concat
+ end
+ def assert_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
+ alias no_error assert_no_error
def test_permute
assert_equal(%w"", no_error {@opt.permute!(%w"")})
@@ -43,4 +54,25 @@ 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
+
+ def test_into
+ @opt.def_option "-h", "--host=HOST", "hostname"
+ @opt.def_option "-p", "--port=PORT", "port", Integer
+ @opt.def_option "-v", "--verbose" do @verbose = true end
+ @opt.def_option "-q", "--quiet" do @quiet = true end
+ result = {}
+ @opt.parse %w(--host localhost --port 8000 -v), into: result
+ assert_equal({host: "localhost", port: 8000, verbose: true}, result)
+ assert_equal(true, @verbose)
+ end
end