Skip to content

Commit 99a0dba

Browse files
committed
replace a not-existing virtual request stack with the real one
1 parent b3bfc6d commit 99a0dba

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

src/Symfony/Bundle/DebugBundle/DependencyInjection/Compiler/DumpDataCollectorPass.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener;
1515
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
1616
use Symfony\Component\DependencyInjection\ContainerBuilder;
17+
use Symfony\Component\DependencyInjection\Reference;
1718

1819
/**
1920
* Registers the file link format for the {@link \Symfony\Component\HttpKernel\DataCollector\DumpDataCollector}.
@@ -33,6 +34,10 @@ public function process(ContainerBuilder $container)
3334

3435
$definition = $container->getDefinition('data_collector.dump');
3536

37+
if (!$container->has('.virtual_request_stack')) {
38+
$definition->replaceArgument(3, new Reference('request_stack'));
39+
}
40+
3641
if (!$container->hasParameter('web_profiler.debug_toolbar.mode') || WebDebugToolbarListener::DISABLED === $container->getParameter('web_profiler.debug_toolbar.mode')) {
3742
$definition->replaceArgument(3, null);
3843
}

src/Symfony/Bundle/DebugBundle/Tests/DependencyInjection/Compiler/DumpDataCollectorPassTest.php

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener;
1717
use Symfony\Component\DependencyInjection\ContainerBuilder;
1818
use Symfony\Component\DependencyInjection\Definition;
19+
use Symfony\Component\DependencyInjection\Reference;
1920
use Symfony\Component\HttpFoundation\RequestStack;
2021
use Symfony\Component\HttpKernel\DataCollector\DumpDataCollector;
2122

@@ -26,35 +27,51 @@ public function testProcessWithoutFileLinkFormatParameter()
2627
$container = new ContainerBuilder();
2728
$container->addCompilerPass(new DumpDataCollectorPass());
2829

29-
$definition = new Definition(DumpDataCollector::class, [null, null, null, null]);
30+
$definition = new Definition(DumpDataCollector::class, [null, null, new Reference('.virtual_request_stack'), null]);
3031
$container->setDefinition('data_collector.dump', $definition);
3132

3233
$container->compile();
3334

3435
$this->assertNull($definition->getArgument(1));
3536
}
3637

37-
public function testProcessWithToolbarEnabled()
38+
public function testProcessWithToolbarEnabledAndVirtualRequestStackPresent()
3839
{
3940
$container = new ContainerBuilder();
41+
$container->register('request_stack', RequestStack::class);
42+
$container->register('.virtual_request_stack', RequestStack::class);
4043
$container->addCompilerPass(new DumpDataCollectorPass());
41-
$requestStack = new RequestStack();
4244

43-
$definition = new Definition(DumpDataCollector::class, [null, null, null, $requestStack]);
45+
$definition = new Definition(DumpDataCollector::class, [null, null, null, new Reference('.virtual_request_stack')]);
4446
$container->setDefinition('data_collector.dump', $definition);
4547
$container->setParameter('web_profiler.debug_toolbar.mode', WebDebugToolbarListener::ENABLED);
4648

4749
$container->compile();
4850

49-
$this->assertSame($requestStack, $definition->getArgument(3));
51+
$this->assertEquals(new Reference('.virtual_request_stack'), $definition->getArgument(3));
52+
}
53+
54+
public function testProcessWithToolbarEnabledAndVirtualRequestStackNotPresent()
55+
{
56+
$container = new ContainerBuilder();
57+
$container->register('request_stack', RequestStack::class);
58+
$container->addCompilerPass(new DumpDataCollectorPass());
59+
60+
$definition = new Definition(DumpDataCollector::class, [null, null, null, new Reference('.virtual_request_stack')]);
61+
$container->setDefinition('data_collector.dump', $definition);
62+
$container->setParameter('web_profiler.debug_toolbar.mode', WebDebugToolbarListener::ENABLED);
63+
64+
$container->compile();
65+
66+
$this->assertEquals(new Reference('request_stack'), $definition->getArgument(3));
5067
}
5168

5269
public function testProcessWithToolbarDisabled()
5370
{
5471
$container = new ContainerBuilder();
5572
$container->addCompilerPass(new DumpDataCollectorPass());
5673

57-
$definition = new Definition(DumpDataCollector::class, [null, null, null, new RequestStack()]);
74+
$definition = new Definition(DumpDataCollector::class, [null, null, new Reference('.virtual_request_stack'), new RequestStack()]);
5875
$container->setDefinition('data_collector.dump', $definition);
5976
$container->setParameter('web_profiler.debug_toolbar.mode', WebDebugToolbarListener::DISABLED);
6077

@@ -68,7 +85,7 @@ public function testProcessWithoutToolbar()
6885
$container = new ContainerBuilder();
6986
$container->addCompilerPass(new DumpDataCollectorPass());
7087

71-
$definition = new Definition(DumpDataCollector::class, [null, null, null, new RequestStack()]);
88+
$definition = new Definition(DumpDataCollector::class, [null, null, new Reference('.virtual_request_stack'), new RequestStack()]);
7289
$container->setDefinition('data_collector.dump', $definition);
7390

7491
$container->compile();

0 commit comments

Comments
 (0)