diff options
Diffstat (limited to 'spec/ruby/core/io/lineno_spec.rb')
-rw-r--r-- | spec/ruby/core/io/lineno_spec.rb | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/spec/ruby/core/io/lineno_spec.rb b/spec/ruby/core/io/lineno_spec.rb index 3d1b2275cc..99266ecca1 100644 --- a/spec/ruby/core/io/lineno_spec.rb +++ b/spec/ruby/core/io/lineno_spec.rb @@ -14,6 +14,24 @@ describe "IO#lineno" do -> { IOSpecs.closed_io.lineno }.should raise_error(IOError) end + it "raises an IOError on a write-only stream" do + name = tmp("io_lineno.txt") + begin + File.open(name, 'w') do |f| + -> { f.lineno }.should raise_error(IOError) + end + ensure + rm_r name + end + end + + it "raises an IOError on a duplexed stream with the read side closed" do + IO.popen('cat', 'r+') do |p| + p.close_read + -> { p.lineno }.should raise_error(IOError) + end + end + it "returns the current line number" do @io.lineno.should == 0 @@ -40,6 +58,24 @@ describe "IO#lineno=" do -> { IOSpecs.closed_io.lineno = 5 }.should raise_error(IOError) end + it "raises an IOError on a write-only stream" do + name = tmp("io_lineno.txt") + begin + File.open(name, 'w') do |f| + -> { f.lineno = 0 }.should raise_error(IOError) + end + ensure + rm_r name + end + end + + it "raises an IOError on a duplexed stream with the read side closed" do + IO.popen('cat', 'r+') do |p| + p.close_read + -> { p.lineno = 0 }.should raise_error(IOError) + end + end + it "calls #to_int on a non-numeric argument" do obj = mock('123') obj.should_receive(:to_int).and_return(123) |