1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
require File.expand_path('../../../../spec_helper', __FILE__)
require "tmpdir"
ruby_version_is "1.8.7" do
describe "Dir.mktmpdir when passed no arguments" do
after :each do
Dir.rmdir @tmpdir if File.directory? @tmpdir
end
it "returns the path to the created tmp-dir" do
Dir.stub!(:mkdir)
Dir.should_receive(:tmpdir).and_return("/tmp")
@tmpdir = Dir.mktmpdir
@tmpdir.should =~ /^\/tmp\//
end
it "creates a new writable directory in the path provided by Dir.tmpdir" do
Dir.should_receive(:tmpdir).and_return(tmp(""))
@tmpdir = Dir.mktmpdir
File.directory?(@tmpdir).should be_true
File.writable?(@tmpdir).should be_true
end
end
describe "Dir.mkdir when passed a block" do
before(:each) do
Dir.stub!(:tmpdir).and_return("/tmp")
FileUtils.stub!(:remove_entry)
FileUtils.stub!(:remove_entry_secure)
end
after :each do
Dir.rmdir @tmpdir if File.directory? @tmpdir
end
it "yields the path to the passed block" do
Dir.stub!(:mkdir)
called = nil
Dir.mktmpdir do |path|
@tmpdir = path
called = true
path.should =~ /^\/tmp\//
end
called.should be_true
end
it "creates the tmp-dir before yielding" do
Dir.should_receive(:tmpdir).and_return(tmp(""))
Dir.mktmpdir do |path|
@tmpdir = path
File.directory?(path).should be_true
File.writable?(path).should be_true
end
end
ruby_version_is "1.8.7"..."2.0" do
it "removes the tmp-dir after executing the block" do
Dir.stub!(:mkdir)
Dir.mktmpdir do |path|
@tmpdir = path
FileUtils.should_receive(:remove_entry_secure).with(path)
end
end
end
ruby_version_is "2.0" do
it "removes the tmp-dir after executing the block" do
Dir.stub!(:mkdir)
Dir.mktmpdir do |path|
@tmpdir = path
FileUtils.should_receive(:remove_entry).with(path)
end
end
end
it "returns the blocks return value" do
Dir.stub!(:mkdir)
result = Dir.mktmpdir do |path|
@tmpdir = path
:test
end
result.should equal(:test)
end
end
describe "Dir.mktmpdir when passed [String]" do
before :each do
Dir.stub!(:mkdir)
Dir.stub!(:tmpdir).and_return("/tmp")
end
after :each do
Dir.rmdir @tmpdir if File.directory? @tmpdir
end
it "uses the passed String as a prefix to the tmp-directory" do
prefix = "before"
@tmpdir = Dir.mktmpdir(prefix)
@tmpdir.should =~ /^\/tmp\/#{prefix}/
end
end
describe "Dir.mktmpdir when passed [Array]" do
before :each do
Dir.stub!(:mkdir)
Dir.stub!(:tmpdir).and_return("/tmp")
FileUtils.stub!(:remove_entry_secure)
end
after :each do
Dir.rmdir @tmpdir if File.directory? @tmpdir
end
it "uses the first element of the passed Array as a prefix and the scond element as a suffix to the tmp-directory" do
prefix = "before"
suffix = "after"
@tmpdir = Dir.mktmpdir([prefix, suffix])
@tmpdir.should =~ /#{suffix}$/
end
end
describe "Dir.mktmpdir when passed [Object]" do
it "raises an ArgumentError" do
lambda { Dir.mktmpdir(Object.new) }.should raise_error(ArgumentError)
lambda { Dir.mktmpdir(:symbol) }.should raise_error(ArgumentError)
lambda { Dir.mktmpdir(10) }.should raise_error(ArgumentError)
end
end
end
|