diff options
Diffstat (limited to 'spec/ruby/library/stringio/shared/write.rb')
| -rw-r--r-- | spec/ruby/library/stringio/shared/write.rb | 74 |
1 files changed, 13 insertions, 61 deletions
diff --git a/spec/ruby/library/stringio/shared/write.rb b/spec/ruby/library/stringio/shared/write.rb index 4661658baf..bcb548bbd0 100644 --- a/spec/ruby/library/stringio/shared/write.rb +++ b/spec/ruby/library/stringio/shared/write.rb @@ -1,6 +1,6 @@ describe :stringio_write, shared: true do before :each do - @io = StringIO.new(+'12345') + @io = StringIO.new('12345') end it "tries to convert the passed Object to a String using #to_s" do @@ -13,7 +13,7 @@ end describe :stringio_write_string, shared: true do before :each do - @io = StringIO.new(+'12345') + @io = StringIO.new('12345') end # TODO: RDoc says that #write appends at the current position. @@ -45,79 +45,31 @@ describe :stringio_write_string, shared: true do @io.pos.should eql(4) end - it "handles concurrent writes correctly" do - @io = StringIO.new - n = 8 - go = false - threads = n.times.map { |i| - Thread.new { - Thread.pass until go - @io.write i.to_s - } - } - go = true - threads.each(&:join) - @io.string.size.should == n.times.map(&:to_s).join.size + it "taints self's String when the passed argument is tainted" do + @io.send(@method, "test".taint) + @io.string.tainted?.should be_true end - it "handles writing non-ASCII UTF-8 after seek" do - @io.binmode - @io << "\x80" - @io.pos = 0 - @io << "\x81" - @io.string.should == "\x812345".b - end - - it "handles writing with position < buffer size" do - @io.pos = 2 - @io.write "abc" - @io.string.should == "12abc" - - @io.pos = 2 - @io.write "de" - @io.string.should == "12dec" - - @io.pos = 2 - @io.write "fghi" - @io.string.should == "12fghi" - end - - it "transcodes the given string when the external encoding is set and neither is BINARY" do - utf8_str = "hello" - io = StringIO.new.set_encoding(Encoding::UTF_16BE) - io.external_encoding.should == Encoding::UTF_16BE - - io.send(@method, utf8_str) - - expected = [0, 104, 0, 101, 0, 108, 0, 108, 0, 111] # UTF-16BE bytes for "hello" - io.string.bytes.should == expected - end - - it "does not transcode the given string when the external encoding is set and the string encoding is BINARY" do - str = "été_".b - io = StringIO.new.set_encoding(Encoding::UTF_16BE) - io.external_encoding.should == Encoding::UTF_16BE - - io.send(@method, str) - - io.string.bytes.should == str.bytes + it "does not taint self when the passed argument is tainted" do + @io.send(@method, "test".taint) + @io.tainted?.should be_false end end describe :stringio_write_not_writable, shared: true do it "raises an IOError" do - io = StringIO.new(+"test", "r") - -> { io.send(@method, "test") }.should raise_error(IOError) + io = StringIO.new("test", "r") + lambda { io.send(@method, "test") }.should raise_error(IOError) - io = StringIO.new(+"test") + io = StringIO.new("test") io.close_write - -> { io.send(@method, "test") }.should raise_error(IOError) + lambda { io.send(@method, "test") }.should raise_error(IOError) end end describe :stringio_write_append, shared: true do before :each do - @io = StringIO.new(+"example", "a") + @io = StringIO.new("example", "a") end it "appends the passed argument to the end of self" do |
