diff options
author | Lee Jarvis <lee@jrvs.uk> | 2023-02-15 11:28:21 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-15 11:28:21 -0800 |
commit | 2410f313984be1dfe73884251e879b008771535d (patch) | |
tree | 8f36d5b4c65685653e0c8ef3c344d5fe75564fd6 /test | |
parent | fc4622fc08d7982847ff583ad691ee4ba47f63f8 (diff) | |
parent | becc0305239c2885affb1f57419afac3e5418a88 (diff) | |
download | slop-2410f313984be1dfe73884251e879b008771535d.tar.gz |
Merge pull request #278 from heyvito/feat/validate-types
Add support to optional type validation
Diffstat (limited to 'test')
-rw-r--r-- | test/error_test.rb | 15 | ||||
-rw-r--r-- | test/types_test.rb | 26 |
2 files changed, 37 insertions, 4 deletions
diff --git a/test/error_test.rb b/test/error_test.rb index d9c71ab..8ea9069 100644 --- a/test/error_test.rb +++ b/test/error_test.rb @@ -63,3 +63,18 @@ describe Slop::MissingRequiredOption do opts.parse [] end end + +describe Slop::InvalidOptionValue do + it "raises when an option has an invalid value" do + opts = Slop::Options.new(validate_types: true) + opts.integer "-n", "--number", default: 10 + assert_raises(Slop::InvalidOptionValue) { opts.parse %w(-n foo) } + end + + it "does not raise when errors are suppressed" do + opts = Slop::Options.new(suppress_errors: true) + opts.integer "-n", "--number", default: 10, validate_type: true + r = opts.parse %w(-n foo) + assert_equal(10, r[:n]) + end +end diff --git a/test/types_test.rb b/test/types_test.rb index ea2ba8d..c6f0864 100644 --- a/test/types_test.rb +++ b/test/types_test.rb @@ -31,10 +31,10 @@ end describe Slop::BoolOption do before do @options = Slop::Options.new - @verbose = @options.bool "--verbose" + @verbose = @options.bool "--verbose", validate_type: true @quiet = @options.bool "--quiet" @inversed = @options.bool "--inversed", default: true - @explicit = @options.bool "--explicit" + @explicit = @options.bool "--explicit", validate_type: true @bloc = @options.bool("--bloc"){|val| (@bloc_val ||= []) << val} @result = @options.parse %w(--verbose --no-inversed --bloc --no-bloc @@ -60,13 +60,19 @@ describe Slop::BoolOption do it "returns false when explicitly false" do assert_equal false, @result[:explicit] end + + it "raises with invalid types" do + assert_raises(Slop::InvalidOptionValue) do + @result.parser.parse %w(--verbose foo) + end + end end describe Slop::IntegerOption do before do @options = Slop::Options.new @age = @options.integer "--age" - @minus = @options.integer "--minus" + @minus = @options.integer "--minus", validate_type: true @plus = @options.integer "--plus" @result = @options.parse %w(--age 20 --minus -10 --plus +30) end @@ -81,6 +87,12 @@ describe Slop::IntegerOption do @result.parser.parse %w(--age hello) assert_nil @result[:age] end + + it "raises with invalid types" do + assert_raises(Slop::InvalidOptionValue) do + @result.parser.parse %w(--minus foo) + end + end end describe Slop::FloatOption do @@ -88,7 +100,7 @@ describe Slop::FloatOption do @options = Slop::Options.new @apr = @options.float "--apr" @apr_value = 2.9 - @minus = @options.float "--minus" + @minus = @options.float "--minus", validate_type: true @plus = @options.float "--plus" @scientific_notation = @options.float "--scientific-notation" @scientific_notation_value = 4e21 @@ -125,6 +137,12 @@ describe Slop::FloatOption do @result.parser.parse %w(--apr hello) assert_nil @result[:apr] end + + it "raises with invalid types" do + assert_raises(Slop::InvalidOptionValue) do + @result.parser.parse %w(--minus foo) + end + end end describe Slop::ArrayOption do |