1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Component\VarDumper\Tests\Dumper;
- use PHPUnit\Framework\TestCase;
- use Symfony\Component\Process\PhpProcess;
- use Symfony\Component\Process\Process;
- use Symfony\Component\VarDumper\Cloner\VarCloner;
- use Symfony\Component\VarDumper\Dumper\ContextProvider\ContextProviderInterface;
- use Symfony\Component\VarDumper\Dumper\DataDumperInterface;
- use Symfony\Component\VarDumper\Dumper\ServerDumper;
- class ServerDumperTest extends TestCase
- {
- private const VAR_DUMPER_SERVER = 'tcp://127.0.0.1:9913';
- public function testDumpForwardsToWrappedDumperWhenServerIsUnavailable()
- {
- $wrappedDumper = $this->getMockBuilder(DataDumperInterface::class)->getMock();
- $dumper = new ServerDumper(self::VAR_DUMPER_SERVER, $wrappedDumper);
- $cloner = new VarCloner();
- $data = $cloner->cloneVar('foo');
- $wrappedDumper->expects($this->once())->method('dump')->with($data);
- $dumper->dump($data);
- }
- public function testDump()
- {
- $wrappedDumper = $this->getMockBuilder(DataDumperInterface::class)->getMock();
- $wrappedDumper->expects($this->never())->method('dump'); // test wrapped dumper is not used
- $cloner = new VarCloner();
- $data = $cloner->cloneVar('foo');
- $dumper = new ServerDumper(self::VAR_DUMPER_SERVER, $wrappedDumper, [
- 'foo_provider' => new class() implements ContextProviderInterface {
- public function getContext(): ?array
- {
- return ['foo'];
- }
- },
- ]);
- $dumped = null;
- $process = $this->getServerProcess();
- $process->start(function ($type, $buffer) use ($process, &$dumped, $dumper, $data) {
- if (Process::ERR === $type) {
- $process->stop();
- $this->fail();
- } elseif ("READY\n" === $buffer) {
- $dumper->dump($data);
- } else {
- $dumped .= $buffer;
- }
- });
- $process->wait();
- $this->assertTrue($process->isSuccessful());
- $this->assertStringMatchesFormat(<<<'DUMP'
- (3) "foo"
- [
- "timestamp" => %d.%d
- "foo_provider" => [
- (3) "foo"
- ]
- ]
- %d
- DUMP
- , $dumped);
- }
- private function getServerProcess(): Process
- {
- $process = new PhpProcess(file_get_contents(__DIR__.'/../Fixtures/dump_server.php'), null, [
- 'COMPONENT_ROOT' => __DIR__.'/../../',
- 'VAR_DUMPER_SERVER' => self::VAR_DUMPER_SERVER,
- ]);
- $process->inheritEnvironmentVariables(true);
- return $process->setTimeout(9);
- }
- }
|