1 require File.dirname(__FILE__) + '/../../spec_helper'
2 require File.dirname(__FILE__) + '/fixtures/classes'
3 require File.dirname(__FILE__) + '/shared/write'
5 describe "IO#syswrite on a file" do
7 @filename = tmp("IO_syswrite_file") + $$.to_s
8 File.open(@filename, "w") do |file|
9 file.syswrite("012345678901234567890123456789")
11 @file = File.open(@filename, "r+")
12 @readonly_file = File.open(@filename)
18 File.delete(@filename)
21 it "writes all of the string's bytes but does not buffer them" do
22 written = @file.syswrite("abcde")
24 File.open(@filename) do |file|
25 file.sysread(10).should == "abcde56789"
28 file.sysread(10).should == "abcde56789"
32 not_compliant_on :rubinius do
33 it "warns if called immediately after a buffered IO#write" do
35 lambda { @file.syswrite("fghij") }.should complain(/syswrite/)
39 it "does not warn if called after IO#write with intervening IO#sysread" do
40 @file.syswrite("abcde")
42 lambda { @file.syswrite("fghij") }.should_not complain
45 it "writes to the actual file position when called after buffered IO#read" do
47 @file.syswrite("abcde")
48 File.open(@filename) do |file|
49 file.sysread(10).should == "01234abcde"
53 it_behaves_like(:io_write, :syswrite)