diff options
author | Benoit Daloze <eregontp@gmail.com> | 2023-01-05 19:05:29 +0100 |
---|---|---|
committer | Benoit Daloze <eregontp@gmail.com> | 2023-01-05 19:05:29 +0100 |
commit | bbf54ec334fe2edd7669a944d88d17efde49a412 (patch) | |
tree | 2941c7b711319b295aa3664b6a2b984e70a523b7 /spec/ruby/core/io | |
parent | cd5e6cc0ea48353c88d921b885b552dc76da255c (diff) |
Update to ruby/spec@9d69b95
Diffstat (limited to 'spec/ruby/core/io')
-rw-r--r-- | spec/ruby/core/io/gets_spec.rb | 4 | ||||
-rw-r--r-- | spec/ruby/core/io/lineno_spec.rb | 9 | ||||
-rw-r--r-- | spec/ruby/core/io/new_spec.rb | 2 | ||||
-rw-r--r-- | spec/ruby/core/io/readline_spec.rb | 4 | ||||
-rw-r--r-- | spec/ruby/core/io/readlines_spec.rb | 4 | ||||
-rw-r--r-- | spec/ruby/core/io/shared/each.rb | 4 | ||||
-rw-r--r-- | spec/ruby/core/io/shared/new.rb | 2 | ||||
-rw-r--r-- | spec/ruby/core/io/shared/pos.rb | 8 | ||||
-rw-r--r-- | spec/ruby/core/io/shared/readlines.rb | 4 | ||||
-rw-r--r-- | spec/ruby/core/io/sysseek_spec.rb | 2 |
10 files changed, 39 insertions, 4 deletions
diff --git a/spec/ruby/core/io/gets_spec.rb b/spec/ruby/core/io/gets_spec.rb index 2d5e3d1ae3..1f1c3bb254 100644 --- a/spec/ruby/core/io/gets_spec.rb +++ b/spec/ruby/core/io/gets_spec.rb @@ -216,6 +216,10 @@ describe "IO#gets" do @io.gets(nil, 0).should == "" @io.gets("", 0).should == "" end + + it "does not accept limit that doesn't fit in a C off_t" do + -> { @io.gets(2**128) }.should raise_error(RangeError) + end end describe "IO#gets" do diff --git a/spec/ruby/core/io/lineno_spec.rb b/spec/ruby/core/io/lineno_spec.rb index 99266ecca1..9a4ad90880 100644 --- a/spec/ruby/core/io/lineno_spec.rb +++ b/spec/ruby/core/io/lineno_spec.rb @@ -92,8 +92,13 @@ describe "IO#lineno=" do @io.lineno.should == 92233 end - it "raises TypeError on nil argument" do - -> { @io.lineno = nil }.should raise_error(TypeError) + it "raises TypeError if cannot convert argument to Integer implicitly" do + -> { @io.lineno = "1" }.should raise_error(TypeError, 'no implicit conversion of String into Integer') + -> { @io.lineno = nil }.should raise_error(TypeError, 'no implicit conversion from nil to integer') + end + + it "does not accept Integers that don't fit in a C int" do + -> { @io.lineno = 2**32 }.should raise_error(RangeError) end it "sets the current line number to the given value" do diff --git a/spec/ruby/core/io/new_spec.rb b/spec/ruby/core/io/new_spec.rb index 3597098caf..0ef30991fd 100644 --- a/spec/ruby/core/io/new_spec.rb +++ b/spec/ruby/core/io/new_spec.rb @@ -1,6 +1,8 @@ require_relative '../../spec_helper' require_relative 'shared/new' +# NOTE: should be syncronized with library/stringio/initialize_spec.rb + describe "IO.new" do it_behaves_like :io_new, :new end diff --git a/spec/ruby/core/io/readline_spec.rb b/spec/ruby/core/io/readline_spec.rb index ca30f31e39..cf9f0dfc11 100644 --- a/spec/ruby/core/io/readline_spec.rb +++ b/spec/ruby/core/io/readline_spec.rb @@ -51,6 +51,10 @@ describe "IO#readline" do it "returns an empty string when passed 0 as a limit" do @io.readline(0).should == "" end + + it "does not accept Integers that don't fit in a C off_t" do + -> { @io.readline(2**128) }.should raise_error(RangeError) + end end describe "when passed separator and limit" do diff --git a/spec/ruby/core/io/readlines_spec.rb b/spec/ruby/core/io/readlines_spec.rb index 15af6debbe..496003002d 100644 --- a/spec/ruby/core/io/readlines_spec.rb +++ b/spec/ruby/core/io/readlines_spec.rb @@ -106,6 +106,10 @@ describe "IO#readlines" do it "raises ArgumentError when passed 0 as a limit" do -> { @io.readlines(0) }.should raise_error(ArgumentError) end + + it "does not accept Integers that don't fit in a C off_t" do + -> { @io.readlines(2**128) }.should raise_error(RangeError) + end end describe "when passed chomp" do diff --git a/spec/ruby/core/io/shared/each.rb b/spec/ruby/core/io/shared/each.rb index 1b8abce5ff..02bbe19c1a 100644 --- a/spec/ruby/core/io/shared/each.rb +++ b/spec/ruby/core/io/shared/each.rb @@ -77,6 +77,10 @@ describe :io_each, shared: true do -> { @io.send(@method, 0){} }.should raise_error(ArgumentError) end end + + it "does not accept Integers that don't fit in a C off_t" do + -> { @io.send(@method, 2**128){} }.should raise_error(RangeError) + end end describe "when passed a String containing one space as a separator" do diff --git a/spec/ruby/core/io/shared/new.rb b/spec/ruby/core/io/shared/new.rb index f2a0970a40..7677aada6e 100644 --- a/spec/ruby/core/io/shared/new.rb +++ b/spec/ruby/core/io/shared/new.rb @@ -1,5 +1,7 @@ require_relative '../fixtures/classes' +# NOTE: should be syncronized with library/stringio/initialize_spec.rb + # This group of specs may ONLY contain specs that do successfully create # an IO instance from the file descriptor returned by #new_fd helper. describe :io_new, shared: true do diff --git a/spec/ruby/core/io/shared/pos.rb b/spec/ruby/core/io/shared/pos.rb index d83a6c6692..3fdd3eb2b3 100644 --- a/spec/ruby/core/io/shared/pos.rb +++ b/spec/ruby/core/io/shared/pos.rb @@ -60,7 +60,13 @@ describe :io_set_pos, shared: true do end end - it "does not accept Integers that don't fit in a C long" do + it "raises TypeError when cannot convert implicitly argument to Integer" do + File.open @fname do |io| + -> { io.send @method, Object.new }.should raise_error(TypeError, "no implicit conversion of Object into Integer") + end + end + + it "does not accept Integers that don't fit in a C off_t" do File.open @fname do |io| -> { io.send @method, 2**128 }.should raise_error(RangeError) end diff --git a/spec/ruby/core/io/shared/readlines.rb b/spec/ruby/core/io/shared/readlines.rb index 479452b71c..7681e1b5c1 100644 --- a/spec/ruby/core/io/shared/readlines.rb +++ b/spec/ruby/core/io/shared/readlines.rb @@ -79,6 +79,10 @@ describe :io_readlines_options_19, shared: true do (result ? result : ScratchPad.recorded).should == IOSpecs.lines end + it "does not accept Integers that don't fit in a C off_t" do + -> { IO.send(@method, @name, 2**128, &@object) }.should raise_error(RangeError) + end + ruby_bug "#18767", ""..."3.3" do describe "when passed limit" do it "raises ArgumentError when passed 0 as a limit" do diff --git a/spec/ruby/core/io/sysseek_spec.rb b/spec/ruby/core/io/sysseek_spec.rb index e631939bce..002f2a14eb 100644 --- a/spec/ruby/core/io/sysseek_spec.rb +++ b/spec/ruby/core/io/sysseek_spec.rb @@ -4,7 +4,7 @@ require_relative 'fixtures/classes' require_relative 'shared/pos' describe "IO#sysseek" do - it_behaves_like :io_set_pos, :seek + it_behaves_like :io_set_pos, :sysseek end describe "IO#sysseek" do |