diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-10-14 13:26:13 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-10-14 13:26:13 +0000 |
commit | 0687baaf57ac2fef4ed5406d1a37e05658f8859f (patch) | |
tree | 71373d0732765b91d0c6be900459b56d51228f78 /test/optparse | |
parent | b40d13a9940ecb310932fe0bfe747f5ef66afcdd (diff) | |
download | ruby-0687baaf57ac2fef4ed5406d1a37e05658f8859f.tar.gz |
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/optparse')
-rw-r--r-- | test/optparse/test_kwargs.rb | 40 |
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 |