Make a test for FFmpegProcess

This commit is contained in:
Mathias Koehler 2012-01-18 22:11:52 +01:00
parent 4d905c1c27
commit 6b7a3ee97d
3 changed files with 34 additions and 0 deletions

2
setup.cfg Normal file
View file

@ -0,0 +1,2 @@
[upload_docs]
upload-dir = docs/_build/html

View file

@ -18,6 +18,7 @@ resulting command.
""" """
import sys
from setuptools import setup from setuptools import setup
@ -32,6 +33,8 @@ setup(
keywords='Video Convert Ffmpeg', keywords='Video Convert Ffmpeg',
long_description=__doc__, long_description=__doc__,
license="BSD", license="BSD",
test_suite='test',
tests_require='mock>=0.7.2',
classifiers=[ classifiers=[
'Development Status :: 2 - Pre-Alpha', 'Development Status :: 2 - Pre-Alpha',
'Intended Audience :: Developers', 'Intended Audience :: Developers',

29
test.py
View file

@ -2,6 +2,8 @@
import unittest import unittest
from mock import patch
from ffmpegwrapper import FFmpeg, Input, Output, \ from ffmpegwrapper import FFmpeg, Input, Output, \
VideoCodec, AudioCodec, VideoFilter VideoCodec, AudioCodec, VideoFilter
from ffmpegwrapper.options import Option from ffmpegwrapper.options import Option
@ -9,6 +11,27 @@ from ffmpegwrapper.options import Option
class FFmpegTestCase(unittest.TestCase): class FFmpegTestCase(unittest.TestCase):
def setUp(self):
patcher = patch('ffmpegwrapper.ffmpeg.Popen')
popen = patcher.start()
self.instance = popen.return_value
poll_values = [None] * 80
def poll(*args):
if len(poll_values) < 1:
return 0
poll_values.pop(0)
self.instance.poll.side_effect = poll
read_value = list('this is a line\nthis too\n')
def read(*args):
if len(read_value) > 0:
return read_value.pop(0).encode('utf-8')
return ''.encode('utf-8')
self.instance.stdout.read.side_effect = read
self.addCleanup(patcher.stop)
def test_input_interface(self): def test_input_interface(self):
input = Input('/old') input = Input('/old')
self.assertEqual(list(input), ['-i', '/old']) self.assertEqual(list(input), ['-i', '/old'])
@ -58,6 +81,12 @@ class FFmpegTestCase(unittest.TestCase):
ffmpeg = FFmpeg('ffmpeg', input, output) ffmpeg = FFmpeg('ffmpeg', input, output)
self.assertEqual(list(ffmpeg), ['ffmpeg', '-i', '/old', '/new']) self.assertEqual(list(ffmpeg), ['ffmpeg', '-i', '/old', '/new'])
with ffmpeg as process:
result = list(process.readlines())
self.assertEqual(result[0], 'this is a line')
self.assertEqual(result[1], 'this too')
self.assertEqual(len(result), 2)
class VideoFilterTestCase(unittest.TestCase): class VideoFilterTestCase(unittest.TestCase):