1describe :file_directory, shared: true do 2 before :each do 3 @dir = tmp("file_directory") 4 @file = tmp("file_directory.txt") 5 6 mkdir_p @dir 7 touch @file 8 end 9 10 after :each do 11 rm_r @dir, @file 12 end 13 14 it "returns true if the argument is a directory" do 15 @object.send(@method, @dir).should be_true 16 end 17 18 it "returns false if the argument is not a directory" do 19 @object.send(@method, @file).should be_false 20 end 21 22 it "accepts an object that has a #to_path method" do 23 @object.send(@method, mock_to_path(@dir)).should be_true 24 end 25 26 it "raises a TypeError when passed an Integer" do 27 lambda { @object.send(@method, 1) }.should raise_error(TypeError) 28 lambda { @object.send(@method, bignum_value) }.should raise_error(TypeError) 29 end 30 31 it "raises a TypeError when passed nil" do 32 lambda { @object.send(@method, nil) }.should raise_error(TypeError) 33 end 34end 35 36describe :file_directory_io, shared: true do 37 before :each do 38 @dir = tmp("file_directory_io") 39 @file = tmp("file_directory_io.txt") 40 41 mkdir_p @dir 42 touch @file 43 end 44 45 after :each do 46 rm_r @dir, @file 47 end 48 49 it "returns false if the argument is an IO that's not a directory" do 50 @object.send(@method, STDIN).should be_false 51 end 52 53 platform_is_not :windows do 54 it "returns true if the argument is an IO that is a directory" do 55 File.open(@dir, "r") do |f| 56 @object.send(@method, f).should be_true 57 end 58 end 59 end 60 61 it "calls #to_io to convert a non-IO object" do 62 io = mock('FileDirectoryIO') 63 io.should_receive(:to_io).and_return(STDIN) 64 @object.send(@method, io).should be_false 65 end 66end 67