summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/theme.inc2
-rw-r--r--modules/simpletest/tests/system_test.module21
-rw-r--r--modules/system/system.test29
3 files changed, 51 insertions, 1 deletions
diff --git a/includes/theme.inc b/includes/theme.inc
index 1833beeb8..8d5348dfc 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -1691,7 +1691,7 @@ function theme_status_messages($variables) {
$output .= " </ul>\n";
}
else {
- $output .= $messages[0];
+ $output .= reset($messages);
}
$output .= "</div>\n";
}
diff --git a/modules/simpletest/tests/system_test.module b/modules/simpletest/tests/system_test.module
index c0eed034f..8c4432996 100644
--- a/modules/simpletest/tests/system_test.module
+++ b/modules/simpletest/tests/system_test.module
@@ -78,6 +78,13 @@ function system_test_menu() {
'type' => MENU_CALLBACK,
);
+ $items['system-test/drupal-set-message'] = array(
+ 'title' => 'Set messages with drupal_set_message()',
+ 'page callback' => 'system_test_drupal_set_message',
+ 'access callback' => TRUE,
+ 'type' => MENU_CALLBACK,
+ );
+
$items['system-test/main-content-handling'] = array(
'title' => 'Test main content handling',
'page callback' => 'system_test_main_content_fallback',
@@ -436,6 +443,20 @@ function system_test_authorize_init_page($page_title) {
}
/**
+ * Sets two messages and removes the first one before the messages are displayed.
+ */
+function system_test_drupal_set_message() {
+ // Set two messages.
+ drupal_set_message('First message (removed).');
+ drupal_set_message('Second message (not removed).');
+
+ // Remove the first.
+ unset($_SESSION['messages']['status'][0]);
+
+ return '';
+}
+
+/**
* Page callback to print out $_GET['destination'] for testing.
*/
function system_test_get_destination() {
diff --git a/modules/system/system.test b/modules/system/system.test
index dcc86e539..3e26bae8c 100644
--- a/modules/system/system.test
+++ b/modules/system/system.test
@@ -2827,6 +2827,35 @@ class SystemValidTokenTest extends DrupalUnitTestCase {
}
/**
+ * Tests drupal_set_message() and related functions.
+ */
+class DrupalSetMessageTest extends DrupalWebTestCase {
+
+ public static function getInfo() {
+ return array(
+ 'name' => 'Messages',
+ 'description' => 'Tests that messages can be displayed using drupal_set_message().',
+ 'group' => 'System',
+ );
+ }
+
+ function setUp() {
+ parent::setUp('system_test');
+ }
+
+ /**
+ * Tests setting messages and removing one before it is displayed.
+ */
+ function testSetRemoveMessages() {
+ // The page at system-test/drupal-set-message sets two messages and then
+ // removes the first before it is displayed.
+ $this->drupalGet('system-test/drupal-set-message');
+ $this->assertNoText('First message (removed).');
+ $this->assertText('Second message (not removed).');
+ }
+}
+
+/**
* Tests confirm form destinations.
*/
class ConfirmFormTest extends DrupalWebTestCase {