Skip to content
Snippets Groups Projects
Verified Commit 4b330801 authored by Dave Long's avatar Dave Long
Browse files

Issue #3477366 by andypost: Fix closures in tests for PHP 8.4

parent 0bff6d7e
No related branches found
No related tags found
No related merge requests found
Pipeline #338388 passed
......@@ -127,9 +127,14 @@ public function testExceptionHandler(): void {
'%line' => 56,
'%file' => $this->getModulePath('error_test') . '/error_test.module',
];
$select = \Drupal::database()->select('bananas_are_awesome', 'b')->fields('b');
$message = \Drupal::database()->prepareStatement((string) $select, [])->getQueryString();
$message = str_replace(["\r", "\n"], ' ', $message);
$error_pdo_exception = [
'%type' => 'DatabaseExceptionWrapper',
'@message' => 'SELECT "b".* FROM {bananas_are_awesome} "b"',
'@message' => PHP_VERSION_ID >= 80400 ?
$message :
'SELECT "b".* FROM {bananas_are_awesome} "b"',
'%function' => 'Drupal\error_test\Controller\ErrorTestController->triggerPDOException()',
'%line' => 64,
'%file' => $this->getModulePath('error_test') . '/error_test.module',
......@@ -137,7 +142,9 @@ public function testExceptionHandler(): void {
$error_renderer_exception = [
'%type' => 'Exception',
'@message' => 'This is an exception that occurs during rendering',
'%function' => 'Drupal\error_test\Controller\ErrorTestController->Drupal\error_test\Controller\{closure}()',
'%function' => PHP_VERSION_ID >= 80400 ?
'Drupal\error_test\Controller\ErrorTestController->{closure:Drupal\error_test\Controller\ErrorTestController::triggerRendererException():102}()' :
'Drupal\error_test\Controller\ErrorTestController->Drupal\error_test\Controller\{closure}()',
'%line' => 82,
'%file' => $this->getModulePath('error_test') . '/error_test.module',
];
......
......@@ -92,11 +92,20 @@ public function testUncaughtException(): void {
* Tests displaying an uncaught fatal error.
*/
public function testUncaughtFatalError(): void {
$fatal_error = [
'%type' => 'TypeError',
'@message' => 'Drupal\error_test\Controller\ErrorTestController::Drupal\error_test\Controller\{closure}(): Argument #1 ($test) must be of type array, string given, called in ' . \Drupal::root() . '/core/modules/system/tests/modules/error_test/src/Controller/ErrorTestController.php on line 65',
'%function' => 'Drupal\error_test\Controller\ErrorTestController->Drupal\error_test\Controller\{closure}()',
];
if (PHP_VERSION_ID >= 80400) {
$fatal_error = [
'%type' => 'TypeError',
'@message' => 'Drupal\error_test\Controller\ErrorTestController::{closure:Drupal\error_test\Controller\ErrorTestController::generateFatalErrors():62}(): Argument #1 ($test) must be of type array, string given, called in ' . \Drupal::root() . '/core/modules/system/tests/modules/error_test/src/Controller/ErrorTestController.php on line 65',
'%function' => 'Drupal\error_test\Controller\ErrorTestController->{closure:Drupal\error_test\Controller\ErrorTestController::generateFatalErrors():62}()',
];
}
else {
$fatal_error = [
'%type' => 'TypeError',
'@message' => 'Drupal\error_test\Controller\ErrorTestController::Drupal\error_test\Controller\{closure}(): Argument #1 ($test) must be of type array, string given, called in ' . \Drupal::root() . '/core/modules/system/tests/modules/error_test/src/Controller/ErrorTestController.php on line 65',
'%function' => 'Drupal\error_test\Controller\ErrorTestController->Drupal\error_test\Controller\{closure}()',
];
}
$this->drupalGet('error-test/generate-fatal-errors');
$this->assertSession()->statusCodeEquals(500);
$message = new FormattableMarkup('%type: @message in %function (line ', $fatal_error);
......@@ -155,7 +164,9 @@ public function testErrorContainer(): void {
$this->writeSettings($settings);
\Drupal::service('kernel')->invalidateContainer();
$this->expectedExceptionMessage = 'Drupal\FunctionalTests\Bootstrap\ErrorContainer::Drupal\FunctionalTests\Bootstrap\{closure}(): Argument #1 ($container) must be of type Drupal\FunctionalTests\Bootstrap\ErrorContainer';
$this->expectedExceptionMessage = PHP_VERSION_ID >= 80400 ?
'Drupal\FunctionalTests\Bootstrap\ErrorContainer::{closure:Drupal\FunctionalTests\Bootstrap\ErrorContainer::get():21}(): Argument #1 ($container) must be of type Drupal\FunctionalTests\Bootstrap\ErrorContainer' :
'Drupal\FunctionalTests\Bootstrap\ErrorContainer::Drupal\FunctionalTests\Bootstrap\{closure}(): Argument #1 ($container) must be of type Drupal\FunctionalTests\Bootstrap\ErrorContainer';
$this->drupalGet('');
$this->assertSession()->statusCodeEquals(500);
......
......@@ -49,6 +49,8 @@ public function testCallbackResolver(): void {
function ($suffix) {
return __METHOD__ . '+' . $suffix;
},
PHP_VERSION_ID >= 80400 ?
'{closure:Drupal\Tests\Core\Utility\CallableResolverTest::testCallbackResolver():49}' :
'Drupal\Tests\Core\Utility\{closure}',
],
'First-class callable function' => [
......@@ -61,6 +63,8 @@ function ($suffix) {
],
'Arrow function' => [
fn($suffix) => __METHOD__ . '+' . $suffix,
PHP_VERSION_ID >= 80400 ?
'{closure:Drupal\Tests\Core\Utility\CallableResolverTest::testCallbackResolver():65}' :
'Drupal\Tests\Core\Utility\{closure}',
],
'Static function' => [
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment