mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/optparse.rb (OptionParser::Switch::PlacedArgument::parse):
do not remove next argument if empty value is placed. * test/optparse: added. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4903 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
9983e4645e
commit
4dada1c8a2
7 changed files with 263 additions and 1 deletions
|
@ -1,3 +1,10 @@
|
|||
Wed Nov 5 19:08:47 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* lib/optparse.rb (OptionParser::Switch::PlacedArgument::parse):
|
||||
do not remove next argument if empty value is placed.
|
||||
|
||||
* test/optparse: added.
|
||||
|
||||
Wed Nov 5 17:05:18 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* lib/test/unit/ui/gtk/testrunner.rb: typo.
|
||||
|
|
|
@ -354,7 +354,7 @@ Switch that can omit argument.
|
|||
end
|
||||
opt = (val = parse_arg(val, &error))[1]
|
||||
val = conv_arg(*val)
|
||||
if opt
|
||||
if opt and !arg
|
||||
argv.shift
|
||||
else
|
||||
val[0] = nil
|
||||
|
|
57
test/optparse/test_noarg.rb
Normal file
57
test/optparse/test_noarg.rb
Normal file
|
@ -0,0 +1,57 @@
|
|||
require 'test_optparse'
|
||||
|
||||
module TestOptionParser::NoArg
|
||||
class Def1 < TestOptionParser
|
||||
include NoArg
|
||||
def setup
|
||||
super
|
||||
@opt.def_option("-x") {|x| @flag = x}
|
||||
@opt.def_option("--option") {|x| @flag = x}
|
||||
end
|
||||
end
|
||||
class Def2 < TestOptionParser
|
||||
include NoArg
|
||||
def setup
|
||||
super
|
||||
@opt.def_option("-x", "--option") {|x| @flag = x}
|
||||
end
|
||||
end
|
||||
|
||||
def test_short
|
||||
assert_raises(OptionParser::InvalidOption) {@opt.parse!(%w"-xq")}
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-x")})
|
||||
assert_equal(true, @flag)
|
||||
@flag = nil
|
||||
assert_equal(%w"foo", no_error {@opt.parse!(%w"-x foo")})
|
||||
assert_equal(true, @flag)
|
||||
end
|
||||
|
||||
def test_abbrev
|
||||
assert_raises(OptionParser::InvalidOption) {@opt.parse!(%w"-oq")}
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-o")})
|
||||
assert_equal(true, @flag)
|
||||
@flag = nil
|
||||
no_error {@opt.parse!(%w"-O")}
|
||||
assert_equal(true, @flag)
|
||||
@flag = nil
|
||||
assert_equal(%w"foo", no_error {@opt.parse!(%w"-o foo")})
|
||||
assert_equal(true, @flag)
|
||||
end
|
||||
|
||||
def test_long
|
||||
assert_raises(OptionParser::NeedlessArgument) {@opt.parse!(%w"--option=x")}
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"--opt")})
|
||||
assert_equal(true, @flag)
|
||||
@flag = nil
|
||||
assert_equal(%w"foo", no_error {@opt.parse!(%w"--opt foo")})
|
||||
assert_equal(true, @flag)
|
||||
end
|
||||
|
||||
def test_ambiguous
|
||||
@opt.def_option("--open") {|x|}
|
||||
assert_raises(OptionParser::AmbiguousOption) {@opt.parse!(%w"--op")}
|
||||
assert_raises(OptionParser::AmbiguousOption) {@opt.parse!(%w"-o")}
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"--opt")})
|
||||
assert_equal(true, @flag)
|
||||
end
|
||||
end
|
44
test/optparse/test_optarg.rb
Normal file
44
test/optparse/test_optarg.rb
Normal file
|
@ -0,0 +1,44 @@
|
|||
require 'test_optparse'
|
||||
|
||||
class TestOptionParser::OptArg < TestOptionParser
|
||||
def setup
|
||||
super
|
||||
@opt.def_option("-x[VAL]") {|x| @flag = x}
|
||||
@opt.def_option("--option[=VAL]") {|x| @flag = x}
|
||||
end
|
||||
|
||||
def test_short
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-x")})
|
||||
assert_equal(nil, @flag)
|
||||
@flag = false
|
||||
assert_equal(%w"foo", no_error {@opt.parse!(%w"-x foo")})
|
||||
assert_equal(nil, @flag)
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-xfoo")})
|
||||
assert_equal("foo", @flag)
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-x=")})
|
||||
assert_equal("=", @flag)
|
||||
end
|
||||
|
||||
def test_abbrev
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-o")})
|
||||
assert_equal(nil, @flag)
|
||||
@flag = false
|
||||
assert_equal(%w"foo", no_error {@opt.parse!(%w"-o foo")})
|
||||
assert_equal(nil, @flag)
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-ofoo")})
|
||||
assert_equal("foo", @flag)
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-o=")})
|
||||
assert_equal("=", @flag)
|
||||
end
|
||||
|
||||
def test_long
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"--opt")})
|
||||
assert_equal(nil, @flag)
|
||||
assert_equal(%w"foo", no_error {@opt.parse!(%w"--opt= foo")})
|
||||
assert_equal("", @flag)
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"--opt=foo")})
|
||||
assert_equal("foo", @flag)
|
||||
assert_equal(%w"foo", no_error {@opt.parse!(%w"--opt foo")})
|
||||
assert_equal(nil, @flag)
|
||||
end
|
||||
end
|
46
test/optparse/test_optparse.rb
Normal file
46
test/optparse/test_optparse.rb
Normal file
|
@ -0,0 +1,46 @@
|
|||
require 'test/unit'
|
||||
require 'optparse'
|
||||
|
||||
class TestOptionParser < Test::Unit::TestCase
|
||||
def setup
|
||||
@opt = OptionParser.new
|
||||
@flag = self.class # cannot set by option
|
||||
end
|
||||
def no_error(*args)
|
||||
assert_nothing_raised(*args) {return yield}
|
||||
end
|
||||
|
||||
def test_permute
|
||||
assert_equal(%w"", no_error {@opt.permute!(%w"")})
|
||||
assert_equal(self.class, @flag)
|
||||
assert_equal(%w"foo bar", no_error {@opt.permute!(%w"foo bar")})
|
||||
assert_equal(self.class, @flag)
|
||||
assert_equal(%w"- foo bar", no_error {@opt.permute!(%w"- foo bar")})
|
||||
assert_equal(self.class, @flag)
|
||||
assert_equal(%w"foo bar", no_error {@opt.permute!(%w"-- foo bar")})
|
||||
assert_equal(self.class, @flag)
|
||||
assert_equal(%w"foo - bar", no_error {@opt.permute!(%w"foo - bar")})
|
||||
assert_equal(self.class, @flag)
|
||||
assert_equal(%w"foo bar", no_error {@opt.permute!(%w"foo -- bar")})
|
||||
assert_equal(self.class, @flag)
|
||||
assert_equal(%w"foo --help bar", no_error {@opt.permute!(%w"foo -- --help bar")})
|
||||
assert_equal(self.class, @flag)
|
||||
end
|
||||
|
||||
def test_order
|
||||
assert_equal(%w"", no_error {@opt.order!(%w"")})
|
||||
assert_equal(self.class, @flag)
|
||||
assert_equal(%w"foo bar", no_error {@opt.order!(%w"foo bar")})
|
||||
assert_equal(self.class, @flag)
|
||||
assert_equal(%w"- foo bar", no_error {@opt.order!(%w"- foo bar")})
|
||||
assert_equal(self.class, @flag)
|
||||
assert_equal(%w"foo bar", no_error {@opt.permute!(%w"-- foo bar")})
|
||||
assert_equal(self.class, @flag)
|
||||
assert_equal(%w"foo - bar", no_error {@opt.order!(%w"foo - bar")})
|
||||
assert_equal(self.class, @flag)
|
||||
assert_equal(%w"foo -- bar", no_error {@opt.order!(%w"foo -- bar")})
|
||||
assert_equal(self.class, @flag)
|
||||
assert_equal(%w"foo -- --help bar", no_error {@opt.order!(%w"foo -- --help bar")})
|
||||
assert_equal(self.class, @flag)
|
||||
end
|
||||
end
|
45
test/optparse/test_placearg.rb
Normal file
45
test/optparse/test_placearg.rb
Normal file
|
@ -0,0 +1,45 @@
|
|||
require 'test_optparse'
|
||||
|
||||
class TestOptionParser::PlaceArg < TestOptionParser
|
||||
def setup
|
||||
super
|
||||
@opt.def_option("-x [VAL]") {|x| @flag = x}
|
||||
@opt.def_option("--option [VAL]") {|x| @flag = x}
|
||||
@opt.def_option("-n") {}
|
||||
end
|
||||
|
||||
def test_short
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-x -n")})
|
||||
assert_equal(nil, @flag)
|
||||
@flag = false
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-x foo")})
|
||||
assert_equal("foo", @flag)
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-xbar")})
|
||||
assert_equal("bar", @flag)
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-x=")})
|
||||
assert_equal("=", @flag)
|
||||
end
|
||||
|
||||
def test_abbrev
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-o -n")})
|
||||
assert_equal(nil, @flag)
|
||||
@flag = false
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-o foo")})
|
||||
assert_equal("foo", @flag)
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-obar")})
|
||||
assert_equal("bar", @flag)
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-o=")})
|
||||
assert_equal("=", @flag)
|
||||
end
|
||||
|
||||
def test_long
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"--opt -n")})
|
||||
assert_equal(nil, @flag)
|
||||
assert_equal(%w"foo", no_error {@opt.parse!(%w"--opt= foo")})
|
||||
assert_equal("", @flag)
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"--opt=foo")})
|
||||
assert_equal("foo", @flag)
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"--opt bar")})
|
||||
assert_equal("bar", @flag)
|
||||
end
|
||||
end
|
63
test/optparse/test_reqarg.rb
Normal file
63
test/optparse/test_reqarg.rb
Normal file
|
@ -0,0 +1,63 @@
|
|||
require 'test_optparse'
|
||||
|
||||
module TestOptionParser::ReqArg
|
||||
class Def1 < TestOptionParser
|
||||
include ReqArg
|
||||
def setup
|
||||
super
|
||||
@opt.def_option("-xVAL") {|x| @flag = x}
|
||||
@opt.def_option("--option=VAL") {|x| @flag = x}
|
||||
end
|
||||
end
|
||||
class Def2 < TestOptionParser
|
||||
include ReqArg
|
||||
def setup
|
||||
super
|
||||
@opt.def_option("-x", "--option=VAL") {|x| @flag = x}
|
||||
end
|
||||
end
|
||||
class Def3 < TestOptionParser
|
||||
include ReqArg
|
||||
def setup
|
||||
super
|
||||
@opt.def_option("--option=VAL", "-x") {|x| @flag = x}
|
||||
end
|
||||
end
|
||||
class Def4 < TestOptionParser
|
||||
include ReqArg
|
||||
def setup
|
||||
super
|
||||
@opt.def_option("-xVAL", "--option=VAL") {|x| @flag = x}
|
||||
end
|
||||
end
|
||||
|
||||
def test_short
|
||||
assert_raises(OptionParser::MissingArgument) {@opt.parse!(%w"-x")}
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-x foo")})
|
||||
assert_equal("foo", @flag)
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-xbar")})
|
||||
assert_equal("bar", @flag)
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-x=")})
|
||||
assert_equal("=", @flag)
|
||||
end
|
||||
|
||||
def test_abbrev
|
||||
assert_raises(OptionParser::MissingArgument) {@opt.parse!(%w"-o")}
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-o foo")})
|
||||
assert_equal("foo", @flag)
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-obar")})
|
||||
assert_equal("bar", @flag)
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"-o=")})
|
||||
assert_equal("=", @flag)
|
||||
end
|
||||
|
||||
def test_long
|
||||
assert_raises(OptionParser::MissingArgument) {@opt.parse!(%w"--opt")}
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"--opt foo")})
|
||||
assert_equal("foo", @flag)
|
||||
assert_equal(%w"foo", no_error {@opt.parse!(%w"--opt= foo")})
|
||||
assert_equal("", @flag)
|
||||
assert_equal(%w"", no_error {@opt.parse!(%w"--opt=foo")})
|
||||
assert_equal("foo", @flag)
|
||||
end
|
||||
end
|
Loading…
Add table
Reference in a new issue