temppath 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -7,6 +7,13 @@ deleted when Ruby exits.
7
7
 
8
8
  [![Gem Version](https://badge.fury.io/rb/temppath.png)](http://badge.fury.io/rb/temppath) [![Build Status](https://travis-ci.org/keita/temppath.png?branch=master)](https://travis-ci.org/keita/temppath) [![Coverage Status](https://coveralls.io/repos/keita/temppath/badge.png?branch=master)](https://coveralls.io/r/keita/temppath) [![Code Climate](https://codeclimate.com/github/keita/temppath.png)](https://codeclimate.com/github/keita/temppath)
9
9
 
10
+ ## Features
11
+
12
+ * You can generate a path without file.
13
+ * Temppath can generate files and directories as well. Therefore you are free
14
+ from confusion which is correct tmpfile/tempfile or tmpdir/tempdir.
15
+ * Generated paths are `Pathname` objects.
16
+
10
17
  ## Installation
11
18
 
12
19
  $ gem install temppath
@@ -43,9 +50,9 @@ path.file? #=> true
43
50
 
44
51
  #### Use temporary path generator
45
52
 
46
- You can use Temppath::Generator when you want to use multiple base
47
- directory. Generated paths have same natures as paths from Tempath.create,
48
- mkdir, and touch.
53
+ You can use `Temppath::Generator` when you want to use multiple base
54
+ directory. Generated paths have same natures as paths from `Tempath.create`,
55
+ `mkdir`, and `touch`.
49
56
 
50
57
  ```ruby
51
58
  # make a generator
@@ -103,6 +103,10 @@ module Temppath
103
103
  @basename = (option[:basename] || "").to_s
104
104
  @unlink = true
105
105
 
106
+ # extend basedir with secure methods
107
+ @basedir.extend OriginalMethodHolder
108
+ @basedir.extend SecurePermissionMethods
109
+
106
110
  # register a cleaner for temporary directory
107
111
  Kernel.at_exit do
108
112
  if @unlink
@@ -120,11 +124,18 @@ module Temppath
120
124
  # pathname of base directory
121
125
  def create(option={})
122
126
  _basename = option[:basename] || @basename
123
- _basedir = Pathname.new(option[:basedir] || @basedir)
127
+ _basedir = @basedir
128
+ if option[:basedir]
129
+ _basedir = Pathname.new(option[:basedir])
130
+
131
+ # extend basedir with secure methods
132
+ _basedir.extend OriginalMethodHolder
133
+ _basedir.extend SecurePermissionMethods
134
+ end
124
135
 
125
136
  # init basedir
126
137
  unless _basedir.exist?
127
- _basedir.mkdir(0700)
138
+ _basedir.mkpath
128
139
  end
129
140
 
130
141
  # make a path
@@ -219,6 +230,16 @@ module Temppath
219
230
  @generator.basedir
220
231
  end
221
232
 
233
+ # Return base name of paths created by Temppath.
234
+ def basename
235
+ @generator.basename
236
+ end
237
+
238
+ # Set the base name.
239
+ def basename=(name)
240
+ @generator.basename = name
241
+ end
242
+
222
243
  # Return true if unlink mode is enabled.
223
244
  #
224
245
  # @return [Boolean]
@@ -227,7 +248,7 @@ module Temppath
227
248
  @generator.unlink
228
249
  end
229
250
 
230
- # Set true or false unlink mode.
251
+ # Set true or false for unlink mode.
231
252
  #
232
253
  # @param b [Boolean]
233
254
  # unlink mode
@@ -1,4 +1,4 @@
1
1
  module Temppath
2
2
  # version of temppath gem
3
- VERSION = "0.3.0"
3
+ VERSION = "0.3.1"
4
4
  end
@@ -47,6 +47,18 @@ describe Temppath do
47
47
  dir.should.not.exist
48
48
  end
49
49
 
50
+ it 'should get basename' do
51
+ Temppath.basename.should == ""
52
+ end
53
+
54
+ it 'should set basename' do
55
+ Temppath.basename = "test_"
56
+ Temppath.basename.should == "test_"
57
+ Temppath.create.basename.to_s.should.start_with "test_"
58
+ Temppath.basename = ""
59
+ Temppath.create.basename.to_s.should.not.start_with "test_"
60
+ end
61
+
50
62
  it 'should get unlink mode' do
51
63
  Temppath.unlink.should == true
52
64
  end
@@ -122,7 +134,7 @@ describe Temppath::Generator do
122
134
  before do
123
135
  Temppath.update_basedir
124
136
  @dir = Dir.mktmpdir("ruby-temppath-generator-test")
125
- @generator = Temppath::Generator.new(@dir)
137
+ @generator = Temppath::Generator.new(@dir, basename: "test_")
126
138
  end
127
139
 
128
140
  it "should generate a path" do
@@ -151,13 +163,13 @@ describe Temppath::Generator do
151
163
  it "should have own base directory" do
152
164
  Temppath.basedir.should != @generator.basedir
153
165
 
154
- dir = Dir.mktmpdir("ruby-temppath-generator-test")
166
+ dir = Pathname.new(Dir.mktmpdir("ruby-temppath-generator-test"))
155
167
  generator = Temppath::Generator.new(dir)
156
168
  generator.basedir.should != @generator.basedir
157
169
  end
158
170
 
159
171
  it "should make base directory with #create if it doesn't exist" do
160
- dir = Dir.mktmpdir("ruby-temppath-generator-test")
172
+ dir = Pathname.new(Dir.mktmpdir("ruby-temppath-generator-test"))
161
173
  generator = Temppath::Generator.new(dir + "create")
162
174
  generator.basedir.should.not.exist
163
175
  generator.create
@@ -165,7 +177,7 @@ describe Temppath::Generator do
165
177
  end
166
178
 
167
179
  it "should make base directory with #mkdir if it doesn't exist" do
168
- dir = Dir.mktmpdir("ruby-temppath-generator-test")
180
+ dir = Pathname.new(Dir.mktmpdir("ruby-temppath-generator-test"))
169
181
  generator = Temppath::Generator.new(dir + "mkdir")
170
182
  generator.basedir.should.not.exist
171
183
  generator.create
@@ -173,10 +185,25 @@ describe Temppath::Generator do
173
185
  end
174
186
 
175
187
  it "should make base directory with #touch if it doesn't exist" do
176
- dir = Dir.mktmpdir("ruby-temppath-generator-test")
188
+ dir = Pathname.new(Dir.mktmpdir("ruby-temppath-generator-test"))
177
189
  generator = Temppath::Generator.new(dir + "touch")
178
190
  generator.basedir.should.not.exist
179
191
  generator.create
180
192
  generator.basedir.should.exist
181
193
  end
194
+
195
+ it "should make base directory and parents" do
196
+ dir = Pathname.new(Dir.mktmpdir("ruby-temppath-generator-test"))
197
+ generator = Temppath::Generator.new(dir + "a" + "b" + "c")
198
+ generator.basedir.should.not.exist
199
+ path = generator.create
200
+ generator.basedir.should.exist
201
+ ("%o" % (dir + "a").stat.mode).should == "40700"
202
+ ("%o" % (dir + "a" + "b").stat.mode).should == "40700"
203
+ ("%o" % (dir + "a" + "b" + "c").stat.mode).should == "40700"
204
+ end
205
+
206
+ it "should make path with generator's basename" do
207
+ @generator.create.basename.to_s.should.start_with "test_"
208
+ end
182
209
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: temppath
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -123,7 +123,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
123
123
  version: '0'
124
124
  segments:
125
125
  - 0
126
- hash: 1725793384501661700
126
+ hash: -400379893233300288
127
127
  required_rubygems_version: !ruby/object:Gem::Requirement
128
128
  none: false
129
129
  requirements:
@@ -132,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  version: '0'
133
133
  segments:
134
134
  - 0
135
- hash: 1725793384501661700
135
+ hash: -400379893233300288
136
136
  requirements: []
137
137
  rubyforge_project:
138
138
  rubygems_version: 1.8.25