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