From 2d27aabca92fcb0b725a703a5720bd5d7be9b1db Mon Sep 17 00:00:00 2001 From: Simon Conseil Date: Mon, 31 Aug 2015 00:26:20 +0200 Subject: [PATCH] Add more tests for the video processing functions. --- sigal/video.py | 10 ++++++---- tests/test_utils.py | 5 +++++ tests/test_video.py | 24 ++++++++++++++++++++---- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/sigal/video.py b/sigal/video.py index 7bf762b..41cc360 100644 --- a/sigal/video.py +++ b/sigal/video.py @@ -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 diff --git a/tests/test_utils.py b/tests/test_utils.py index dcacc7e..b87e7cc 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -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 diff --git a/tests/test_video.py b/tests/test_video.py index 026f4c7..02efcf0 100644 --- a/tests/test_video.py +++ b/tests/test_video.py @@ -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)