You are here

public function ExceptionTestSiteSubscriber::on500 in Drupal 9

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/EventSubscriber/ExceptionTestSiteSubscriber.php \Drupal\Core\EventSubscriber\ExceptionTestSiteSubscriber::on500()

Checks for special handling of errors inside Simpletest.

@todo The $headers array appears to not actually get used at all in the original code. It's quite possible that this entire method is now vestigial and can be removed.

Parameters

\Symfony\Component\HttpKernel\Event\ExceptionEvent $event:

File

core/lib/Drupal/Core/EventSubscriber/ExceptionTestSiteSubscriber.php, line 36

Class

ExceptionTestSiteSubscriber
Custom handling of errors when in a system-under-test.

Namespace

Drupal\Core\EventSubscriber

Code

public function on500(ExceptionEvent $event) {
  $exception = $event
    ->getThrowable();
  $error = Error::decodeException($exception);
  $headers = [];

  // When running inside the testing framework, we relay the errors
  // to the tested site by the way of HTTP headers.
  if (DRUPAL_TEST_IN_CHILD_SITE && !headers_sent() && (!defined('SIMPLETEST_COLLECT_ERRORS') || SIMPLETEST_COLLECT_ERRORS)) {

    // $number does not use drupal_static as it should not be reset
    // as it uniquely identifies each PHP error.
    static $number = 0;
    $assertion = [
      $error['@message'],
      $error['%type'],
      [
        'function' => $error['%function'],
        'file' => $error['%file'],
        'line' => $error['%line'],
      ],
    ];
    $headers['X-Drupal-Assertion-' . $number] = rawurlencode(serialize($assertion));
    $number++;
  }
}