Skip to content

Commit e3bc635

Browse files
committed
[VarDumper] Fix exception about abstract_arg
When dump_destination is not configured
1 parent be74519 commit e3bc635

File tree

2 files changed

+43
-2
lines changed

2 files changed

+43
-2
lines changed

Resources/config/services.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@
100100

101101
->set('var_dumper.server_connection', Connection::class)
102102
->args([
103-
abstract_arg('server host'),
103+
'', // server host
104104
[
105105
'source' => inline_service(SourceContextProvider::class)->args([
106106
param('kernel.charset'),
@@ -114,7 +114,7 @@
114114

115115
->set('var_dumper.dump_server', DumpServer::class)
116116
->args([
117-
abstract_arg('server host'),
117+
'', // server host
118118
service('logger')->nullOnInvalid(),
119119
])
120120
->tag('monolog.logger', ['channel' => 'debug'])

Tests/DependencyInjection/DebugExtensionTest.php

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@
1515
use Symfony\Bundle\DebugBundle\DependencyInjection\DebugExtension;
1616
use Symfony\Component\DependencyInjection\ContainerBuilder;
1717
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
18+
use Symfony\Component\HttpFoundation\RequestStack;
1819
use Symfony\Component\VarDumper\Caster\ReflectionCaster;
20+
use Symfony\Component\VarDumper\Dumper\CliDumper;
21+
use Symfony\Component\VarDumper\Server\Connection;
22+
use Symfony\Component\VarDumper\Server\DumpServer;
1923

2024
class DebugExtensionTest extends TestCase
2125
{
@@ -70,12 +74,49 @@ public function testUnsetClosureFileInfoShouldBeRegisteredInVarCloner()
7074
$this->assertTrue($called);
7175
}
7276

77+
public function provideServicesUsingDumpDestinationCreation(): array
78+
{
79+
return [
80+
['tcp://localhost:1234', 'tcp://localhost:1234', null],
81+
[null, '', null],
82+
['php://stderr', '', 'php://stderr'],
83+
];
84+
}
85+
86+
/**
87+
* @dataProvider provideServicesUsingDumpDestinationCreation
88+
*/
89+
public function testServicesUsingDumpDestinationCreation(?string $dumpDestination, string $expectedHost, ?string $expectedOutput)
90+
{
91+
$container = $this->createContainer();
92+
$container->registerExtension(new DebugExtension());
93+
$container->loadFromExtension('debug', ['dump_destination' => $dumpDestination]);
94+
$container->setAlias('dump_server_public', 'var_dumper.dump_server')->setPublic(true);
95+
$container->setAlias('server_conn_public', 'var_dumper.server_connection')->setPublic(true);
96+
$container->setAlias('cli_dumper_public', 'var_dumper.cli_dumper')->setPublic(true);
97+
$container->register('request_stack', RequestStack::class);
98+
$this->compileContainer($container);
99+
100+
$dumpServer = $container->get('dump_server_public');
101+
$this->assertInstanceOf(DumpServer::class, $dumpServer);
102+
$this->assertSame($expectedHost, $container->findDefinition('dump_server_public')->getArgument(0));
103+
104+
$serverConn = $container->get('server_conn_public');
105+
$this->assertInstanceOf(Connection::class, $serverConn);
106+
$this->assertSame($expectedHost, $container->findDefinition('server_conn_public')->getArgument(0));
107+
108+
$cliDumper = $container->get('cli_dumper_public');
109+
$this->assertInstanceOf(CliDumper::class, $cliDumper);
110+
$this->assertSame($expectedOutput, $container->findDefinition('cli_dumper_public')->getArgument(0));
111+
}
112+
73113
private function createContainer()
74114
{
75115
$container = new ContainerBuilder(new ParameterBag([
76116
'kernel.cache_dir' => __DIR__,
77117
'kernel.charset' => 'UTF-8',
78118
'kernel.debug' => true,
119+
'kernel.project_dir' => __DIR__,
79120
'kernel.bundles' => ['DebugBundle' => 'Symfony\\Bundle\\DebugBundle\\DebugBundle'],
80121
]));
81122

0 commit comments

Comments
 (0)