diff options
author | Eric Wong <normalperson@yhbt.net> | 2009-03-25 16:25:45 -0700 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2009-03-25 16:28:02 -0700 |
commit | 9ccced22c38c30e776edc5c2513194623b42a7a9 (patch) | |
tree | 6f0c526e3681c8e10520d57fab57f82c2d06584a /test/unit | |
parent | a87866f83c0185757b2f85aeab17e2a9553b6ae1 (diff) | |
download | unicorn-9ccced22c38c30e776edc5c2513194623b42a7a9.tar.gz |
Otherwise we bloat TMPDIR and run the host out of space, oops!
Diffstat (limited to 'test/unit')
-rw-r--r-- | test/unit/test_upload.rb | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/unit/test_upload.rb b/test/unit/test_upload.rb index 41fc473..8246f65 100644 --- a/test/unit/test_upload.rb +++ b/test/unit/test_upload.rb @@ -50,6 +50,32 @@ class UploadTest < Test::Unit::TestCase assert_equal @sha1.hexdigest, resp[:sha1] end + def test_tempfile_unlinked + spew_path = lambda do |env| + if orig = env['HTTP_X_OLD_PATH'] + assert orig != env['rack.input'].path + end + assert_equal length, env['rack.input'].size + [ 200, @hdr.merge('X-Tempfile-Path' => env['rack.input'].path), [] ] + end + start_server(spew_path) + sock = TCPSocket.new(@addr, @port) + sock.syswrite("PUT / HTTP/1.0\r\nContent-Length: #{length}\r\n\r\n") + @count.times { sock.syswrite(' ' * @bs) } + path = sock.read[/^X-Tempfile-Path: (\S+)/, 1] + sock.close + + # send another request to ensure we hit the next request + sock = TCPSocket.new(@addr, @port) + sock.syswrite("PUT / HTTP/1.0\r\nX-Old-Path: #{path}\r\n" \ + "Content-Length: #{length}\r\n\r\n") + @count.times { sock.syswrite(' ' * @bs) } + path2 = sock.read[/^X-Tempfile-Path: (\S+)/, 1] + sock.close + assert path != path2 + + assert ! File.exist?(path) + end def test_put_keepalive_truncates_small_overwrite start_server(@sha1_app) |