Merge branch 'master' into pr/789

This commit is contained in:
Pascal Baljet 2021-12-20 13:52:02 +01:00
commit d3a0dde89a
20 changed files with 177 additions and 169 deletions

66
.github/workflows/test.yaml vendored Normal file
View file

@ -0,0 +1,66 @@
name: Test
on:
pull_request: ~
push:
branches:
- "master"
schedule:
- cron: "0 0 * * *"
jobs:
test:
name: "PHP ${{ matrix.php-version }} ${{ matrix.dependency-versions }} ${{ matrix.composer-stability }}"
runs-on: ubuntu-latest
env:
PHPUNIT_VERSION: ${{ matrix.phpunit-version }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04]
php-version: [8.1, 8.0, 7.4, 7.3, 7.2, 7.1, 7.0, 5.6, 5.5]
dependency-versions: [prefer-lowest, prefer-stable]
include:
- php-version: 5.5
phpunit-version: 4
steps:
- name: Checkout project
uses: actions/checkout@v2
- name: Install and configure PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
tools: composer:v2
coverage: none
- name: Install phpunit
if: ${{ matrix.phpunit-version }}
run: |
composer remove symfony/phpunit-bridge --dev
wget -O phpunit "https://phar.phpunit.de/phpunit-${{ matrix.phpunit-version }}.phar"
chmod +x phpunit
composer require "roave/security-advisories" dev-master --no-update
- name: Set composer stability
if: ${{ matrix.composer-stability }}
run: composer config minimum-stability ${{ matrix.composer-stability }}
- name: Install composer dependencies
uses: ramsey/composer-install@v1
with:
dependency-versions: ${{ matrix.dependency-versions }}
- name: Install ffmpeg
uses: FedericoCarboni/setup-ffmpeg@v1
- name: Run tests
run: |
if [ "$PHPUNIT_VERSION" ]; then
./phpunit --verbose
else
./vendor/bin/simple-phpunit --verbose
fi;

View file

@ -1,69 +0,0 @@
language: php
dist: trusty
branches:
only:
- master
- v1.x
cache:
directories:
- $HOME/.composer/cache
- $HOME/.cache
matrix:
include:
- php: 5.4
env:
- PHPUNIT_VERSION=4
- COMPOSER_FLAGS="--prefer-lowest"
- php: 5.4
env:
- PHPUNIT_VERSION=4
- php: 5.5
env:
- PHPUNIT_VERSION=4
- php: 5.6
- php: 7.0
- php: 7.1
- php: 7.2
- php: 7.3
- php: 7.4
- php: 8.0
dist: bionic
- php: nightly
env:
- COMPOSER_DEV_STABILITY=true
before_install:
- sudo add-apt-repository ppa:mc3man/${TRAVIS_DIST}-media -y
- sudo apt-get update -q
- composer self-update
- echo "$PHPUNIT_VERSION"
- |
if [ "$PHPUNIT_VERSION" ]; then
composer remove symfony/phpunit-bridge --dev
wget -O phpunit "https://phar.phpunit.de/phpunit-$PHPUNIT_VERSION.phar"
chmod +x phpunit
fi;
- |
if [ "$COMPOSER_FLAGS" == "--prefer-lowest" ]; then
composer require "roave/security-advisories" dev-master --no-update
fi;
- |
if [ "$COMPOSER_DEV_STABILITY" == "true" ]; then
composer config minimum-stability dev
fi;
install:
- sudo apt-get install -y ffmpeg
- composer update --prefer-dist $COMPOSER_FLAGS
script:
- |
if [ "$PHPUNIT_VERSION" ]; then
./phpunit --verbose
else
./vendor/bin/simple-phpunit --verbose
fi;

View file

