diff --git a/app/models/upload.rb b/app/models/upload.rb index d926579e5..387be4e49 100644 --- a/app/models/upload.rb +++ b/app/models/upload.rb @@ -115,7 +115,7 @@ class Upload < ApplicationRecord return end - media_asset.destroy! + media_asset&.destroy! DanbooruLogger.info("Uploads: Deleting files for upload md5=#{md5}") Danbooru.config.storage_manager.delete_file(nil, md5, file_ext, :original) Danbooru.config.storage_manager.delete_file(nil, md5, file_ext, :large) diff --git a/test/unit/upload_service_test.rb b/test/unit/upload_service_test.rb index e03f7dbe5..48b5b05e1 100644 --- a/test/unit/upload_service_test.rb +++ b/test/unit/upload_service_test.rb @@ -1033,5 +1033,12 @@ class UploadServiceTest < ActiveSupport::TestCase assert(@upload.is_errored?) assert_difference("Upload.count", -1) { @upload.destroy! } end + + should "work on uploads with an invalid file" do + @upload = as(@user) { UploadService.new(file: upload_file("test/files/test-empty.bin")).start! } + + assert(@upload.is_errored?) + assert_difference("Upload.count", -1) { @upload.destroy! } + end end end