diff options
author | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-12-01 15:41:50 +0000 |
---|---|---|
committer | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-12-01 15:41:50 +0000 |
commit | 4d7b0b9112f2adf9e87ef75056f930bf7c1f3dc4 (patch) | |
tree | 8d712e18a619a9720d181d0d44e8cc2474ff31ee /spec/ruby/core/io | |
parent | 821d9a2d30f2e0d3f9009dc001b4b49aaa63c66e (diff) | |
download | ruby-4d7b0b9112f2adf9e87ef75056f930bf7c1f3dc4.tar.gz |
Update to ruby/spec@bacedc5
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60973 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/ruby/core/io')
-rw-r--r-- | spec/ruby/core/io/read_nonblock_spec.rb | 10 | ||||
-rw-r--r-- | spec/ruby/core/io/shared/each.rb | 41 | ||||
-rw-r--r-- | spec/ruby/core/io/sysread_spec.rb | 16 | ||||
-rw-r--r-- | spec/ruby/core/io/write_nonblock_spec.rb | 12 |
4 files changed, 78 insertions, 1 deletions
diff --git a/spec/ruby/core/io/read_nonblock_spec.rb b/spec/ruby/core/io/read_nonblock_spec.rb index 2b314987bc..69ddc3848d 100644 --- a/spec/ruby/core/io/read_nonblock_spec.rb +++ b/spec/ruby/core/io/read_nonblock_spec.rb @@ -43,6 +43,16 @@ describe "IO#read_nonblock" do end end + platform_is_not :windows do + it 'sets the IO in nonblock mode' do + require 'io/nonblock' + @read.nonblock?.should == false + @write.write "abc" + @read.read_nonblock(1).should == "a" + @read.nonblock?.should == true + end + end + it "returns at most the number of bytes requested" do @write << "hello" @read.read_nonblock(4).should == "hell" diff --git a/spec/ruby/core/io/shared/each.rb b/spec/ruby/core/io/shared/each.rb index d87303b54a..4ef8a54147 100644 --- a/spec/ruby/core/io/shared/each.rb +++ b/spec/ruby/core/io/shared/each.rb @@ -115,6 +115,47 @@ describe :io_each, shared: true do end end + describe "with both separator and limit" do + describe "when no block is given" do + it "returns an Enumerator" do + enum = @io.send(@method, nil, 1024) + enum.should be_an_instance_of(Enumerator) + + enum.each { |l| ScratchPad << l } + ScratchPad.recorded.should == [IOSpecs.lines.join] + end + + describe "returned Enumerator" do + describe "size" do + it "should return nil" do + @io.send(@method, nil, 1024).size.should == nil + end + end + end + end + + describe "when a block is given" do + it "accepts an empty block" do + @io.send(@method, nil, 1024) {}.should equal(@io) + end + + describe "when passed nil as a separator" do + it "yields self's content starting from the current position when the passed separator is nil" do + @io.pos = 100 + @io.send(@method, nil, 1024) { |s| ScratchPad << s } + ScratchPad.recorded.should == ["qui a linha cinco.\nHere is line six.\n"] + end + end + + describe "when passed an empty String as a separator" do + it "yields each paragraph" do + @io.send(@method, "", 1024) { |s| ScratchPad << s } + ScratchPad.recorded.should == IOSpecs.paragraphs + end + end + end + end + ruby_version_is "2.4" do describe "when passed chomp" do it "yields each line without trailing newline characters to the passed block" do diff --git a/spec/ruby/core/io/sysread_spec.rb b/spec/ruby/core/io/sysread_spec.rb index 1993653df9..bedcc31169 100644 --- a/spec/ruby/core/io/sysread_spec.rb +++ b/spec/ruby/core/io/sysread_spec.rb @@ -80,3 +80,19 @@ describe "IO#sysread on a file" do lambda { IOSpecs.closed_io.sysread(5) }.should raise_error(IOError) end end + +describe "IO#sysread" do + before do + @read, @write = IO.pipe + end + + after do + @read.close + @write.close + end + + it "returns a smaller string if less than size bytes are available" do + @write.syswrite "ab" + @read.sysread(3).should == "ab" + end +end diff --git a/spec/ruby/core/io/write_nonblock_spec.rb b/spec/ruby/core/io/write_nonblock_spec.rb index a6a263e931..751a36aade 100644 --- a/spec/ruby/core/io/write_nonblock_spec.rb +++ b/spec/ruby/core/io/write_nonblock_spec.rb @@ -32,7 +32,9 @@ platform_is_not :windows do end it "checks if the file is writable if writing zero bytes" do - lambda { @readonly_file.write_nonblock("") }.should raise_error + lambda { + @readonly_file.write_nonblock("") + }.should raise_error(IOError) end end @@ -73,4 +75,12 @@ describe 'IO#write_nonblock' do end end + platform_is_not :windows do + it 'sets the IO in nonblock mode' do + require 'io/nonblock' + @write.nonblock?.should == false + @write.write_nonblock('a') + @write.nonblock?.should == true + end + end end |