summaryrefslogtreecommitdiff
path: root/modules/simpletest
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2009-05-22 15:03:47 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2009-05-22 15:03:47 +0000
commit2e2700e06e720680c0a7fbf53fb42b321c6226c7 (patch)
treee2543e4a87d6be28dd455043ec3ead96965205bf /modules/simpletest
parent21b1f95b40e59d528a46dccaba4333c25a8a8790 (diff)
downloadbrdo-2e2700e06e720680c0a7fbf53fb42b321c6226c7.tar.gz
brdo-2e2700e06e720680c0a7fbf53fb42b321c6226c7.tar.bz2
#469768 again. Let's get those new files there, shall we? :P
Diffstat (limited to 'modules/simpletest')
-rw-r--r--modules/simpletest/tests/error.test115
-rw-r--r--modules/simpletest/tests/error_test.info8
-rw-r--r--modules/simpletest/tests/error_test.module66
3 files changed, 189 insertions, 0 deletions
diff --git a/modules/simpletest/tests/error.test b/modules/simpletest/tests/error.test
new file mode 100644
index 000000000..8584e2a40
--- /dev/null
+++ b/modules/simpletest/tests/error.test
@@ -0,0 +1,115 @@
+<?php
+// $Id$
+
+/**
+ * Tests Drupal error and exception handlers.
+ */
+class DrupalErrorHandlerUnitTest extends DrupalWebTestCase {
+ public static function getInfo() {
+ return array(
+ 'name' => t('Drupal error handlers'),
+ 'description' => t('Performs tests on the Drupal error and exception handler.'),
+ 'group' => t('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' => realpath('modules/simpletest/tests/error_test.module'),
+ );
+ $error_warning = array(
+ '%type' => 'Warning',
+ '%message' => 'Division by zero',
+ '%function' => 'error_test_generate_warnings()',
+ '%line' => 46,
+ '%file' => realpath('modules/simpletest/tests/error_test.module'),
+ );
+ $error_user_notice = array(
+ '%type' => 'User notice',
+ '%message' => 'Drupal is awesome',
+ '%function' => 'error_test_generate_warnings()',
+ '%line' => 48,
+ '%file' => 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->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->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->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' => realpath('modules/simpletest/tests/error_test.module'),
+ );
+ $error_pdo_exception = array(
+ '%type' => 'PDOException',
+ '%message' => 'SQLSTATE',
+ '%function' => 'error_test_trigger_pdo_exception()',
+ '%line' => 65,
+ '%file' => realpath('modules/simpletest/tests/error_test.module'),
+ );
+
+ $this->drupalGet('error-test/trigger-exception');
+ $this->assertErrorMessage($error_exception);
+
+ $this->drupalGet('error-test/trigger-pdo-exception');
+ // We cannot use assertErrorMessage() since the extact error reported
+ // varies from database to database. Check for the error keyword 'SQLSTATE'.
+ $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)));
+ }
+}
+
diff --git a/modules/simpletest/tests/error_test.info b/modules/simpletest/tests/error_test.info
new file mode 100644
index 000000000..1dac66247
--- /dev/null
+++ b/modules/simpletest/tests/error_test.info
@@ -0,0 +1,8 @@
+; $Id$
+name = "Error test"
+description = "Support module for error and exception testing."
+package = Testing
+version = VERSION
+core = 7.x
+files[] = error_test.module
+hidden = TRUE
diff --git a/modules/simpletest/tests/error_test.module b/modules/simpletest/tests/error_test.module
new file mode 100644
index 000000000..384f62bf3
--- /dev/null
+++ b/modules/simpletest/tests/error_test.module
@@ -0,0 +1,66 @@
+<?php
+// $Id$
+
+/**
+ * Implementation of hook_menu().
+ */
+function error_test_menu() {
+ $items['error-test/generate-warnings'] = array(
+ 'title' => 'Generate warnings',
+ 'page callback' => 'error_test_generate_warnings',
+ 'access callback' => TRUE,
+ 'type' => MENU_CALLBACK,
+ );
+ $items['error-test/generate-warnings-with-report'] = array(
+ 'title' => 'Generate warnings with Simpletest reporting',
+ 'page callback' => 'error_test_generate_warnings',
+ 'page arguments' => array(TRUE),
+ 'access callback' => TRUE,
+ 'type' => MENU_CALLBACK,
+ );
+ $items['error-test/trigger-exception'] = array(
+ 'title' => 'Trigger an exception',
+ 'page callback' => 'error_test_trigger_exception',
+ 'access callback' => TRUE,
+ 'type' => MENU_CALLBACK,
+ );
+ $items['error-test/trigger-pdo-exception'] = array(
+ 'title' => 'Trigger a PDO exception',
+ 'page callback' => 'error_test_trigger_pdo_exception',
+ 'access callback' => TRUE,
+ 'type' => MENU_CALLBACK,
+ );
+
+ return $items;
+}
+
+/**
+ * Menu callback; generate warnings to test the error handler.
+ */
+function error_test_generate_warnings($collect_errors = FALSE) {
+ // Tell Drupal error reporter to send errors to Simpletest or not.
+ define('SIMPLETEST_COLLECT_ERRORS', $collect_errors);
+ // This will generate a notice.
+ $monkey_love = $bananas;
+ // This will generate a warning.
+ $awesomely_big = 1/0;
+ // This will generate a user error.
+ trigger_error("Drupal is awesome", E_USER_NOTICE);
+ return "";
+}
+
+/**
+ * Menu callback; trigger an exception to test the exception handler.
+ */
+function error_test_trigger_exception() {
+ define('SIMPLETEST_COLLECT_ERRORS', FALSE);
+ throw new Exception("Drupal is awesome");
+}
+
+/**
+ * Menu callback; trigger an exception to test the exception handler.
+ */
+function error_test_trigger_pdo_exception() {
+ define('SIMPLETEST_COLLECT_ERRORS', FALSE);
+ db_query("SELECT * FROM bananas_are_awesome");
+}