Sha256: 1ae49f5de9aa0ff84f199a03379ac8535dca50c2b547e9be39c8e22757410db8

Contents?: true

Size: 1.12 KB

Versions: 3

Compression:

Stored size: 1.12 KB

Contents

# frozen_string_literal: false
require 'test/unit'
require 'optparse'
require 'optparse/kwargs'

class ::OptionParserKwArg < Test::Unit::TestCase
  class K
    def initialize(host:, port: 8080)
      @host = host
      @port = port
    end
  end

  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_kwarg
    opt = CLI::OptionParser.new
    options = opt.define_by_keywords({}, K.instance_method(:initialize),
                                     port: [Integer])
    assert_raise(CLI::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

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cli-option_parser.rb-0.6.0 test/optparse/test_kwargs.rb
cli-option_parser.rb-0.5.3 test/optparse/test_kwargs.rb
cli-option_parser.rb-0.5.2 test/optparse/test_kwargs.rb