Bug #8768 ยป 0001-lib-tempfile.rb-Tempfile-unlink-undefine-finalizer.patch
| lib/tempfile.rb | ||
|---|---|---|
|
def close!
|
||
|
_close
|
||
|
unlink
|
||
|
ObjectSpace.undefine_finalizer(self)
|
||
|
end
|
||
|
# Unlinks (deletes) the file from the filesystem. One should always unlink
|
||
| ... | ... | |
|
# remove tmpname from remover
|
||
|
@data[0] = @data[1] = nil
|
||
|
@tmpname = nil
|
||
|
ObjectSpace.undefine_finalizer(self)
|
||
|
end
|
||
|
alias delete unlink
|
||
| test/test_tempfile.rb | ||
|---|---|---|
|
end
|
||
|
end
|
||
|
def test_tempfile_finalizer_does_not_run_if_unlinked
|
||
|
args = %w(--debug --disable-gems -rtempfile)
|
||
|
assert_in_out_err(args, <<-'EOS') do |(filename), (error)|
|
||
|
tmp = Tempfile.new('foo')
|
||
|
puts tmp.path
|
||
|
tmp.unlink
|
||
|
EOS
|
||
|
assert !File.exist?(filename)
|
||
|
assert_nil error, "we used to get a confusing 'removing ...done' here"
|
||
|
end
|
||
|
end
|
||
|
def test_size_flushes_buffer_before_determining_file_size
|
||
|
t = tempfile("foo")
|
||
|
t.write("hello")
|
||