mirror of
https://github.com/meineerde/redmine.git
synced 2025-12-21 07:51:12 +00:00
When creating more than two identical attachments in a single transaction, the first one always ends up unreadable (#33769).
Patch by Jens Krämer. git-svn-id: http://svn.redmine.org/redmine/trunk@20094 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
82e0fe13a3
commit
26bc3838e1
@ -470,7 +470,8 @@ class Attachment < ActiveRecord::Base
|
||||
.where(digest: self.digest, filesize: self.filesize)
|
||||
.where('id <> ? and disk_filename <> ?',
|
||||
self.id, self.disk_filename)
|
||||
.first
|
||||
.order(:id)
|
||||
.last
|
||||
existing.with_lock do
|
||||
original_diskfile = self.diskfile
|
||||
existing_diskfile = existing.diskfile
|
||||
|
||||
@ -235,6 +235,23 @@ class AttachmentTest < ActiveSupport::TestCase
|
||||
assert_not_equal a1.diskfile, a2.diskfile
|
||||
end
|
||||
|
||||
def test_identical_attachments_created_in_same_transaction_should_not_end_up_unreadable
|
||||
attachments = []
|
||||
Project.transaction do
|
||||
3.times do
|
||||
a = Attachment.create!(
|
||||
:container => Issue.find(1), :author => User.find(1),
|
||||
:file => mock_file(:filename => 'foo', :content => 'abcde')
|
||||
)
|
||||
attachments << a
|
||||
end
|
||||
end
|
||||
attachments.each do |a|
|
||||
assert a.readable?
|
||||
end
|
||||
assert_equal 1, attachments.map(&:diskfile).uniq.size
|
||||
end
|
||||
|
||||
def test_filename_should_be_basenamed
|
||||
a = Attachment.new(:file => mock_file(:original_filename => "path/to/the/file"))
|
||||
assert_equal 'file', a.filename
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user