From 3bdb341abb0b91cdf1912bc76a451ff5772b82dc Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Wed, 3 Jul 2013 20:53:12 +0200 Subject: [PATCH] Fix #44 : throw an exception in case of older ffprobe --- src/FFMpeg/FFProbe/OptionsTester.php | 8 +++++++- .../Tests/FFProbe/OptionsTesterTest.php | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/FFMpeg/FFProbe/OptionsTester.php b/src/FFMpeg/FFProbe/OptionsTester.php index f6feb7a..be45a76 100644 --- a/src/FFMpeg/FFProbe/OptionsTester.php +++ b/src/FFMpeg/FFProbe/OptionsTester.php @@ -11,8 +11,10 @@ namespace FFMpeg\FFProbe; +use Alchemy\BinaryDriver\Exception\ExecutionFailureException; use Doctrine\Common\Cache\Cache; use FFMpeg\Driver\FFProbeDriver; +use FFMpeg\Exception\RuntimeException; class OptionsTester implements OptionsTesterInterface { @@ -55,7 +57,11 @@ class OptionsTester implements OptionsTesterInterface return $this->cache->fetch($id); } - $output = $this->ffprobe->command(array('-help', '-loglevel', 'quiet')); + try { + $output = $this->ffprobe->command(array('-help', '-loglevel', 'quiet')); + } catch (ExecutionFailureException $e) { + throw new RuntimeException('Your FFProbe version is too old and does not support `-help` option, please upgrade.', $e->getCode(), $e); + } $this->cache->save($id, $output); diff --git a/tests/FFMpeg/Tests/FFProbe/OptionsTesterTest.php b/tests/FFMpeg/Tests/FFProbe/OptionsTesterTest.php index b743a2c..f1f48b6 100644 --- a/tests/FFMpeg/Tests/FFProbe/OptionsTesterTest.php +++ b/tests/FFMpeg/Tests/FFProbe/OptionsTesterTest.php @@ -2,11 +2,30 @@ namespace FFMpeg\Tests\FFProbe; +use Alchemy\BinaryDriver\Exception\ExecutionFailureException; use FFMpeg\Tests\TestCase; use FFMpeg\FFProbe\OptionsTester; class OptionsTesterTest extends TestCase { + /** + * @expectedException FFMpeg\Exception\RuntimeException + * @expectedExceptionMessage Your FFProbe version is too old and does not support `-help` option, please upgrade. + */ + public function testHasOptionWithOldFFProbe() + { + $cache = $this->getCacheMock(); + + $ffprobe = $this->getFFProbeDriverMock(); + $ffprobe->expects($this->once()) + ->method('command') + ->with(array('-help', '-loglevel', 'quiet')) + ->will($this->throwException(new ExecutionFailureException('Failed to execute'))); + + $tester = new OptionsTester($ffprobe, $cache); + $tester->has('-print_format'); + } + /** * @dataProvider provideOptions */