File: mktmpdir_spec.rb

package info (click to toggle)
jruby 1.7.26-1%2Bdeb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 84,572 kB
  • sloc: ruby: 669,910; java: 253,056; xml: 35,152; ansic: 9,187; yacc: 7,267; cpp: 5,244; sh: 1,036; makefile: 345; jsp: 48; tcl: 40
file content (130 lines) | stat: -rw-r--r-- 3,516 bytes parent folder | download
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