Add more tests for the video processing functions.
This commit is contained in:
@@ -148,8 +148,9 @@ def generate_thumbnail(source, outname, box, delay, fit=True, options=None):
|
||||
def process_video(filepath, outpath, settings):
|
||||
"""Process a video: resize, create thumbnail."""
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
filename = os.path.split(filepath)[1]
|
||||
(basename, ext) = splitext(filename)
|
||||
basename, ext = splitext(filename)
|
||||
|
||||
try:
|
||||
if settings['use_orig'] and is_valid_html5_video(ext):
|
||||
@@ -160,12 +161,13 @@ def process_video(filepath, outpath, settings):
|
||||
video_format = settings['video_format']
|
||||
|
||||
if video_format not in valid_formats:
|
||||
raise ValueError('Invalid video_format. Please choose one of: '
|
||||
+ str(valid_formats))
|
||||
logger.error('Invalid video_format. Please choose one of: %s',
|
||||
valid_formats)
|
||||
raise ValueError
|
||||
|
||||
outname = os.path.join(outpath, basename + '.' + video_format)
|
||||
generate_video(filepath, outname, settings,
|
||||
options=settings[video_format + '_options'])
|
||||
options=settings.get(video_format + '_options'))
|
||||
except Exception:
|
||||
return Status.FAILURE
|
||||
|
||||
|
||||
@@ -78,3 +78,8 @@ def test_call_subprocess():
|
||||
|
||||
# returncode, stdout, stderr = utils.call_subprocess(['/usr/bin/false'])
|
||||
# assert returncode == 1
|
||||
|
||||
|
||||
def test_is_valid_html5_video():
|
||||
assert utils.is_valid_html5_video('.webm') is True
|
||||
assert utils.is_valid_html5_video('.mpeg') is False
|
||||
|
||||
@@ -5,8 +5,8 @@ from __future__ import division
|
||||
import os
|
||||
import pytest
|
||||
|
||||
from sigal.video import video_size, generate_video
|
||||
from sigal.settings import create_settings
|
||||
from sigal.video import video_size, generate_video, process_video
|
||||
from sigal.settings import create_settings, Status
|
||||
|
||||
CURRENT_DIR = os.path.dirname(__file__)
|
||||
TEST_VIDEO = 'stallman software-freedom-day-low.ogv'
|
||||
@@ -20,6 +20,22 @@ def test_video_size():
|
||||
assert size_src == (0, 0)
|
||||
|
||||
|
||||
def test_process_video(tmpdir):
|
||||
base, ext = os.path.splitext(TEST_VIDEO)
|
||||
|
||||
settings = create_settings(video_format='ogv', use_orig=True,
|
||||
orig_link=True)
|
||||
process_video(SRCFILE, str(tmpdir), settings)
|
||||
dstfile = str(tmpdir.join(base + '.ogv'))
|
||||
assert os.path.realpath(dstfile) == SRCFILE
|
||||
|
||||
settings = create_settings(video_format='mjpg')
|
||||
assert process_video(SRCFILE, str(tmpdir), settings) == Status.FAILURE
|
||||
|
||||
settings = create_settings(thumb_video_delay=-1)
|
||||
assert process_video(SRCFILE, str(tmpdir), settings) == Status.FAILURE
|
||||
|
||||
|
||||
@pytest.mark.parametrize("fmt", ['webm', 'mp4'])
|
||||
def test_generate_video_fit_height(tmpdir, fmt):
|
||||
"""largest fitting dimension is height"""
|
||||
@@ -56,7 +72,7 @@ def test_generate_video_fit_width(tmpdir, fmt):
|
||||
assert abs(size_dst[0]/size_dst[1] - size_src[0]/size_src[1]) < 2e-2
|
||||
|
||||
|
||||
@pytest.mark.parametrize("fmt", ['webm', 'mp4'])
|
||||
@pytest.mark.parametrize("fmt", ['webm', 'mp4', 'ogv'])
|
||||
def test_generate_video_dont_enlarge(tmpdir, fmt):
|
||||
"""video dimensions should not be enlarged"""
|
||||
|
||||
@@ -64,7 +80,7 @@ def test_generate_video_dont_enlarge(tmpdir, fmt):
|
||||
dstfile = str(tmpdir.join(base + '.' + fmt))
|
||||
settings = create_settings(video_size=(1000, 1000), video_format=fmt)
|
||||
generate_video(SRCFILE, dstfile, settings,
|
||||
options=settings[fmt + '_options'])
|
||||
options=settings.get(fmt + '_options'))
|
||||
size_src = video_size(SRCFILE)
|
||||
size_dst = video_size(dstfile)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user