8000 Merge branch '5.4' into 6.2 · symfony/symfony@17bcfaa · GitHub
[go: up one dir, main page]

Skip to content

Commit 17bcfaa

Browse files
Merge branch '5.4' into 6.2
* 5.4: CS fix [HttpKernel] Tests for DataCollector for #49320
2 parents 8f56a8c + 1ec5dac commit 17bcfaa

File tree

4 files changed

+193
-2
lines changed

4 files changed

+193
-2
lines changed

src/Symfony/Component/HttpKernel/DataCollector/TimeDataCollector.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public function __construct(KernelInterface $kernel = null, Stopwatch $stopwatch
3131
{
3232
$this->kernel = $kernel;
3333
$this->stopwatch = $stopwatch;
34+
$this->data = ['events' => [], 'stopwatch_installed' => false, 'start_time' => 0];
3435
}
3536

3637
public function collect(Request $request, Response $response, \Throwable $exception = null)
@@ -51,7 +52,7 @@ public function collect(Request $request, Response $response, \Throwable $except
5152

5253
public function reset()
5354
{
54-
$this->data = [];
55+
$this->data = ['events' => [], 'stopwatch_installed' => false, 'start_time' => 0];
5556

5657
$this->stopwatch?->reset();
5758
}
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Component\HttpKernel\Tests\DataCollector;
13+
14+
use PHPUnit\Framework\TestCase;
15+
use Symfony\Component\HttpFoundation\RedirectResponse;
16+
use Symfony\Component\HttpFoundation\Request;
17+
use Symfony\Component\HttpFoundation\Response;
18+
use Symfony\Component\HttpKernel\DataCollector\RouterDataCollector;
19+
use Symfony\Component\HttpKernel\Event\ControllerEvent;
20+
use Symfony\Component\HttpKernel\KernelInterface;
21+
22+
class RouterDataCollectorTest extends TestCase
23+
{
24+
public function testRouteRedirectResponse()
25+
{
26+
$collector = new RouterDataCollector();
27+
28+
$request = Request::create('http://test.com/foo?bar=baz');
29+
$response = new RedirectResponse('http://test.com/redirect');
30+
31+
$event = $this->createControllerEvent($request);
32+
33+
$collector->onKernelController($event);
34+
$collector->collect($request, $response);
35+
36+
$this->assertTrue($collector->getRedirect());
37+
$this->assertEquals('http://test.com/redirect', $collector->getTargetUrl());
38+
$this->assertEquals('n/a', $collector->getTargetRoute());
39+
}
40+
41+
public function testRouteNotRedirectResponse()
42+
{
43+
$collector = new RouterDataCollector();
44+
45+
$request = Request::create('http://test.com/foo?bar=baz');
46+
$response = new Response('test');
47+
48+
$event = $this->createControllerEvent($request);
49+
50+
$collector->onKernelController($event);
51+
$collector->collect($request, $response);
52+
53+
$this->assertFalse($collector->getRedirect());
54+
$this->assertNull($collector->getTargetUrl());
55+
$this->assertNull($collector->getTargetRoute());
56+
}
57+
58+
public function testReset()
59+
{
60+
$collector = new RouterDataCollector();
61+
62+
// Fill Collector
63+
$request = Request::create('http://test.com/foo?bar=baz');
64+
$response = new RedirectResponse('http://test.com/redirect');
65+
$event = $this->createControllerEvent($request);
66+
$collector->onKernelController($event);
67+
$collector->collect($request, $response);
68+
69+
$collector->reset();
70+
71+
$this->assertFalse($collector->getRedirect());
72+
$this->assertNull($collector->getTargetUrl());
73+
$this->assertNull($collector->getTargetRoute());
74+
}
75+
76+
public function testGetName()
77+
{
78+
$collector = new RouterDataCollector();
79+
80+
$this->assertEquals('router', $collector->getName());
81+
}
82+
83+
protected function createControllerEvent(Request $request): ControllerEvent
84+
{
85+
$kernel = $this->createMock(KernelInterface::class);
86+
87+
return new ControllerEvent($kernel, function () {}, $request, null);
88+
}
89+
}

src/Symfony/Component/HttpKernel/Tests/DataCollector/TimeDataCollectorTest.php

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Symfony\Component\HttpKernel\DataCollector\TimeDataCollector;
1818
use Symfony\Component\HttpKernel\KernelInterface;
1919
use Symfony\Component\Stopwatch\Stopwatch;
20+
use Symfony\Component\Stopwatch\StopwatchEvent;
2021

2122
/**
2223
* @group time-sensitive
@@ -55,4 +56,104 @@ public function testCollect()
5556
$this->assertEquals(123456000, $c->getStartTime());
5657
$this->assertSame(class_exists(Stopwatch::class, false), $c->isStopwatchInstalled());
5758
}
59+
60+
public function testReset()
61+
{
62+
$collector = new TimeDataCollector();
63+
64+
// Fill Collector
65+
$request = Request::create('http://test.com/foo?bar=baz');
66+
$response = new Response('test');
67+
$collector->collect($request, $response);
68+
69+
$collector->reset();
70+
71+
$this->assertEquals([], $collector->getEvents());
72+
$this->assertEquals(0, $collector->getStartTime());
73+
$this->assertFalse($collector->isStopwatchInstalled());
74+
}
75+
76+
public function testLateCollect()
77+
{
78+
$stopwatch = new Stopwatch();
79+
$stopwatch->start('test');
80+
81+
$collector = new TimeDataCollector(null, $stopwatch);
82+
83+
$request = new Request();
84+
$request->attributes->set('_stopwatch_token', '__root__');
85+
86+
$collector->collect($request, new Response());
87+
$collector->lateCollect();
88+
89+
$this->assertEquals(['test'], array_keys($collector->getEvents()));
90+
}
91+
92+
public function testSetEvents()
93+
{
94+
$collector = new TimeDataCollector();
95+
96+
$event = $this->createMock(StopwatchEvent::class);
97+
$event->expects($this->once())->method('ensureStopped');
98+
99+
$events = [$event];
100+
101+
$collector->setEvents($events);
102+
103+
$this->assertCount(1, $collector->getEvents());
104+
}
105+
106+
public function testGetDurationHasEvents()
107+
{
108+
$collector = new TimeDataCollector();
109+
110+
$request = new Request();
111+
$request->server->set('REQUEST_TIME_FLOAT', 1);
112+
$collector->collect($request, new Response());
113+
114+
$event = $this->createMock(StopwatchEvent::class);
115+
$event->expects($this->once())->method('getDuration')->willReturn(2000.0);
116+
$event->expects($this->once())->method('getOrigin')->willReturn(1000.0);
117+
$events = ['__section__' => $event];
118+
$collector->setEvents($events);
119+
120+
$this->assertEquals(1000 + 2000 - 1000, $collector->getDuration());
121+
}
122+
123+
public function testGetDurationNotEvents()
124+
{
125+
$collector = new TimeDataCollector();
126+
127+
$this->assertEquals(0, $collector->getDuration());
128+
}
129+
130+
public function testGetInitTimeNotEvents()
131+
{
132+
$collector = new TimeDataCollector();
133+
134+
$this->assertEquals(0, $collector->getInitTime());
135+
}
136+
137+
public function testGetInitTimeHasEvents()
138+
{
139+
$collector = new TimeDataCollector();
140+
141+
$request = new Request();
142+
$request->server->set('REQUEST_TIME_FLOAT', 1);
143+
$collector->collect($request, new Response());
144+
145+
$event = $this->createMock(StopwatchEvent::class);
146+
$event->expects($this->once())->method('getOrigin')->willReturn(2000.0);
147+
$events = ['__section__' => $event];
148+
$collector->setEvents($events);
149+
150+
$this->assertEquals(2000 - 1000, $collector->getInitTime());
151+
}
152+
153+
public function testGetName()
154+
{
155+
$collector = new TimeDataCollector();
156+
157+
$this->assertEquals('time', $collector->getName());
158+
}
58159
}

src/Symfony/Component/Process/PhpExecutableFinder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public function find(bool $includeArgs = true): string|false
5454
$args = $includeArgs && $args ? ' '.implode(' ', $args) : '';
5555

5656
// PHP_BINARY return the current sapi executable
57-
if (\PHP_BINARY && \in_array(\PHP_SAPI, ['cgi-fcgi', 'cli', 'cli-server', 'phpdbg'], true)) {
57+
if (\PHP_BINARY && \in_array(\PHP_SAPI, ['cli', 'cli-server', 'phpdbg'], true)) {
5858
return \PHP_BINARY.$args;
5959
}
6060

0 commit comments

Comments
 (0)
0