diff options
Diffstat (limited to 'test/optparse/test_optparse.rb')
| -rw-r--r-- | test/optparse/test_optparse.rb | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/test/optparse/test_optparse.rb b/test/optparse/test_optparse.rb index e85a2ef586..5f5ea183b0 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' @@ -8,7 +9,7 @@ class TestOptionParser < Test::Unit::TestCase end class DummyOutput < String - alias write << + alias write concat end def assert_no_error(*args) $stderr, stderr = DummyOutput.new, $stderr @@ -63,4 +64,45 @@ class TestOptionParser < Test::Unit::TestCase 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 + + def test_require_exact + @opt.def_option('-F', '--zrs=IRS', 'zrs') + %w(--zrs --zr --z -zfoo -z -F -Ffoo).each do |arg| + result = {} + @opt.parse([arg, 'foo'], into: result) + assert_equal({zrs: 'foo'}, result) + end + + @opt.require_exact = true + %w(--zrs -F -Ffoo).each do |arg| + result = {} + @opt.parse([arg, 'foo'], into: result) + assert_equal({zrs: 'foo'}, result) + end + + assert_raise(OptionParser::InvalidOption) {@opt.parse(%w(--zr foo))} + assert_raise(OptionParser::InvalidOption) {@opt.parse(%w(--z foo))} + assert_raise(OptionParser::InvalidOption) {@opt.parse(%w(-zrs foo))} + assert_raise(OptionParser::InvalidOption) {@opt.parse(%w(-zr foo))} + assert_raise(OptionParser::InvalidOption) {@opt.parse(%w(-z foo))} + end + + def test_nonopt_pattern + @opt.def_option(/^[^-]/) do |arg| + assert(false, "Never gets called") + end + e = assert_raise(OptionParser::InvalidOption) {@opt.parse(%w(-t))} + assert_equal(["-t"], e.args) + end end |
