Skip to content

Commit 5c7d554

Browse files
Merge branch '6.1' into 6.2
* 6.1: [HttpKernel] Fix empty request stack when terminating with exception [HttpKernel] Remove EOL when using error_log() in HttpKernel Logger [HttpClient] Add test case for seeking into the content of RetryableHttpClient responses [HttpClient] Fix buffering after calling AsyncContext::passthru() s/annd/and s/gargage/garbage [HttpClient] fix merge [HttpClient] Don't override header if is x-www-form-urlencoded [Console] Fix error output on windows cli Reserve keys when using numeric ones add missing Azerbaijani translations fix few typos/inconsistencies in latvian translations Fix TypeError in Router when using UrlGenerator [Messenger] Fix amqp socket lost fix: use message object from event
2 parents a217b30 + 380a993 commit 5c7d554

File tree

4 files changed

+51
-5
lines changed

4 files changed

+51
-5
lines changed

HttpKernel.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,17 @@ public function terminateWithException(\Throwable $exception, Request $request =
109109
throw $exception;
110110
}
111111

112-
$response = $this->handleThrowable($exception, $request, self::MAIN_REQUEST);
112+
if ($pop = $request !== $this->requestStack->getMainRequest()) {
113+
$this->requestStack->push($request);
114+
}
115+
116+
try {
117+
$response = $this->handleThrowable($exception, $request, self::MAIN_REQUEST);
118+
} finally {
119+
if ($pop) {
120+
$this->requestStack->pop();
121+
}
122+
}
113123

114124
$response->sendHeaders();
115125
$response->sendContent();

Log/Logger.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public function log($level, $message, array $context = []): void
8181

8282
$formatter = $this->formatter;
8383
if ($this->handle) {
84-
@fwrite($this->handle, $formatter($level, $message, $context));
84+
@fwrite($this->handle, $formatter($level, $message, $context).\PHP_EOL);
8585
} else {
8686
error_log($formatter($level, $message, $context, false));
8787
}
@@ -106,7 +106,7 @@ private function format(string $level, string $message, array $context, bool $pr
106106
$message = strtr($message, $replacements);
107107
}
108108

109-
$log = sprintf('[%s] %s', $level, $message).\PHP_EOL;
109+
$log = sprintf('[%s] %s', $level, $message);
110110
if ($prefixDate) {
111111
$log = date(\DateTimeInterface::RFC3339).' '.$log;
112112
}

Tests/HttpKernelTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,22 @@ public function testTerminate()
429429
$this->assertEquals($response, $capturedResponse);
430430
}
431431

432+
public function testTerminateWithException()
433+
{
434+
$dispatcher = new EventDispatcher();
435+
$requestStack = new RequestStack();
436+
$kernel = $this->getHttpKernel($dispatcher, null, $requestStack);
437+
438+
$dispatcher->addListener(KernelEvents::EXCEPTION, function (ExceptionEvent $event) use (&$capturedRequest, $requestStack) {
439+
$capturedRequest = $requestStack->getCurrentRequest();
440+
$event->setResponse(new Response());
441+
});
442+
443+
$kernel->terminateWithException(new \Exception('boo'), $request = Request::create('/'));
444+
$this->assertSame($request, $capturedRequest);
445+
$this->assertNull($requestStack->getCurrentRequest());
446+
}
447+
432448
public function testVerifyRequestStackPushPopDuringHandle()
433449
{
434450
$request = new Request();

Tests/Log/LoggerTest.php

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ protected function tearDown(): void
4848
public static function assertLogsMatch(array $expected, array $given)
4949
{
5050
foreach ($given as $k => $line) {
51-
self::assertThat(1 === preg_match('/[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[\+-][0-9]{2}:[0-9]{2} '.preg_quote($expected[$k]).'/', $line), self::isTrue(), "\"$line\" do not match expected pattern \"$expected[$k]\"");
51+
self::assertSame(1, preg_match('/[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[\+-][0-9]{2}:[0-9]{2} '.preg_quote($expected[$k]).'/', $line), "\"$line\" do not match expected pattern \"$expected[$k]\"");
5252
}
5353
}
5454

@@ -186,7 +186,7 @@ public function testContextExceptionKeyCanBeExceptionOrOtherValues()
186186
public function testFormatter()
187187
{
188188
$this->logger = new Logger(LogLevel::DEBUG, $this->tmpFile, function ($level, $message, $context) {
189-
return json_encode(['level' => $level, 'message' => $message, 'context' => $context]).\PHP_EOL;
189+
return json_encode(['level' => $level, 'message' => $message, 'context' => $context]);
190190
});
191191

192192
$this->logger->error('An error', ['foo' => 'bar']);
@@ -196,6 +196,26 @@ public function testFormatter()
196196
'{"level":"warning","message":"A warning","context":{"baz":"bar"}}',
197197
], $this->getLogs());
198198
}
199+
200+
public function testLogsWithoutOutput()
201+
{
202+
$oldErrorLog = ini_set('error_log', $this->tmpFile);
203+
204+
$logger = new Logger();
205+
$logger->error('test');
206+
$logger->critical('test');
207+
208+
$expected = [
209+
'[error] test',
210+
'[critical] test',
211+
];
212+
213+
foreach ($this->getLogs() as $k => $line) {
214+
$this->assertSame(1, preg_match('/\[[\w\/\-: ]+\] '.preg_quote($expected[$k]).'/', $line), "\"$line\" do not match expected pattern \"$expected[$k]\"");
215+
}
216+
217+
ini_set('error_log', $oldErrorLog);
218+
}
199219
}
200220

201221
class DummyTest

0 commit comments

Comments
 (0)