summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-10-14 13:26:13 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-10-14 13:26:13 +0000
commit0687baaf57ac2fef4ed5406d1a37e05658f8859f (patch)
tree71373d0732765b91d0c6be900459b56d51228f78 /test
parentb40d13a9940ecb310932fe0bfe747f5ef66afcdd (diff)
optparse/kwargs.rb
* lib/optparse/kwargs.rb (OptionParser#define_by_keywords): [EXPERIMENTAL] extract command line option definitions from the information of keyword arguments. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56423 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/optparse/test_kwargs.rb40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/optparse/test_kwargs.rb b/test/optparse/test_kwargs.rb
new file mode 100644
index 0000000000..68fe207a2c
--- /dev/null
+++ b/test/optparse/test_kwargs.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: false
+require 'test/unit'
+require 'optparse'
+require 'optparse/kwargs'
+
+class TestOptionParser < Test::Unit::TestCase
+end
+class TestOptionParser::KwArg < Test::Unit::TestCase
+ class K
+ def initialize(host:, port: 8080)
+ @host = host
+ @port = port
+ end
+ end
+
+ class DummyOutput < String
+ alias write <<
+ 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_kwarg
+ opt = OptionParser.new
+ options = opt.define_by_keywords({}, K.instance_method(:initialize),
+ port: [Integer])
+ assert_raise(OptionParser::MissingArgument) {opt.parse!(%w"--host")}
+ assert_nothing_raised {opt.parse!(%w"--host=localhost")}
+ assert_equal("localhost", options[:host])
+ assert_nothing_raised {opt.parse!(%w"--port")}
+ assert_nothing_raised {opt.parse!(%w"--port=80")}
+ assert_equal(80, options[:port])
+ end
+end