Updated RubySpec source to 55122684.
[rbx.git] / spec / frozen / 1.8 / core / io / close_read_spec.rb
blob50be341989169a42c7816b498db4faa0652324ed
1 require File.dirname(__FILE__) + '/../../spec_helper'
2 require File.dirname(__FILE__) + '/fixtures/classes'
3 require 'fileutils'
5 describe "IO#close_read" do
7   before :each do
8     @io = IO.popen 'cat', "r+"
9   end
11   after :each do
12     @io.close unless @io.closed?
13   end
15   it "closes the read end of a duplex I/O stream" do
16     @io.close_read
18     lambda { @io.read }.should raise_error(IOError)
19   end
21   it "raises an IOError on subsequent invocations" do
22     @io.close_read
24     lambda { @io.close_read }.should raise_error(IOError)
25   end
27   it "allows subsequent invocation of close" do
28     @io.close_read
30     lambda { @io.close }.should_not raise_error
31   end
33   it "raises an IOError if the stream is writable and not duplexed" do
34     io = File.open tmp('io.close.txt'), 'w'
36     begin
37       lambda { io.close_read }.should raise_error(IOError)
38     ensure
39       io.close unless io.closed?
40     end
41   end
43   it "closes the stream if it is neither writable nor duplexed" do
44     io_close_path = tmp 'io.close.txt'
45     FileUtils.touch io_close_path
47     io = File.open io_close_path
49     io.close_read
51     io.closed?.should == true
52   end
54   it "raises IOError on closed stream" do
55     @io.close
57     lambda { @io.close_read }.should raise_error(IOError)
58   end
60 end