tests: skip video file tests if ffmpeg isn't installed.
This commit is contained in:
@@ -45,6 +45,10 @@ class MediaFile
|
||||
end
|
||||
end
|
||||
|
||||
def self.videos_enabled?
|
||||
system("ffmpeg -version > /dev/null") && system("mkvmerge --version > /dev/null")
|
||||
end
|
||||
|
||||
def initialize(file, **options)
|
||||
@file = file
|
||||
end
|
||||
|
||||
@@ -2,10 +2,6 @@ class MediaFile::Ugoira < MediaFile
|
||||
class Error < StandardError; end
|
||||
attr_reader :frame_data
|
||||
|
||||
def self.conversion_enabled?
|
||||
system("ffmpeg -version > /dev/null") && system("mkvmerge --version > /dev/null")
|
||||
end
|
||||
|
||||
def initialize(file, frame_data: {}, **options)
|
||||
super(file, **options)
|
||||
@frame_data = frame_data
|
||||
@@ -31,7 +27,7 @@ class MediaFile::Ugoira < MediaFile
|
||||
|
||||
# XXX should take width and height and resize image
|
||||
def convert
|
||||
raise NotImplementedError, "can't convert ugoira to webm: ffmpeg or mkvmerge not installed" unless self.class.conversion_enabled?
|
||||
raise NotImplementedError, "can't convert ugoira to webm: ffmpeg or mkvmerge not installed" unless self.class.videos_enabled?
|
||||
|
||||
Dir.mktmpdir("ugoira-#{md5}") do |tmpdir|
|
||||
output_file = Tempfile.new(["ugoira-conversion", ".webm"], binmode: true)
|
||||
|
||||
@@ -22,6 +22,8 @@ class MediaFile::Video < MediaFile
|
||||
private
|
||||
|
||||
def video
|
||||
raise NotImplementedError, "can't process videos: ffmpeg or mkvmerge not installed" unless self.class.videos_enabled?
|
||||
|
||||
FFMPEG::Movie.new(file.path)
|
||||
end
|
||||
|
||||
|
||||
@@ -22,14 +22,17 @@ class MediaFileTest < ActiveSupport::TestCase
|
||||
end
|
||||
|
||||
should "determine the correct dimensions for a webm file" do
|
||||
skip unless MediaFile.videos_enabled?
|
||||
assert_equal([512, 512], MediaFile.open("test/files/test-512x512.webm").dimensions)
|
||||
end
|
||||
|
||||
should "determine the correct dimensions for a mp4 file" do
|
||||
skip unless MediaFile.videos_enabled?
|
||||
assert_equal([300, 300], MediaFile.open("test/files/test-300x300.mp4").dimensions)
|
||||
end
|
||||
|
||||
should "determine the correct dimensions for a ugoira file" do
|
||||
skip unless MediaFile.videos_enabled?
|
||||
assert_equal([60, 60], MediaFile.open("test/files/valid_ugoira.zip").dimensions)
|
||||
end
|
||||
|
||||
@@ -42,6 +45,14 @@ class MediaFileTest < ActiveSupport::TestCase
|
||||
assert_equal([500, 335], mf.dimensions)
|
||||
assert_equal([500, 335], mf.dimensions)
|
||||
|
||||
mf = MediaFile.open("test/files/compressed.swf")
|
||||
assert_equal([607, 756], mf.dimensions)
|
||||
assert_equal([607, 756], mf.dimensions)
|
||||
end
|
||||
|
||||
should "work for a video if called twice" do
|
||||
skip unless MediaFile.videos_enabled?
|
||||
|
||||
mf = MediaFile.open("test/files/test-512x512.webm")
|
||||
assert_equal([512, 512], mf.dimensions)
|
||||
assert_equal([512, 512], mf.dimensions)
|
||||
@@ -49,10 +60,6 @@ class MediaFileTest < ActiveSupport::TestCase
|
||||
mf = MediaFile.open("test/files/valid_ugoira.zip")
|
||||
assert_equal([60, 60], mf.dimensions)
|
||||
assert_equal([60, 60], mf.dimensions)
|
||||
|
||||
mf = MediaFile.open("test/files/compressed.swf")
|
||||
assert_equal([607, 756], mf.dimensions)
|
||||
assert_equal([607, 756], mf.dimensions)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -106,6 +113,10 @@ class MediaFileTest < ActiveSupport::TestCase
|
||||
assert_equal([150, 101], MediaFile.open("test/files/test.jpg").preview(150, 150).dimensions)
|
||||
assert_equal([113, 150], MediaFile.open("test/files/test.png").preview(150, 150).dimensions)
|
||||
assert_equal([150, 150], MediaFile.open("test/files/test.gif").preview(150, 150).dimensions)
|
||||
end
|
||||
|
||||
should "generate a preview image for a video" do
|
||||
skip unless MediaFile.videos_enabled?
|
||||
assert_equal([150, 150], MediaFile.open("test/files/test-512x512.webm").preview(150, 150).dimensions)
|
||||
assert_equal([150, 150], MediaFile.open("test/files/test-300x300.mp4").preview(150, 150).dimensions)
|
||||
end
|
||||
@@ -120,6 +131,10 @@ class MediaFileTest < ActiveSupport::TestCase
|
||||
assert_equal([150, 150], MediaFile.open("test/files/test.jpg").crop(150, 150).dimensions)
|
||||
assert_equal([150, 150], MediaFile.open("test/files/test.png").crop(150, 150).dimensions)
|
||||
assert_equal([150, 150], MediaFile.open("test/files/test.gif").crop(150, 150).dimensions)
|
||||
end
|
||||
|
||||
should "generate a cropped preview image for a video" do
|
||||
skip unless MediaFile.videos_enabled?
|
||||
assert_equal([150, 150], MediaFile.open("test/files/test-512x512.webm").crop(150, 150).dimensions)
|
||||
assert_equal([150, 150], MediaFile.open("test/files/test-300x300.mp4").crop(150, 150).dimensions)
|
||||
end
|
||||
@@ -127,7 +142,7 @@ class MediaFileTest < ActiveSupport::TestCase
|
||||
|
||||
context "for a ugoira" do
|
||||
setup do
|
||||
skip unless MediaFile::Ugoira.conversion_enabled?
|
||||
skip unless MediaFile::Ugoira.videos_enabled?
|
||||
frame_data = JSON.parse(File.read("test/files/ugoira.json"))
|
||||
@ugoira = MediaFile.open("test/files/ugoira.zip", frame_data: frame_data)
|
||||
end
|
||||
|
||||
@@ -152,7 +152,7 @@ class UploadServiceTest < ActiveSupport::TestCase
|
||||
end
|
||||
|
||||
should "download the file" do
|
||||
skip unless MediaFile::Ugoira.conversion_enabled?
|
||||
skip unless MediaFile::Ugoira.videos_enabled?
|
||||
|
||||
@service = UploadService::Preprocessor.new(source: @source)
|
||||
begin
|
||||
@@ -548,7 +548,7 @@ class UploadServiceTest < ActiveSupport::TestCase
|
||||
|
||||
context "a post that is replaced by a ugoira" do
|
||||
should "save the frame data" do
|
||||
skip unless MediaFile::Ugoira.conversion_enabled?
|
||||
skip unless MediaFile::Ugoira.videos_enabled?
|
||||
begin
|
||||
as_user { @post.replace!(replacement_url: "http://www.pixiv.net/member_illust.php?mode=medium&illust_id=62247364") }
|
||||
@post.reload
|
||||
@@ -569,7 +569,7 @@ class UploadServiceTest < ActiveSupport::TestCase
|
||||
context "a post that is replaced to another file then replaced back to the original file" do
|
||||
should "not delete the original files" do
|
||||
begin
|
||||
skip unless MediaFile::Ugoira.conversion_enabled?
|
||||
skip unless MediaFile::Ugoira.videos_enabled?
|
||||
@post.unstub(:queue_delete_files)
|
||||
|
||||
# this is called thrice to delete the file for 62247364
|
||||
@@ -611,7 +611,7 @@ class UploadServiceTest < ActiveSupport::TestCase
|
||||
# swap the images between @post1 and @post2.
|
||||
begin
|
||||
as_user do
|
||||
skip unless MediaFile::Ugoira.conversion_enabled?
|
||||
skip unless MediaFile::Ugoira.videos_enabled?
|
||||
|
||||
@post1.replace!(replacement_url: "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=62247350")
|
||||
@post2.replace!(replacement_url: "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=62247364")
|
||||
|
||||
Reference in New Issue
Block a user