[COMPOSER] Add new php-ffmpeg package
This commit is contained in:
208
vendor/alchemy/binary-driver/tests/Alchemy/Tests/BinaryDriver/ProcessRunnerTest.php
vendored
Normal file
208
vendor/alchemy/binary-driver/tests/Alchemy/Tests/BinaryDriver/ProcessRunnerTest.php
vendored
Normal file
@@ -0,0 +1,208 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Alchemy\BinaryDriver.
|
||||
*
|
||||
* (c) Alchemy <info@alchemy.fr>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Alchemy\Tests\BinaryDriver;
|
||||
|
||||
use Alchemy\BinaryDriver\ProcessRunner;
|
||||
use Alchemy\BinaryDriver\BinaryDriverTestCase;
|
||||
use Alchemy\BinaryDriver\Exception\ExecutionFailureException;
|
||||
use Alchemy\BinaryDriver\Listeners\ListenerInterface;
|
||||
use Evenement\EventEmitter;
|
||||
use Symfony\Component\Process\Exception\RuntimeException as ProcessRuntimeException;
|
||||
|
||||
class ProcessRunnerTest extends BinaryDriverTestCase
|
||||
{
|
||||
public function getProcessRunner($logger)
|
||||
{
|
||||
return new ProcessRunner($logger, 'test-runner');
|
||||
}
|
||||
|
||||
public function testRunSuccessFullProcess()
|
||||
{
|
||||
$logger = $this->createLoggerMock();
|
||||
$runner = $this->getProcessRunner($logger);
|
||||
|
||||
$process = $this->createProcessMock(1, true, '--helloworld--', "Kikoo Romain", null, true);
|
||||
|
||||
$logger
|
||||
->expects($this->never())
|
||||
->method('error');
|
||||
$logger
|
||||
->expects($this->exactly(2))
|
||||
->method('info');
|
||||
|
||||
$this->assertEquals('Kikoo Romain', $runner->run($process, new \SplObjectStorage(), false));
|
||||
}
|
||||
|
||||
public function testRunSuccessFullProcessBypassingErrors()
|
||||
{
|
||||
$logger = $this->createLoggerMock();
|
||||
$runner = $this->getProcessRunner($logger);
|
||||
|
||||
$process = $this->createProcessMock(1, true, '--helloworld--', "Kikoo Romain", null, true);
|
||||
|
||||
$logger
|
||||
->expects($this->never())
|
||||
->method('error');
|
||||
$logger
|
||||
->expects($this->exactly(2))
|
||||
->method('info');
|
||||
|
||||
$this->assertEquals('Kikoo Romain', $runner->run($process, new \SplObjectStorage(), true));
|
||||
}
|
||||
|
||||
public function testRunFailingProcess()
|
||||
{
|
||||
$logger = $this->createLoggerMock();
|
||||
$runner = $this->getProcessRunner($logger);
|
||||
|
||||
$process = $this->createProcessMock(1, false, '--helloworld--', null, null, true);
|
||||
|
||||
$logger
|
||||
->expects($this->once())
|
||||
->method('error');
|
||||
$logger
|
||||
->expects($this->once())
|
||||
->method('info');
|
||||
|
||||
try {
|
||||
$runner->run($process, new \SplObjectStorage(), false);
|
||||
$this->fail('An exception should have been raised');
|
||||
} catch (ExecutionFailureException $e) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public function testRunFailingProcessWithException()
|
||||
{
|
||||
$logger = $this->createLoggerMock();
|
||||
$runner = $this->getProcessRunner($logger);
|
||||
|
||||
$exception = new ProcessRuntimeException('Process Failed');
|
||||
$process = $this->getMockBuilder('Symfony\Component\Process\Process')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$process->expects($this->once())
|
||||
->method('run')
|
||||
->will($this->throwException($exception));
|
||||
|
||||
$logger
|
||||
->expects($this->once())
|
||||
->method('error');
|
||||
$logger
|
||||
->expects($this->once())
|
||||
->method('info');
|
||||
|
||||
try {
|
||||
$runner->run($process, new \SplObjectStorage(), false);
|
||||
$this->fail('An exception should have been raised');
|
||||
} catch (ExecutionFailureException $e) {
|
||||
$this->assertEquals($exception, $e->getPrevious());
|
||||
}
|
||||
}
|
||||
|
||||
public function testRunfailingProcessBypassingErrors()
|
||||
{
|
||||
$logger = $this->createLoggerMock();
|
||||
$runner = $this->getProcessRunner($logger);
|
||||
|
||||
$process = $this->createProcessMock(1, false, '--helloworld--', 'Hello output', null, true);
|
||||
|
||||
$logger
|
||||
->expects($this->once())
|
||||
->method('error');
|
||||
$logger
|
||||
->expects($this->once())
|
||||
->method('info');
|
||||
|
||||
$this->assertNull($runner->run($process, new \SplObjectStorage(), true));
|
||||
}
|
||||
|
||||
public function testRunFailingProcessWithExceptionBypassingErrors()
|
||||
{
|
||||
$logger = $this->createLoggerMock();
|
||||
$runner = $this->getProcessRunner($logger);
|
||||
|
||||
$exception = new ProcessRuntimeException('Process Failed');
|
||||
$process = $this->getMockBuilder('Symfony\Component\Process\Process')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$process->expects($this->once())
|
||||
->method('run')
|
||||
->will($this->throwException($exception));
|
||||
|
||||
$logger
|
||||
->expects($this->once())
|
||||
->method('error');
|
||||
$logger
|
||||
->expects($this->once())
|
||||
->method('info');
|
||||
|
||||
$this->assertNull($runner->run($process, new \SplObjectStorage(), true));
|
||||
}
|
||||
|
||||
public function testRunSuccessFullProcessWithHandlers()
|
||||
{
|
||||
$logger = $this->createLoggerMock();
|
||||
$runner = $this->getProcessRunner($logger);
|
||||
|
||||
$capturedCallback = null;
|
||||
|
||||
$process = $this->createProcessMock(1, true, '--helloworld--', "Kikoo Romain", null, true);
|
||||
$process->expects($this->once())
|
||||
->method('run')
|
||||
->with($this->isInstanceOf('Closure'))
|
||||
->will($this->returnCallback(function ($callback) use (&$capturedCallback) {
|
||||
$capturedCallback = $callback;
|
||||
}));
|
||||
|
||||
$logger
|
||||
->expects($this->never())
|
||||
->method('error');
|
||||
$logger
|
||||
->expects($this->exactly(2))
|
||||
->method('info');
|
||||
|
||||
$listener = new TestListener();
|
||||
$storage = new \SplObjectStorage();
|
||||
$storage->attach($listener);
|
||||
|
||||
$capturedType = $capturedData = null;
|
||||
|
||||
$listener->on('received', function ($type, $data) use (&$capturedType, &$capturedData) {
|
||||
$capturedData = $data;
|
||||
$capturedType = $type;
|
||||
});
|
||||
|
||||
$this->assertEquals('Kikoo Romain', $runner->run($process, $storage, false));
|
||||
|
||||
$type = 'err';
|
||||
$data = 'data';
|
||||
|
||||
$capturedCallback($type, $data);
|
||||
|
||||
$this->assertEquals($data, $capturedData);
|
||||
$this->assertEquals($type, $capturedType);
|
||||
}
|
||||
}
|
||||
|
||||
class TestListener extends EventEmitter implements ListenerInterface
|
||||
{
|
||||
public function handle($type, $data)
|
||||
{
|
||||
return $this->emit('received', array($type, $data));
|
||||
}
|
||||
|
||||
public function forwardedEvents()
|
||||
{
|
||||
return array();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user