diff options
Diffstat (limited to 'spec/ruby/library/tempfile/open_spec.rb')
| -rw-r--r-- | spec/ruby/library/tempfile/open_spec.rb | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/spec/ruby/library/tempfile/open_spec.rb b/spec/ruby/library/tempfile/open_spec.rb new file mode 100644 index 0000000000..0993a2c5ee --- /dev/null +++ b/spec/ruby/library/tempfile/open_spec.rb @@ -0,0 +1,97 @@ +require_relative '../../spec_helper' +require 'tempfile' + +describe "Tempfile#open" do + before :each do + @tempfile = Tempfile.new("specs") + @tempfile.puts("Test!") + end + + after :each do + @tempfile.close! + end + + it "reopens self" do + @tempfile.close + @tempfile.open + @tempfile.closed?.should == false + end + + it "reopens self in read and write mode and does not truncate" do + @tempfile.open + @tempfile.puts("Another Test!") + + @tempfile.open + @tempfile.readline.should == "Another Test!\n" + end +end + +describe "Tempfile.open" do + after :each do + @tempfile.close! if @tempfile + end + + it "returns a new, open Tempfile instance" do + @tempfile = Tempfile.open("specs") + # Delegation messes up .should.instance_of?(Tempfile) + @tempfile.instance_of?(Tempfile).should == true + end + + it "is passed an array [base, suffix] as first argument" do + Tempfile.open(["specs", ".tt"]) { |tempfile| @tempfile = tempfile } + @tempfile.path.should =~ /specs.*\.tt$/ + end + + it "passes the third argument (options) to open" do + Tempfile.open("specs", Dir.tmpdir, encoding: "IBM037:IBM037", binmode: true) do |tempfile| + @tempfile = tempfile + tempfile.external_encoding.should == Encoding.find("IBM037") + tempfile.binmode?.should == true + end + end + + it "uses a blank string for basename when passed no arguments" do + Tempfile.open() do |tempfile| + @tempfile = tempfile + tempfile.closed?.should == false + end + @tempfile.should_not == nil + end +end + +describe "Tempfile.open when passed a block" do + before :each do + ScratchPad.clear + end + + after :each do + # Tempfile.open with block does not unlink + @tempfile.close! if @tempfile + end + + it "yields a new, open Tempfile instance to the block" do + Tempfile.open("specs") do |tempfile| + @tempfile = tempfile + ScratchPad.record :yielded + + # Delegation messes up .should.instance_of?(Tempfile) + tempfile.instance_of?(Tempfile).should == true + tempfile.closed?.should == false + end + + ScratchPad.recorded.should == :yielded + end + + it "returns the value of the block" do + value = Tempfile.open("specs") do |tempfile| + @tempfile = tempfile + "return" + end + value.should == "return" + end + + it "closes the yielded Tempfile after the block" do + Tempfile.open("specs") { |tempfile| @tempfile = tempfile } + @tempfile.closed?.should == true + end +end |