@ -1,8 +1,6 @@
# php-ffmpeg # php-ffmpeg
[![Build Status](https://secure.travis-ci.org/PHP-FFMpeg/PHP-FFMpeg.png?branch=master)](http://travis-ci.org/PHP-FFMpeg/PHP-FFMpeg) [![Test](https://github.com/PHP-FFMpeg/PHP-FFMpeg/actions/workflows/test.yaml/badge.svg)](https://github.com/PHP-FFMpeg/PHP-FFMpeg/actions/workflows/test.yaml)
[![SensioLabsInsight](https://insight.sensiolabs.com/projects/607f3111-e2d7-44e8-8bcc-54dd64521983/big.png)](https://insight.sensiolabs.com/projects/607f3111-e2d7-44e8-8bcc-54dd64521983)
An Object-Oriented library to convert video/audio files with FFmpeg / AVConv. An Object-Oriented library to convert video/audio files with FFmpeg / AVConv.
@ -714,32 +712,6 @@ $ffprobe = FFMpeg\FFProbe::create();
$ffprobe->isValid('/path/to/file/to/check'); // returns bool $ffprobe->isValid('/path/to/file/to/check'); // returns bool
``` ```
## Using with Silex Microframework
The service provider is easy to set up:
```php
$app = new Silex\Application();
$app->register(new FFMpeg\FFMpegServiceProvider());
$video = $app['ffmpeg']->open('video.mpeg');
```
Available options are as follow:
```php
$app->register(new FFMpeg\FFMpegServiceProvider(), array(
'ffmpeg.configuration' => array(
'ffmpeg.threads' => 4,
'ffmpeg.timeout' => 300,
'ffmpeg.binaries' => '/opt/local/ffmpeg/bin/ffmpeg',
'ffprobe.timeout' => 30,
'ffprobe.binaries' => '/opt/local/ffmpeg/bin/ffprobe',
),
'ffmpeg.logger' => $logger,
));
```
## License ## License
This project is licensed under the [MIT license](http://opensource.org/licenses/MIT). This project is licensed under the [MIT license](http://opensource.org/licenses/MIT).

View file

@ -32,17 +32,16 @@
} }
], ],
"require": { "require": {
"php": ">=5.3.9", "php": ">=5.5.9",
"alchemy/binary-driver": "^1.5 || ~2.0.0 || ^5.0", "alchemy/binary-driver": "^1.5 || ~2.0.0 || ^5.0",
"doctrine/cache": "^1.0",
"evenement/evenement": "^3.0 || ^2.0 || ^1.0", "evenement/evenement": "^3.0 || ^2.0 || ^1.0",
"neutron/temporary-filesystem": "^2.1.1 || ^3.0" "neutron/temporary-filesystem": "^2.1.1 || ^3.0",
"symfony/cache": "^3.1 || ^4.0 || ^5.0 || ^6.0"
}, },
"suggest": { "suggest": {
"php-ffmpeg/extras": "A compilation of common audio & video drivers for PHP-FFMpeg" "php-ffmpeg/extras": "A compilation of common audio & video drivers for PHP-FFMpeg"
}, },
"require-dev": { "require-dev": {
"silex/silex": "~1.0",
"symfony/phpunit-bridge": "^5.0.4", "symfony/phpunit-bridge": "^5.0.4",
"symfony/process": "2.8 || 3.3" "symfony/process": "2.8 || 3.3"
}, },

View file

@ -12,6 +12,7 @@
> >
<php> <php>
<env name="SYMFONY_PHPUNIT_REMOVE_RETURN_TYPEHINT" value="true"/> <env name="SYMFONY_PHPUNIT_REMOVE_RETURN_TYPEHINT" value="true"/>
<env name="SYMFONY_DEPRECATIONS_HELPER" value="disabled" />
</php> </php>
<testsuites> <testsuites>

View file

@ -11,10 +11,13 @@
namespace FFMpeg; namespace FFMpeg;
use Doctrine\Common\Cache\ArrayCache;
use Silex\Application; use Silex\Application;
use Silex\ServiceProviderInterface; use Silex\ServiceProviderInterface;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
/**
* @deprecated
*/
class FFMpegServiceProvider implements ServiceProviderInterface class FFMpegServiceProvider implements ServiceProviderInterface
{ {
public function register(Application $app) public function register(Application $app)
@ -44,7 +47,7 @@ class FFMpegServiceProvider implements ServiceProviderInterface
}); });
$app['ffprobe.cache'] = $app->share(function () { $app['ffprobe.cache'] = $app->share(function () {
return new ArrayCache(); return new ArrayAdapter;
}); });
$app['ffmpeg.ffprobe'] = $app->share(function (Application $app) { $app['ffmpeg.ffprobe'] = $app->share(function (Application $app) {

View file

@ -13,27 +13,27 @@ namespace FFMpeg;
use Alchemy\BinaryDriver\ConfigurationInterface; use Alchemy\BinaryDriver\ConfigurationInterface;
use Alchemy\BinaryDriver\Exception\ExecutionFailureException; use Alchemy\BinaryDriver\Exception\ExecutionFailureException;
use Doctrine\Common\Cache\ArrayCache;
use Doctrine\Common\Cache\Cache;
use FFMpeg\Driver\FFProbeDriver; use FFMpeg\Driver\FFProbeDriver;
use FFMpeg\Exception\InvalidArgumentException;
use FFMpeg\Exception\RuntimeException;
use FFMpeg\FFProbe\DataMapping\Format; use FFMpeg\FFProbe\DataMapping\Format;
use FFMpeg\FFProbe\DataMapping\StreamCollection;
use FFMpeg\FFProbe\Mapper; use FFMpeg\FFProbe\Mapper;
use FFMpeg\FFProbe\MapperInterface; use FFMpeg\FFProbe\MapperInterface;
use FFMpeg\FFProbe\OptionsTester; use FFMpeg\FFProbe\OptionsTester;
use FFMpeg\FFProbe\OptionsTesterInterface; use FFMpeg\FFProbe\OptionsTesterInterface;
use FFMpeg\FFProbe\OutputParser; use FFMpeg\FFProbe\OutputParser;
use FFMpeg\FFProbe\OutputParserInterface; use FFMpeg\FFProbe\OutputParserInterface;
use FFMpeg\Exception\InvalidArgumentException; use Psr\Cache\CacheItemPoolInterface;
use FFMpeg\Exception\RuntimeException;
use FFMpeg\FFProbe\DataMapping\StreamCollection;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
class FFProbe class FFProbe
{ {
const TYPE_STREAMS = 'streams'; const TYPE_STREAMS = 'streams';
const TYPE_FORMAT = 'format'; const TYPE_FORMAT = 'format';
/** @var Cache */ /** @var CacheItemPoolInterface */
private $cache; private $cache;
/** @var OptionsTesterInterface */ /** @var OptionsTesterInterface */
private $optionsTester; private $optionsTester;
@ -44,7 +44,7 @@ class FFProbe
/** @var MapperInterface */ /** @var MapperInterface */
private $mapper; private $mapper;
public function __construct(FFProbeDriver $ffprobe, Cache $cache) public function __construct(FFProbeDriver $ffprobe, CacheItemPoolInterface $cache)
{ {
$this->ffprobe = $ffprobe; $this->ffprobe = $ffprobe;
$this->optionsTester = new OptionsTester($ffprobe, $cache); $this->optionsTester = new OptionsTester($ffprobe, $cache);
@ -114,11 +114,11 @@ class FFProbe
} }
/** /**
* @param Cache $cache * @param CacheItemPoolInterface $cache
* *
* @return FFProbe * @return FFProbe
*/ */
public function setCache(Cache $cache) public function setCache(CacheItemPoolInterface $cache)
{ {
$this->cache = $cache; $this->cache = $cache;
@ -213,14 +213,14 @@ class FFProbe
* *
* @param array|ConfigurationInterface $configuration * @param array|ConfigurationInterface $configuration
* @param LoggerInterface $logger * @param LoggerInterface $logger
* @param Cache $cache * @param CacheItemPoolInterface $cache
* *
* @return FFProbe * @return FFProbe
*/ */
public static function create($configuration = array(), LoggerInterface $logger = null, Cache $cache = null) public static function create($configuration = array(), LoggerInterface $logger = null, CacheItemPoolInterface $cache = null)
{ {
if (null === $cache) { if (null === $cache) {
$cache = new ArrayCache(); $cache = new ArrayAdapter();
} }
return new static(FFProbeDriver::create($configuration, $logger), $cache); return new static(FFProbeDriver::create($configuration, $logger), $cache);
@ -228,10 +228,10 @@ class FFProbe
private function probe($pathfile, $command, $type, $allowJson = true) private function probe($pathfile, $command, $type, $allowJson = true)
{ {
$id = sprintf('%s-%s', $command, $pathfile); $id = md5(sprintf('%s-%s', $command, $pathfile));
if ($this->cache->contains($id)) { if ($this->cache->hasItem($id)) {
return $this->cache->fetch($id); return $this->cache->getItem($id)->get();
} }
if (!$this->optionsTester->has($command)) { if (!$this->optionsTester->has($command)) {
@ -276,7 +276,9 @@ class FFProbe
$ret = $this->mapper->map($type, $data); $ret = $this->mapper->map($type, $data);
$this->cache->save($id, $ret); $cacheItem = $this->cache->getItem($id);
$cacheItem->set($ret);
$this->cache->save($cacheItem);
return $ret; return $ret;
} }

View file

@ -86,6 +86,7 @@ abstract class AbstractData implements \Countable
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
#[\ReturnTypeWillChange]
public function count() public function count()
{ {
return count($this->properties); return count($this->properties);

View file

@ -74,6 +74,7 @@ class StreamCollection implements \Countable, \IteratorAggregate
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
#[\ReturnTypeWillChange]
public function count() public function count()
{ {
return count($this->streams); return count($this->streams);
@ -92,6 +93,7 @@ class StreamCollection implements \Countable, \IteratorAggregate
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
#[\ReturnTypeWillChange]
public function getIterator() public function getIterator()
{ {
return new \ArrayIterator($this->streams); return new \ArrayIterator($this->streams);

View file

@ -12,18 +12,18 @@
namespace FFMpeg\FFProbe; namespace FFMpeg\FFProbe;
use Alchemy\BinaryDriver\Exception\ExecutionFailureException; use Alchemy\BinaryDriver\Exception\ExecutionFailureException;
use Doctrine\Common\Cache\Cache;
use FFMpeg\Driver\FFProbeDriver; use FFMpeg\Driver\FFProbeDriver;
use FFMpeg\Exception\RuntimeException; use FFMpeg\Exception\RuntimeException;
use Psr\Cache\CacheItemPoolInterface;
class OptionsTester implements OptionsTesterInterface class OptionsTester implements OptionsTesterInterface
{ {
/** @var FFProbeDriver */ /** @var FFProbeDriver */
private $ffprobe; private $ffprobe;
/** @var Cache */ /** @var CacheItemPoolInterface */
private $cache; private $cache;
public function __construct(FFProbeDriver $ffprobe, Cache $cache) public function __construct(FFProbeDriver $ffprobe, CacheItemPoolInterface $cache)
{ {
$this->ffprobe = $ffprobe; $this->ffprobe = $ffprobe;
$this->cache = $cache; $this->cache = $cache;
@ -34,17 +34,19 @@ class OptionsTester implements OptionsTesterInterface
*/ */
public function has($name) public function has($name)
{ {
$id = sprintf('option-%s', $name); $id = md5(sprintf('option-%s', $name));
if ($this->cache->contains($id)) { if ($this->cache->hasItem($id)) {
return $this->cache->fetch($id); return $this->cache->getItem($id)->get();
} }
$output = $this->retrieveHelpOutput(); $output = $this->retrieveHelpOutput();
$ret = (bool) preg_match('/^'.$name.'/m', $output); $ret = (bool) preg_match('/^'.$name.'/m', $output);
$this->cache->save($id, $ret); $cacheItem = $this->cache->getItem($id);
$cacheItem->set($ret);
$this->cache->save($cacheItem);
return $ret; return $ret;
} }
@ -53,8 +55,8 @@ class OptionsTester implements OptionsTesterInterface
{ {
$id = 'help'; $id = 'help';
if ($this->cache->contains($id)) { if ($this->cache->hasItem($id)) {
return $this->cache->fetch($id); return $this->cache->getItem($id)->get();
} }
try { try {
@ -63,7 +65,9 @@ class OptionsTester implements OptionsTesterInterface
throw new RuntimeException('Your FFProbe version is too old and does not support `-help` option, please upgrade.', $e->getCode(), $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); $cacheItem = $this->cache->getItem($id);
$cacheItem->set($output);
$this->cache->save($cacheItem);
return $output; return $output;
} }

View file

@ -39,10 +39,10 @@ class AddMetadataFilter implements AudioFilterInterface
$meta = $this->metaArr; $meta = $this->metaArr;
if (is_null($meta)) { if (is_null($meta)) {
return ['-map_metadata', '-1', '-vn']; return array('-map_metadata', '-1', '-vn');
} }
$metadata = []; $metadata = array();
if (array_key_exists("artwork", $meta)) { if (array_key_exists("artwork", $meta)) {
array_push($metadata, "-i", $meta['artwork'], "-map", "0", "-map", "1"); array_push($metadata, "-i", $meta['artwork'], "-map", "0", "-map", "1");

View file

@ -32,6 +32,7 @@ class FiltersCollection implements \Countable, \IteratorAggregate
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
#[\ReturnTypeWillChange]
public function count() public function count()
{ {
if (0 === count($this->filters)) { if (0 === count($this->filters)) {
@ -44,6 +45,7 @@ class FiltersCollection implements \Countable, \IteratorAggregate
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
#[\ReturnTypeWillChange]
public function getIterator() public function getIterator()
{ {
if (null === $this->sorted) { if (null === $this->sorted) {

View file

@ -38,7 +38,7 @@ class ExtractMultipleFramesFilter implements VideoFilterInterface
private $frameFileType = 'jpg'; private $frameFileType = 'jpg';
/** @var array */ /** @var array */
private static $supportedFrameFileTypes = ['jpg', 'jpeg', 'png']; private static $supportedFrameFileTypes = array('jpg', 'jpeg', 'png');
public function __construct($frameRate = self::FRAMERATE_EVERY_SEC, $destinationFolder = __DIR__, $priority = 0) public function __construct($frameRate = self::FRAMERATE_EVERY_SEC, $destinationFolder = __DIR__, $priority = 0)
{ {

View file

@ -11,10 +11,10 @@ class AudioConcatenationTest extends FunctionalTestCase
{ {
$ffmpeg = $this->getFFMpeg(); $ffmpeg = $this->getFFMpeg();
$files = [ $files = array(
realpath(__DIR__ . '/../files/Jahzzar_-_05_-_Siesta.mp3'), realpath(__DIR__ . '/../files/Jahzzar_-_05_-_Siesta.mp3'),
realpath(__DIR__ . '/../files/02_-_Favorite_Secrets.mp3'), realpath(__DIR__ . '/../files/02_-_Favorite_Secrets.mp3'),
]; );
$audio = $ffmpeg->open(reset($files)); $audio = $ffmpeg->open(reset($files));

View file

@ -7,6 +7,13 @@ use Silex\Application;
class FFMpegServiceProviderTest extends TestCase class FFMpegServiceProviderTest extends TestCase
{ {
protected function setUp()
{
if (!class_exists('\Application\Silex')) {
$this->markTestSkipped('You MUST have silex/silex installed.');
}
}
public function testWithConfig() public function testWithConfig()
{ {
$app = new Application(); $app = new Application();

View file

@ -2,8 +2,9 @@
namespace Tests\FFMpeg\Unit\FFProbe; namespace Tests\FFMpeg\Unit\FFProbe;
use Tests\FFMpeg\Unit\TestCase;
use FFMpeg\FFProbe\OptionsTester; use FFMpeg\FFProbe\OptionsTester;
use Symfony\Component\Cache\CacheItem;
use Tests\FFMpeg\Unit\TestCase;
class OptionsTesterTest extends TestCase class OptionsTesterTest extends TestCase
{ {
@ -36,11 +37,12 @@ class OptionsTesterTest extends TestCase
{ {
$cache = $this->getCacheMock(); $cache = $this->getCacheMock();
$cache->expects($this->never()) $cache->expects($this->exactly(2))
->method('fetch'); ->method('getItem')
->will($this->returnValue(new CacheItem));
$cache->expects($this->exactly(2)) $cache->expects($this->exactly(2))
->method('contains') ->method('hasItem')
->will($this->returnValue(false)); ->will($this->returnValue(false));
$cache->expects($this->exactly(2)) $cache->expects($this->exactly(2))
@ -73,16 +75,22 @@ class OptionsTesterTest extends TestCase
{ {
$cache = $this->getCacheMock(); $cache = $this->getCacheMock();
$cache->expects($this->once()) $cacheItem = new CacheItem;
->method('fetch') $cacheItem->set($data);
->will($this->returnValue($data));
$cache->expects($this->exactly(2)) $cache->expects($this->exactly(2))
->method('contains') ->method('getItem')
->willReturnOnConsecutiveCalls(
$this->returnValue($cacheItem),
$this->returnValue(new CacheItem)
);
$cache->expects($this->exactly(2))
->method('hasItem')
->willReturnOnConsecutiveCalls( ->willReturnOnConsecutiveCalls(
$this->returnValue(false), $this->returnValue(false),
$this->returnValue(true)); $this->returnValue(true)
);
$cache->expects($this->once()) $cache->expects($this->once())
->method('save'); ->method('save');
@ -101,14 +109,17 @@ class OptionsTesterTest extends TestCase
{ {
$cache = $this->getCacheMock(); $cache = $this->getCacheMock();
$cache->expects($this->once()) $cacheItem = new CacheItem();
->method('fetch') $cacheItem->set($isPresent);
->with('option-' . $optionName)
->will($this->returnValue($isPresent));
$cache->expects($this->once()) $cache->expects($this->once())
->method('contains') ->method('getItem')
->with('option-' . $optionName) ->with(md5('option-' . $optionName))
->will($this->returnValue($cacheItem));
$cache->expects($this->once())
->method('hasItem')
->with(md5('option-' . $optionName))
->will($this->returnValue(true)); ->will($this->returnValue(true));
$ffprobe = $this->getFFProbeDriverMock(); $ffprobe = $this->getFFProbeDriverMock();

View file

@ -2,10 +2,11 @@
namespace Tests\FFMpeg\Unit; namespace Tests\FFMpeg\Unit;
use FFMpeg\FFProbe;
use Symfony\Component\Process\ExecutableFinder;
use Alchemy\BinaryDriver\ConfigurationInterface;
use Alchemy\BinaryDriver\Configuration; use Alchemy\BinaryDriver\Configuration;
use Alchemy\BinaryDriver\ConfigurationInterface;
use FFMpeg\FFProbe;
use Symfony\Component\Cache\CacheItem;
use Symfony\Component\Process\ExecutableFinder;
class FFProbeTest extends TestCase class FFProbeTest extends TestCase
{ {
@ -100,13 +101,14 @@ class FFProbeTest extends TestCase
$cache = $this->getCacheMock(); $cache = $this->getCacheMock();
$cache->expects($this->once()) $cache->expects($this->once())
->method('contains') ->method('hasItem')
->will($this->returnValue(false)); ->will($this->returnValue(false));
$cache->expects($this->never()) $cache->expects($this->once())
->method('fetch'); ->method('getItem')
->will($this->returnValue(new CacheItem));
$cache->expects($this->once()) $cache->expects($this->once())
->method('save') ->method('save')
->with($this->anything(), $output); ->with($this->anything());
$driver = $this->getFFProbeDriverMock(); $driver = $this->getFFProbeDriverMock();
$driver->expects($this->once()) $driver->expects($this->once())
@ -160,10 +162,11 @@ class FFProbeTest extends TestCase
$cache = $this->getCacheMock(); $cache = $this->getCacheMock();
$cache->expects($this->exactly(2)) $cache->expects($this->exactly(2))
->method('contains') ->method('hasItem')
->will($this->returnValue(false)); ->will($this->returnValue(false));
$cache->expects($this->never()) $cache->expects($this->once())
->method('fetch'); ->method('getItem')
->will($this->returnValue(new CacheItem));
$driver = $this->getFFProbeDriverMock(); $driver = $this->getFFProbeDriverMock();
$driver->expects($this->exactly(2)) $driver->expects($this->exactly(2))
@ -205,13 +208,16 @@ class FFProbeTest extends TestCase
$tester = $this->getFFProbeOptionsTesterMock(); $tester = $this->getFFProbeOptionsTesterMock();
$cacheItem = new CacheItem;
$cacheItem->set($output);
$cache = $this->getCacheMock(); $cache = $this->getCacheMock();
$cache->expects($this->once()) $cache->expects($this->once())
->method('contains') ->method('hasItem')
->will($this->returnValue(true)); ->will($this->returnValue(true));
$cache->expects($this->once()) $cache->expects($this->once())
->method('fetch') ->method('getItem')
->will($this->returnValue($output)); ->will($this->returnValue($cacheItem));
$cache->expects($this->never()) $cache->expects($this->never())
->method('save'); ->method('save');

View file

@ -695,12 +695,13 @@ class VideoTest extends AbstractStreamableTestCase
->method('getConfiguration') ->method('getConfiguration')
->will($this->returnValue($configuration)); ->will($this->returnValue($configuration));
$self = $this;
$driver->expects($this->exactly(1)) $driver->expects($this->exactly(1))
->method('command') ->method('command')
->with($this->isType('array'), false, $this->anything()) ->with($this->isType('array'), false, $this->anything())
->will($this->returnCallback(function ($commands, $errors, $listeners) { ->will($this->returnCallback(function ($commands, $errors, $listeners) use ($self) {
var_dump($commands); $self->assertTrue(!in_array('-b:v', $commands));
$this->assertTrue(!in_array('-b:v', $commands));
})); }));
$video = new Video(__FILE__, $driver, $ffprobe); $video = new Video(__FILE__, $driver, $ffprobe);

View file

@ -52,7 +52,7 @@ class WaveformTest extends AbstractMediaTestCase
->method('command') ->method('command')
->with($commands); ->with($commands);
$waveform = new Waveform($this->getAudioMock(__FILE__), $driver, $ffprobe, 640, 120, ['#FFFFFF']); $waveform = new Waveform($this->getAudioMock(__FILE__), $driver, $ffprobe, 640, 120, array('#FFFFFF'));
$this->assertSame($waveform, $waveform->save($pathfile)); $this->assertSame($waveform, $waveform->save($pathfile));
} }

View file

@ -13,7 +13,7 @@ class TestCase extends BaseTestCase
public function getCacheMock() public function getCacheMock()
{ {
return $this->getMockBuilder('Doctrine\Common\Cache\Cache')->getMock(); return $this->getMockBuilder('Psr\Cache\CacheItemPoolInterface')->getMock();
} }
public function getTimeCodeMock() public function getTimeCodeMock()