diff options
Diffstat (limited to 'spec/ruby/core/io/write_nonblock_spec.rb')
| -rw-r--r-- | spec/ruby/core/io/write_nonblock_spec.rb | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/spec/ruby/core/io/write_nonblock_spec.rb b/spec/ruby/core/io/write_nonblock_spec.rb index a8b9ce0a36..a6bd43c058 100644 --- a/spec/ruby/core/io/write_nonblock_spec.rb +++ b/spec/ruby/core/io/write_nonblock_spec.rb @@ -31,15 +31,26 @@ platform_is_not :windows do end end + it "does not modify the passed argument" do + File.open(@filename, "w") do |f| + f.set_encoding(Encoding::IBM437) + # A character whose codepoint differs between UTF-8 and IBM437 + f.write_nonblock("ƒ".freeze) + end + + File.binread(@filename).bytes.should == [198, 146] + end + it "checks if the file is writable if writing zero bytes" do -> { - @readonly_file.write_nonblock("") - }.should raise_error(IOError) + @readonly_file.write_nonblock("") + }.should.raise(IOError) end end describe "IO#write_nonblock" do it_behaves_like :io_write, :write_nonblock + it_behaves_like :io_write_no_transcode, :write_nonblock end end @@ -56,12 +67,12 @@ describe 'IO#write_nonblock' do it "raises an exception extending IO::WaitWritable when the write would block" do -> { loop { @write.write_nonblock('a' * 10_000) } - }.should raise_error(IO::WaitWritable) { |e| + }.should.raise(IO::WaitWritable) { |e| platform_is_not :windows do - e.should be_kind_of(Errno::EAGAIN) + e.should.is_a?(Errno::EAGAIN) end platform_is :windows do - e.should be_kind_of(Errno::EWOULDBLOCK) + e.should.is_a?(Errno::EWOULDBLOCK) end } end |
