Browse Source

Add more tests for the video processing functions.

pull/45/head
Simon Conseil 11 years ago
parent
commit
2d27aabca9
  1. 10
      sigal/video.py
  2. 5
      tests/test_utils.py
  3. 24
      tests/test_video.py

10
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

5
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

24
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)

Loading…
Cancel
Save