diff options
-rw-r--r-- | includes/theme.inc | 2 | ||||
-rw-r--r-- | modules/simpletest/tests/system_test.module | 21 | ||||
-rw-r--r-- | modules/system/system.test | 29 |
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 { |