function ErrorHandlerTest::testCustomErrorHandler

Same name and namespace in other branches
  1. 11.x core/modules/system/tests/src/Functional/System/ErrorHandlerTest.php \Drupal\Tests\system\Functional\System\ErrorHandlerTest::testCustomErrorHandler()

Tests a custom error handler set in settings.php.

File

core/modules/system/tests/src/Functional/System/ErrorHandlerTest.php, line 98

Class

ErrorHandlerTest
Performs tests on the Drupal error and exception handler.

Namespace

Drupal\Tests\system\Functional\System

Code

public function testCustomErrorHandler() : void {
  $settings_filename = $this->siteDirectory . '/settings.php';
  chmod($settings_filename, 0777);
  $settings_php = file_get_contents($settings_filename);
  $settings_php .= "\n";
  $settings_php .= "set_error_handler(function() {\n";
  $settings_php .= "  header('HTTP/1.1 418 I\\'m a teapot');\n";
  $settings_php .= "  print('Oh oh, flying teapots from a custom error handler');\n";
  $settings_php .= "  exit();\n";
  $settings_php .= "});\n";
  file_put_contents($settings_filename, $settings_php);
  // For most types of errors, PHP throws an \Error object that Drupal
  // catches, so the error handler is not invoked. To test the error handler,
  // generate warnings, which are not thrown/caught.
  $this->drupalGet('error-test/generate-warnings');
  $this->assertSession()
    ->statusCodeEquals(418);
  $this->assertSession()
    ->responseContains('Oh oh, flying teapots from a custom error handler');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.