tmptation 1.1 → 1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/tmptation.rb +5 -1
- data/test/tmptation_test.rb +32 -0
- metadata +2 -2
data/lib/tmptation.rb
CHANGED
@@ -4,7 +4,7 @@ require 'tmpdir'
|
|
4
4
|
require 'fileutils'
|
5
5
|
|
6
6
|
module Tmptation
|
7
|
-
VERSION = 1.
|
7
|
+
VERSION = 1.2
|
8
8
|
|
9
9
|
# Adds a #safe_delete method that will delete the object's associated path
|
10
10
|
# (either #path or #to_s, if it exists) only if it lives within the system's
|
@@ -45,6 +45,8 @@ module Tmptation
|
|
45
45
|
raise UnsafeDelete.new("refusing to remove non-tmp directory '#{path}'")
|
46
46
|
end
|
47
47
|
FileUtils.remove_entry_secure(path.to_s)
|
48
|
+
rescue Errno::ENOENT
|
49
|
+
# noop
|
48
50
|
end
|
49
51
|
end
|
50
52
|
|
@@ -111,6 +113,7 @@ module Tmptation
|
|
111
113
|
instance.safe_delete
|
112
114
|
instance.close
|
113
115
|
end
|
116
|
+
instances.clear
|
114
117
|
end
|
115
118
|
alias -@ delete_all
|
116
119
|
end
|
@@ -156,6 +159,7 @@ module Tmptation
|
|
156
159
|
# Safe deletes and closes all instances
|
157
160
|
def delete_all
|
158
161
|
instances.each {|instance| instance.safe_delete }
|
162
|
+
instances.clear
|
159
163
|
end
|
160
164
|
alias -@ delete_all
|
161
165
|
end
|
data/test/tmptation_test.rb
CHANGED
@@ -67,6 +67,14 @@ describe Tmptation::SafeDeletable do
|
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
|
+
it "should handle nonexistent entries" do
|
71
|
+
dir = Pathname(Dir.tmpdir).join("nonexistentdir-#{Time.now.to_f}")
|
72
|
+
dir.extend(SafeDeletable)
|
73
|
+
|
74
|
+
refute dir.exist?
|
75
|
+
dir.safe_delete #refute raises
|
76
|
+
end
|
77
|
+
|
70
78
|
it "should use an object's #path if it exists" do
|
71
79
|
begin
|
72
80
|
file = Tempfile.new('safe_deletable')
|
@@ -187,6 +195,18 @@ describe Tmptation::TmpFile do
|
|
187
195
|
foo.delete if foo.path.exist?
|
188
196
|
end
|
189
197
|
end
|
198
|
+
|
199
|
+
it "should clear the instance references" do
|
200
|
+
begin
|
201
|
+
foo = TmpFile.new
|
202
|
+
assert_equal [foo], TmpFile.instances
|
203
|
+
|
204
|
+
TmpFile.delete_all
|
205
|
+
assert_empty TmpFile.instances
|
206
|
+
ensure
|
207
|
+
foo.delete if foo.path.exist?
|
208
|
+
end
|
209
|
+
end
|
190
210
|
end
|
191
211
|
|
192
212
|
describe Tmptation::TmpDir do
|
@@ -252,5 +272,17 @@ describe Tmptation::TmpDir do
|
|
252
272
|
foo.rmdir if foo.exist?
|
253
273
|
end
|
254
274
|
end
|
275
|
+
|
276
|
+
it "should clear the instance references" do
|
277
|
+
begin
|
278
|
+
foo = TmpDir.new
|
279
|
+
assert_equal [foo], TmpDir.instances
|
280
|
+
|
281
|
+
TmpDir.delete_all
|
282
|
+
assert_empty TmpDir.instances
|
283
|
+
ensure
|
284
|
+
foo.rmdir if foo.exist?
|
285
|
+
end
|
286
|
+
end
|
255
287
|
end
|
256
288
|
|