home | career | drupal | java | mac | mysql | perl | php | scala | uml | unix

Drupal example source code file (error.test)

This example Drupal source code file (error.test) is included in the DevDaily.com "Drupal Source Code Warehouse" project. The intent of this project is to help you "Learn Drupal by Example".

PHP - Drupal tags/keywords

array, directory, drupal, error, error_pdo_exception, expected, file, function, http, line, message, php, status, type

The error.test Drupal example source code

<?php
// $Id: error.test,v 1.9 2010/10/16 00:00:16 webchick Exp $

/**
 * Tests Drupal error and exception handlers.
 */
class DrupalErrorHandlerUnitTest extends DrupalWebTestCase {
  public static function getInfo() {
    return array(
      'name' => 'Drupal error handlers',
      'description' => 'Performs tests on the Drupal error and exception handler.',
      'group' => 'System',
    );
  }

  function setUp() {
    parent::setUp('error_test');
  }

  /**
   * Test the error handler.
   */
  function testErrorHandler() {
    $error_notice = array(
      '%type' => 'Notice',
      '!message' => 'Undefined variable: bananas',
      '%function' => 'error_test_generate_warnings()',
      '%line' => 44,
      '%file' => drupal_realpath('modules/simpletest/tests/error_test.module'),
    );
    $error_warning = array(
      '%type' => 'Warning',
      '!message' => 'Division by zero',
      '%function' => 'error_test_generate_warnings()',
      '%line' => 46,
      '%file' => drupal_realpath('modules/simpletest/tests/error_test.module'),
    );
    $error_user_notice = array(
      '%type' => 'User warning',
      '!message' => 'Drupal is awesome',
      '%function' => 'error_test_generate_warnings()',
      '%line' => 48,
      '%file' => drupal_realpath('modules/simpletest/tests/error_test.module'),
    );

    // Set error reporting to collect notices.
    variable_set('error_level', ERROR_REPORTING_DISPLAY_ALL);
    $this->drupalGet('error-test/generate-warnings');
    $this->assertResponse(200, t('Received expected HTTP status code.'));
    $this->assertErrorMessage($error_notice);
    $this->assertErrorMessage($error_warning);
    $this->assertErrorMessage($error_user_notice);

    // Set error reporting to not collect notices.
    variable_set('error_level', ERROR_REPORTING_DISPLAY_SOME);
    $this->drupalGet('error-test/generate-warnings');
    $this->assertResponse(200, t('Received expected HTTP status code.'));
    $this->assertNoErrorMessage($error_notice);
    $this->assertErrorMessage($error_warning);
    $this->assertErrorMessage($error_user_notice);

    // Set error reporting to not show any errors.
    variable_set('error_level', ERROR_REPORTING_HIDE);
    $this->drupalGet('error-test/generate-warnings');
    $this->assertResponse(200, t('Received expected HTTP status code.'));
    $this->assertNoErrorMessage($error_notice);
    $this->assertNoErrorMessage($error_warning);
    $this->assertNoErrorMessage($error_user_notice);
  }

  /**
   * Test the exception handler.
   */
  function testExceptionHandler() {
    $error_exception = array(
      '%type' => 'Exception',
      '!message' => 'Drupal is awesome',
      '%function' => 'error_test_trigger_exception()',
      '%line' => 57,
      '%file' => drupal_realpath('modules/simpletest/tests/error_test.module'),
    );
    $error_pdo_exception = array(
      '%type' => 'PDOException',
      '!message' => 'SELECT * FROM bananas_are_awesome',
      '%function' => 'error_test_trigger_pdo_exception()',
      '%line' => 65,
      '%file' => drupal_realpath('modules/simpletest/tests/error_test.module'),
    );

    $this->drupalGet('error-test/trigger-exception');
    $this->assertTrue(strpos($this->drupalGetHeader(':status'), '500 Service unavailable (with message)'), t('Received expected HTTP status line.'));
    $this->assertErrorMessage($error_exception);

    $this->drupalGet('error-test/trigger-pdo-exception');
    $this->assertTrue(strpos($this->drupalGetHeader(':status'), '500 Service unavailable (with message)'), t('Received expected HTTP status line.'));
    // We cannot use assertErrorMessage() since the extact error reported
    // varies from database to database. Check that the SQL string is displayed.
    $this->assertText($error_pdo_exception['%type'], t('Found %type in error page.', $error_pdo_exception));
    $this->assertText($error_pdo_exception['!message'], t('Found !message in error page.', $error_pdo_exception));
    $error_details = t('in %function (line %line of %file)', $error_pdo_exception);
    $this->assertRaw($error_details, t("Found '!message' in error page.", array('!message' => $error_details)));
  }

  /**
   * Helper function: assert that the error message is found.
   */
  function assertErrorMessage(array $error) {
    $message = t('%type: !message in %function (line %line of %file).', $error);
    $this->assertRaw($message, t('Error !message found.', array('!message' => $message)));
  }

  /**
   * Helper function: assert that the error message is not found.
   */
  function assertNoErrorMessage(array $error) {
    $message = t('%type: !message in %function (line %line of %file).', $error);
    $this->assertNoRaw($message, t('Error !message not found.', array('!message' => $message)));
  }
}

Other Drupal examples (source code examples)

Here is a short list of links related to this Drupal error.test source code file:

new blog posts

"Drupal" is a registered trademark of Dries Buytaert.

my drupal tutorials and examples  

Copyright 1998-2016 Alvin Alexander, alvinalexander.com
All Rights Reserved.

Beginning in 2016, a portion of the proceeds from pages under the '/drupal-code-examples/' URI will be donated to charity.