You are here

public function UncaughtExceptionTest::testUncaughtFatalError in Drupal 9

Same name and namespace in other branches
  1. 8 core/tests/Drupal/FunctionalTests/Bootstrap/UncaughtExceptionTest.php \Drupal\FunctionalTests\Bootstrap\UncaughtExceptionTest::testUncaughtFatalError()

Tests displaying an uncaught fatal error.

File

core/tests/Drupal/FunctionalTests/Bootstrap/UncaughtExceptionTest.php, line 94

Class

UncaughtExceptionTest
Tests kernel panic when things are really messed up.

Namespace

Drupal\FunctionalTests\Bootstrap

Code

public function testUncaughtFatalError() {
  $fatal_error = [
    '%type' => 'TypeError',
    '@message' => PHP_VERSION_ID >= 80000 ? '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' : 'Argument 1 passed to Drupal\\error_test\\Controller\\ErrorTestController::Drupal\\error_test\\Controller\\{closure}() must be of the 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-fatals');
  $this
    ->assertSession()
    ->statusCodeEquals(500);
  $message = new FormattableMarkup('%type: @message in %function (line ', $fatal_error);
  $this
    ->assertSession()
    ->responseContains((string) $message);
  $this
    ->assertSession()
    ->responseContains('<pre class="backtrace">');

  // Ensure we are escaping but not double escaping.
  $this
    ->assertSession()
    ->responseContains('&#039;');
  $this
    ->assertSession()
    ->responseNotContains('&amp;#039;');
}