summaryrefslogtreecommitdiff
path: root/spec/ruby/library/stringio/shared/write.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/stringio/shared/write.rb')
-rw-r--r--spec/ruby/library/stringio/shared/write.rb74
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