Skip to content

Commit 380a993

Browse files
Merge branch '6.0' into 6.1
* 6.0: [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 [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 97759f4 + 1567874 commit 380a993

File tree

4 files changed

+59
-9
lines changed

4 files changed

+59
-9
lines changed

HttpKernel.php

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

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

111121
$response->sendHeaders();
112122
$response->sendContent();

Log/Logger.php

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,14 @@ public function __construct(string $minLevel = null, $output = null, callable $f
4949

5050
if (isset($_ENV['SHELL_VERBOSITY']) || isset($_SERVER['SHELL_VERBOSITY'])) {
5151
switch ((int) ($_ENV['SHELL_VERBOSITY'] ?? $_SERVER['SHELL_VERBOSITY'])) {
52-
case -1: $minLevel = LogLevel::ERROR; break;
53-
case 1: $minLevel = LogLevel::NOTICE; break;
54-
case 2: $minLevel = LogLevel::INFO; break;
55-
case 3: $minLevel = LogLevel::DEBUG; break;
52+
case -1: $minLevel = LogLevel::ERROR;
53+
break;
54+
case 1: $minLevel = LogLevel::NOTICE;
55+
break;
56+
case 2: $minLevel = LogLevel::INFO;
57+
break;
58+
case 3: $minLevel = LogLevel::DEBUG;
59+
break;
5660
}
5761
}
5862
}
@@ -83,7 +87,7 @@ public function log($level, $message, array $context = []): void
8387

8488
$formatter = $this->formatter;
8589
if ($this->handle) {
86-
@fwrite($this->handle, $formatter($level, $message, $context));
90+
@fwrite($this->handle, $formatter($level, $message, $context).\PHP_EOL);
8791
} else {
8892
error_log($formatter($level, $message, $context, false));
8993
}
@@ -108,7 +112,7 @@ private function format(string $level, string $message, array $context, bool $pr
108112
$message = strtr($message, $replacements);
109113
}
110114

111-
$log = sprintf('[%s] %s', $level, $message).\PHP_EOL;
115+
$log = sprintf('[%s] %s', $level, $message);
112116
if ($prefixDate) {
113117
$log = date(\DateTime::RFC3339).' '.$log;
114118
}

Tests/HttpKernelTest.php

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

344+
public function testTerminateWithException()
345+
{
346+
$dispatcher = new EventDispatcher();
347+
$requestStack = new RequestStack();
348+
$kernel = $this->getHttpKernel($dispatcher, null, $requestStack);
349+
350+
$dispatcher->addListener(KernelEvents::EXCEPTION, function (ExceptionEvent $event) use (&$capturedRequest, $requestStack) {
351+
$capturedRequest = $requestStack->getCurrentRequest();
352+
$event->setResponse(new Response());
353+
});
354+
355+
$kernel->terminateWithException(new \Exception('boo'), $request = Request::create('/'));
356+
$this->assertSame($request, $capturedRequest);
357+
$this->assertNull($requestStack->getCurrentRequest());
358+
}
359+
344360
public function testVerifyRequestStackPushPopDuringHandle()
345361
{
346362
$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)